From 302c7ddf86a858cbfd76b1560e754de94714fb8b Mon Sep 17 00:00:00 2001
From: Ruben Rodriguez <ruben@trisquel.info>
Date: Fri, 5 Aug 2016 19:23:18 -0400
Subject: [PATCH] make-linux helper for v4.4.x

---
 helpers/DATA/linux-lts-quantal/check.sh       |    7 -
 helpers/DATA/linux-lts-quantal/deblob-3.5     | 2599 -----
 helpers/DATA/linux-lts-quantal/deblob-check   | 7091 --------------
 helpers/DATA/linux-lts-quantal/megaraid.patch |   31 -
 helpers/DATA/linux-lts-saucy/check.sh         |    7 -
 helpers/DATA/linux-lts-saucy/deblob-3.11      | 2774 ------
 helpers/DATA/linux-lts-saucy/deblob-check     | 7543 ---------------
 .../DATA/linux-lts-saucy/firmware/.gitignore  |    6 -
 .../DATA/linux-lts-saucy/firmware/Makefile    |  251 -
 .../firmware/README.AddingFirmware            |   23 -
 helpers/DATA/linux-lts-saucy/firmware/WHENCE  |   61 -
 .../firmware/adaptec/starfire_rx.bin.ihex     |    1 -
 .../firmware/adaptec/starfire_tx.bin.ihex     |    1 -
 .../linux-lts-saucy/firmware/atmsar11.HEX     |   14 -
 .../linux-lts-saucy/firmware/av7110/Boot.S    |  109 -
 .../firmware/av7110/bootcode.bin.ihex         |   15 -
 .../linux-lts-saucy/firmware/cis/.gitignore   |    1 -
 .../firmware/cpia2/stv0672_vp4.bin.ihex       |   21 -
 .../firmware/dsp56k/bootstrap.asm             |   98 -
 .../firmware/dsp56k/bootstrap.bin.ihex        |   26 -
 .../firmware/edgeport/boot.H16                |   10 -
 .../firmware/edgeport/boot2.H16               |   10 -
 .../firmware/edgeport/down.H16                |   10 -
 .../firmware/edgeport/down2.H16               |   10 -
 .../firmware/edgeport/down3.bin.ihex          |    6 -
 .../DATA/linux-lts-saucy/firmware/ihex2fw.c   |  280 -
 .../firmware/keyspan_pda/keyspan_pda.HEX      |   83 -
 .../firmware/keyspan_pda/keyspan_pda.S        | 1124 ---
 .../firmware/keyspan_pda/xircom_pgs.HEX       |   87 -
 .../firmware/keyspan_pda/xircom_pgs.S         | 1192 ---
 .../linux-lts-saucy/firmware/whiteheat.HEX    |   45 -
 .../firmware/whiteheat_loader.HEX             |   45 -
 .../firmware/whiteheat_loader_debug.HEX       |   45 -
 helpers/DATA/linux-lts-saucy/megaraid.patch   |   31 -
 ...kconfig-build-bits-for-BFQ-v7r7-3.16.patch |  104 -
 ...duce-the-BFQ-v7r7-I-O-sched-for-3.16.patch | 6966 --------------
 ...eue-Merge-EQM-to-BFQ-v7r7-for-3.16.0.patch | 1222 ---
 helpers/DATA/linux-lts-utopic/deblob-3.16     | 2931 ------
 helpers/DATA/linux-lts-utopic/deblob-check    | 7977 ----------------
 helpers/DATA/linux-lts-utopic/deblob-main     |  319 -
 .../DATA/linux-lts-utopic/firmware/.gitignore |    6 -
 .../DATA/linux-lts-utopic/firmware/Makefile   |  251 -
 .../firmware/README.AddingFirmware            |   23 -
 helpers/DATA/linux-lts-utopic/firmware/WHENCE |   61 -
 .../firmware/adaptec/starfire_rx.bin.ihex     |    1 -
 .../firmware/adaptec/starfire_tx.bin.ihex     |    1 -
 .../linux-lts-utopic/firmware/atmsar11.HEX    |   14 -
 .../linux-lts-utopic/firmware/av7110/Boot.S   |  109 -
 .../firmware/av7110/bootcode.bin.ihex         |   15 -
 .../linux-lts-utopic/firmware/cis/.gitignore  |    1 -
 .../firmware/cpia2/stv0672_vp4.bin.ihex       |   21 -
 .../firmware/dsp56k/bootstrap.asm             |   98 -
 .../firmware/dsp56k/bootstrap.bin.ihex        |   26 -
 .../firmware/edgeport/boot.H16                |   10 -
 .../firmware/edgeport/boot2.H16               |   10 -
 .../firmware/edgeport/down.H16                |   10 -
 .../firmware/edgeport/down2.H16               |   10 -
 .../firmware/edgeport/down3.bin.ihex          |    6 -
 .../DATA/linux-lts-utopic/firmware/ihex2fw.c  |  280 -
 .../firmware/keyspan_pda/keyspan_pda.HEX      |   83 -
 .../firmware/keyspan_pda/keyspan_pda.S        | 1124 ---
 .../firmware/keyspan_pda/xircom_pgs.HEX       |   87 -
 .../firmware/keyspan_pda/xircom_pgs.S         | 1192 ---
 .../linux-lts-utopic/firmware/whiteheat.HEX   |   45 -
 .../firmware/whiteheat_loader.HEX             |   45 -
 .../firmware/whiteheat_loader_debug.HEX       |   45 -
 ...onfig-build-bits-for-BFQ-v7r8-3.19.0.patch |  104 -
 ...ce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch | 6952 --------------
 ...eue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch | 1220 ---
 helpers/DATA/linux-lts-vivid/deblob-3.19      | 3007 ------
 helpers/DATA/linux-lts-vivid/deblob-check     | 8246 ----------------
 ...eue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch | 1220 ---
 helpers/DATA/linux-lts-wily/deblob-check      | 8449 -----------------
 helpers/DATA/linux-lts-wily/deblob-main       |  311 -
 helpers/DATA/linux-meta/linux.control         |  165 -
 ...nfig-build-bits-for-BFQ-v7r11-4.4.0.patch} |   49 +-
 ...kconfig-build-bits-for-BFQ-v7r5-3.13.patch |  104 -
 ...e-the-BFQ-v7r11-I-O-sched-for-4.4.0.patch} | 3315 +++----
 ...duce-the-BFQ-v7r5-I-O-sched-for-3.13.patch | 6637 -------------
 ...rly-Queue-Merge-EQM-to-BFQ-v7r11-for.patch | 1101 +++
 ...eue-Merge-EQM-to-BFQ-v7r5-for-3.13.0.patch | 1188 ---
 helpers/DATA/linux/c720-touchpad.patch        |  567 --
 helpers/DATA/linux/deblob-3.13                | 2830 ------
 .../deblob-4.2 => linux/deblob-4.4}           |  215 +-
 helpers/DATA/linux/deblob-check               |  866 +-
 .../{linux-lts-vivid => linux}/deblob-main    |    0
 helpers/DATA/linux/firmware/.gitignore        |    6 -
 helpers/DATA/linux/firmware/Makefile          |  251 -
 .../DATA/linux/firmware/README.AddingFirmware |   23 -
 helpers/DATA/linux/firmware/WHENCE            |   61 -
 .../firmware/adaptec/starfire_rx.bin.ihex     |    1 -
 .../firmware/adaptec/starfire_tx.bin.ihex     |    1 -
 helpers/DATA/linux/firmware/atmsar11.HEX      |   14 -
 helpers/DATA/linux/firmware/av7110/Boot.S     |  109 -
 .../linux/firmware/av7110/bootcode.bin.ihex   |   15 -
 helpers/DATA/linux/firmware/cis/.gitignore    |    1 -
 .../linux/firmware/cpia2/stv0672_vp4.bin.ihex |   21 -
 .../DATA/linux/firmware/dsp56k/bootstrap.asm  |   98 -
 .../linux/firmware/dsp56k/bootstrap.bin.ihex  |   26 -
 helpers/DATA/linux/firmware/edgeport/boot.H16 |   10 -
 .../DATA/linux/firmware/edgeport/boot2.H16    |   10 -
 helpers/DATA/linux/firmware/edgeport/down.H16 |   10 -
 .../DATA/linux/firmware/edgeport/down2.H16    |   10 -
 .../linux/firmware/edgeport/down3.bin.ihex    |    6 -
 helpers/DATA/linux/firmware/ihex2fw.c         |  280 -
 .../firmware/keyspan_pda/keyspan_pda.HEX      |   83 -
 .../linux/firmware/keyspan_pda/keyspan_pda.S  | 1124 ---
 .../linux/firmware/keyspan_pda/xircom_pgs.HEX |   87 -
 .../linux/firmware/keyspan_pda/xircom_pgs.S   | 1192 ---
 helpers/DATA/linux/firmware/whiteheat.HEX     |   45 -
 .../DATA/linux/firmware/whiteheat_loader.HEX  |   45 -
 .../linux/firmware/whiteheat_loader_debug.HEX |   45 -
 .../DATA/linux/silent-accept-firmware.patch   | 1072 +++
 helpers/make-linux                            |   43 +-
 helpers/make-linux-lts-utopic                 |   84 -
 helpers/make-linux-lts-vivid                  |   77 -
 helpers/make-linux-lts-wily                   |   81 -
 helpers/make-linux-meta                       |    6 +-
 helpers/make-linux-meta-lts-utopic            |   33 -
 helpers/make-linux-meta-lts-vivid             |   40 -
 helpers/make-linux-meta-lts-wily              |   40 -
 121 files changed, 4934 insertions(+), 93412 deletions(-)
 delete mode 100644 helpers/DATA/linux-lts-quantal/check.sh
 delete mode 100755 helpers/DATA/linux-lts-quantal/deblob-3.5
 delete mode 100755 helpers/DATA/linux-lts-quantal/deblob-check
 delete mode 100644 helpers/DATA/linux-lts-quantal/megaraid.patch
 delete mode 100644 helpers/DATA/linux-lts-saucy/check.sh
 delete mode 100755 helpers/DATA/linux-lts-saucy/deblob-3.11
 delete mode 100755 helpers/DATA/linux-lts-saucy/deblob-check
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/.gitignore
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/Makefile
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/README.AddingFirmware
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/WHENCE
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_rx.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_tx.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/atmsar11.HEX
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/av7110/Boot.S
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/av7110/bootcode.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/cis/.gitignore
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/cpia2/stv0672_vp4.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.asm
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/edgeport/boot.H16
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/edgeport/boot2.H16
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/edgeport/down.H16
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/edgeport/down2.H16
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/edgeport/down3.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/ihex2fw.c
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.HEX
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.S
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.HEX
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.S
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/whiteheat.HEX
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader.HEX
 delete mode 100644 helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader_debug.HEX
 delete mode 100644 helpers/DATA/linux-lts-saucy/megaraid.patch
 delete mode 100644 helpers/DATA/linux-lts-utopic/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r7-3.16.patch
 delete mode 100644 helpers/DATA/linux-lts-utopic/0002-block-introduce-the-BFQ-v7r7-I-O-sched-for-3.16.patch
 delete mode 100644 helpers/DATA/linux-lts-utopic/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r7-for-3.16.0.patch
 delete mode 100644 helpers/DATA/linux-lts-utopic/deblob-3.16
 delete mode 100644 helpers/DATA/linux-lts-utopic/deblob-check
 delete mode 100644 helpers/DATA/linux-lts-utopic/deblob-main
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/.gitignore
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/Makefile
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/README.AddingFirmware
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/WHENCE
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_rx.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_tx.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/atmsar11.HEX
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/av7110/Boot.S
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/av7110/bootcode.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/cis/.gitignore
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/cpia2/stv0672_vp4.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.asm
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/edgeport/boot.H16
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/edgeport/boot2.H16
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/edgeport/down.H16
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/edgeport/down2.H16
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/edgeport/down3.bin.ihex
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/ihex2fw.c
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.HEX
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.S
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.HEX
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.S
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/whiteheat.HEX
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader.HEX
 delete mode 100644 helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader_debug.HEX
 delete mode 100644 helpers/DATA/linux-lts-vivid/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch
 delete mode 100644 helpers/DATA/linux-lts-vivid/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch
 delete mode 100644 helpers/DATA/linux-lts-vivid/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch
 delete mode 100644 helpers/DATA/linux-lts-vivid/deblob-3.19
 delete mode 100644 helpers/DATA/linux-lts-vivid/deblob-check
 delete mode 100644 helpers/DATA/linux-lts-wily/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch
 delete mode 100644 helpers/DATA/linux-lts-wily/deblob-check
 delete mode 100644 helpers/DATA/linux-lts-wily/deblob-main
 delete mode 100644 helpers/DATA/linux-meta/linux.control
 rename helpers/DATA/{linux-lts-wily/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch => linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.4.0.patch} (73%)
 delete mode 100644 helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r5-3.13.patch
 rename helpers/DATA/{linux-lts-wily/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch => linux/0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.4.0.patch} (74%)
 delete mode 100644 helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r5-I-O-sched-for-3.13.patch
 create mode 100644 helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch
 delete mode 100644 helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r5-for-3.13.0.patch
 delete mode 100644 helpers/DATA/linux/c720-touchpad.patch
 delete mode 100755 helpers/DATA/linux/deblob-3.13
 rename helpers/DATA/{linux-lts-wily/deblob-4.2 => linux/deblob-4.4} (94%)
 mode change 100644 => 100755
 rename helpers/DATA/{linux-lts-vivid => linux}/deblob-main (100%)
 mode change 100644 => 100755
 delete mode 100644 helpers/DATA/linux/firmware/.gitignore
 delete mode 100644 helpers/DATA/linux/firmware/Makefile
 delete mode 100644 helpers/DATA/linux/firmware/README.AddingFirmware
 delete mode 100644 helpers/DATA/linux/firmware/WHENCE
 delete mode 100644 helpers/DATA/linux/firmware/adaptec/starfire_rx.bin.ihex
 delete mode 100644 helpers/DATA/linux/firmware/adaptec/starfire_tx.bin.ihex
 delete mode 100644 helpers/DATA/linux/firmware/atmsar11.HEX
 delete mode 100644 helpers/DATA/linux/firmware/av7110/Boot.S
 delete mode 100644 helpers/DATA/linux/firmware/av7110/bootcode.bin.ihex
 delete mode 100644 helpers/DATA/linux/firmware/cis/.gitignore
 delete mode 100644 helpers/DATA/linux/firmware/cpia2/stv0672_vp4.bin.ihex
 delete mode 100644 helpers/DATA/linux/firmware/dsp56k/bootstrap.asm
 delete mode 100644 helpers/DATA/linux/firmware/dsp56k/bootstrap.bin.ihex
 delete mode 100644 helpers/DATA/linux/firmware/edgeport/boot.H16
 delete mode 100644 helpers/DATA/linux/firmware/edgeport/boot2.H16
 delete mode 100644 helpers/DATA/linux/firmware/edgeport/down.H16
 delete mode 100644 helpers/DATA/linux/firmware/edgeport/down2.H16
 delete mode 100644 helpers/DATA/linux/firmware/edgeport/down3.bin.ihex
 delete mode 100644 helpers/DATA/linux/firmware/ihex2fw.c
 delete mode 100644 helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.HEX
 delete mode 100644 helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.S
 delete mode 100644 helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.HEX
 delete mode 100644 helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.S
 delete mode 100644 helpers/DATA/linux/firmware/whiteheat.HEX
 delete mode 100644 helpers/DATA/linux/firmware/whiteheat_loader.HEX
 delete mode 100644 helpers/DATA/linux/firmware/whiteheat_loader_debug.HEX
 create mode 100644 helpers/DATA/linux/silent-accept-firmware.patch
 delete mode 100644 helpers/make-linux-lts-utopic
 delete mode 100644 helpers/make-linux-lts-vivid
 delete mode 100644 helpers/make-linux-lts-wily
 delete mode 100644 helpers/make-linux-meta-lts-utopic
 delete mode 100644 helpers/make-linux-meta-lts-vivid
 delete mode 100644 helpers/make-linux-meta-lts-wily

diff --git a/helpers/DATA/linux-lts-quantal/check.sh b/helpers/DATA/linux-lts-quantal/check.sh
deleted file mode 100644
index ea1f2c704..000000000
--- a/helpers/DATA/linux-lts-quantal/check.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-files=`find -type f`
-while read -r line
-do
-    ./deblob-check $line
-done <<< "$files"
diff --git a/helpers/DATA/linux-lts-quantal/deblob-3.5 b/helpers/DATA/linux-lts-quantal/deblob-3.5
deleted file mode 100755
index 3d3b9ebbf..000000000
--- a/helpers/DATA/linux-lts-quantal/deblob-3.5
+++ /dev/null
@@ -1,2599 +0,0 @@
-#!/bin/sh
-
-#    Copyright (C) 2008-2012 Alexandre Oliva <lxoliva@fsfla.org>
-#    Copyright (C) 2008 Jeff Moe
-#    Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
-#
-#    This program is part of GNU Linux-libre, a GNU project that
-#    publishes scripts to clean up Linux so as to make it suitable for
-#    use in the GNU Project and in Free System Distributions.
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-
-# deblob - remove non-free blobs from the vanilla linux kernel
-
-# http://www.fsfla.org/svn/fsfla/software/linux-libre
-
-
-# This script, suited for the kernel version named below, in kver,
-# attempts to remove only non-Free Software bits, without removing
-# Free Software that happens to be in the same file.
-
-# Drivers that currently require non-Free firmware are retained, but
-# firmware included in GPLed sources is replaced with /*(DEBLOBBED)*/
-# if the deblob-check script, that knows how to do this, is present.
-# -lxoliva
-
-
-# See also:
-# http://wiki.debian.org/KernelFirmwareLicensing
-# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
-# http://wiki.gnewsense.org/Builder gen-kernel
-
-# Thanks to Brian Brazil @ gnewsense
-
-
-# For each kver release, start extra with an empty string, then count
-# from 1 if changes are needed that require rebuilding the tarball.
-kver=3.5 extra=
-
-case $1 in
---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
-if [ ! -f $check ] ; then
-  if $forced; then
-    die deblob-check script missing, will remove entire files
-  else
-    die deblob-check script missing
-  fi
-  have_check=false
-else
-  have_check=:
-fi
-
-filetest () {
-  if [ ! -f $1 ]; then
-    die $1 does not exist, something is wrong && return 1
-  fi
-}
-
-announce () {
-  echo
-  echo "$@"
-}
-
-clean_file () {
-  #$1 = filename
-  filetest $1 || return
-  rm $1
-  echo $1: removed
-}
-
-check_changed () {
-  #$1 = filename
-  if cmp $1.deblob $1 > /dev/null; then
-    #rm $1.deblob
-    #die $1 did not change, something is wrong && return 1
-    echo "$1 did not change, continuing anyway, take a look at it!!"
-  else
-    mv $1.deblob $1
-  fi
-}
-
-clean_blob () {
-  #$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 && 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
-  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
-  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
-  filetest $1 || return
-  sed "/^config \\($2\\)\$/{p;i\
-	depends on NONFREE
-d;}" $1 > $1.deblob
-  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
-  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
-  filetest $2 || return
-  sed -e "$1" "$2" > "$2".deblob || {
-    die $2: failed: ${3-applied sed script $1} && return 1; }
-  check_changed $2 && echo $2: ${3-applied sed script $1}
-}
-
-reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g
-' "$1" 'disabled non-Free firmware-loading machinery'
-}
-
-maybe_reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request_firmware\(_nowait\)\?,maybe_reject_firmware\1,g
-' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
-}
-
-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
-  undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
-    "disabled non-Free firmware" "$@"
-}
-
-# First, check that files that contain firmwares and their
-# corresponding sources are present.
-
-for f in \
-  drivers/char/ser_a2232fw.h \
-    drivers/char/ser_a2232fw.ax \
-  drivers/gpu/drm/nouveau/nva3_copy.fuc.h \
-    drivers/gpu/drm/nouveau/nva3_copy.fuc \
-  drivers/gpu/drm/nouveau/nvc0_copy.fuc.h \
-    drivers/gpu/drm/nouveau/nva3_copy.fuc \
-  drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h \
-    drivers/gpu/drm/nouveau/nvc0_grgpc.fuc \
-  drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h \
-    drivers/gpu/drm/nouveau/nvc0_grhub.fuc \
-  drivers/net/ixp2000/ixp2400_rx.ucode \
-    drivers/net/ixp2000/ixp2400_rx.uc \
-  drivers/net/ixp2000/ixp2400_tx.ucode \
-    drivers/net/ixp2000/ixp2400_rx.uc \
-  drivers/net/wan/wanxlfw.inc_shipped \
-    drivers/net/wan/wanxlfw.S \
-  drivers/net/wireless/atmel.c \
-    drivers/net/wireless/atmel.c \
-  drivers/scsi/53c700_d.h_shipped \
-    drivers/scsi/53c700.scr \
-  drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic79xx.seq \
-  drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic7xxx.seq \
-  drivers/scsi/aic7xxx_old/aic7xxx_seq.c \
-    drivers/scsi/aic7xxx_old/aic7xxx.seq \
-  drivers/scsi/53c7xx_d.h_shipped \
-    drivers/scsi/53c7xx.scr \
-  drivers/scsi/sym53c8xx_2/sym_fw1.h \
-    drivers/scsi/sym53c8xx_2/sym_fw1.h \
-  drivers/scsi/sym53c8xx_2/sym_fw2.h \
-    drivers/scsi/sym53c8xx_2/sym_fw2.h \
-  firmware/dsp56k/bootstrap.bin.ihex \
-    firmware/dsp56k/bootstrap.asm \
-  firmware/keyspan_pda/keyspan_pda.HEX \
-    firmware/keyspan_pda/keyspan_pda.S \
-  firmware/keyspan_pda/xircom_pgs.HEX \
-    firmware/keyspan_pda/xircom_pgs.S \
-  sound/pci/cs46xx/imgs/cwcdma.h \
-    sound/pci/cs46xx/imgs/cwcdma.asp \
-  firmware/isci/isci_firmware.bin.ihex \
-    drivers/scsi/isci/firmware/create_fw.c \
-; do
-  if test ! $f; then
-    die $f is not present, something is amiss && return
-  fi
-done
-
-# Identify the tarball.
-grep -q 'EXTRAVERSION.*-gnu' Makefile ||
-clean_sed "s,^EXTRAVERSION.*,&-gnu$extra,
-" Makefile 'added -gnu to EXTRAVERSION'
-
-grep -q Linux-libre README ||
-clean_sed '
-1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>,
-2,5 s,Linux version [0-9.]*,GNU Linux-libre,
-1,20 s,\(operating system \)\?Unix,Unix kernel,
-/WHAT IS LINUX/i\
-WHAT IS GNU Linux-libre?\
-\
-  GNU Linux-libre is a Free version of the kernel Linux (see below),\
-  suitable for use with the GNU Operating System in 100% Free\
-  GNU/Linux-libre System Distributions.\
-  http://www.gnu.org/distros/\
-\
-  It removes non-Free components from Linux, that are disguised as\
-  source code or distributed in separate files.  It also disables\
-  run-time requests for non-Free components, shipped separately or as\
-  part of Linux, and documentation pointing to them, so as to avoid\
-  (Free-)baiting users into the trap of non-Free Software.\
-  http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\
-\
-  Linux-libre started within the gNewSense GNU/Linux distribution.\
-  It was later adopted by Jeff Moe, who coined its name, and in 2008\
-  it became a project maintained by FSF Latin America.  In 2012, it\
-  became part of the GNU Project.\
-\
-  The GNU Linux-libre project takes a minimal-changes approach to\
-  cleaning up Linux, making no effort to substitute components that\
-  need to be removed with functionally equivalent Free ones.\
-  Nevertheless, we encourage and support efforts towards doing so.\
-  http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\
-\
-  Our mascot is Freedo, a light-blue penguin that has just come out\
-  of the shower.  Although we like penguins, GNU is a much greater\
-  contribution to the entire system, so its mascot deserves more\
-  promotion.  See our web page for their images.\
-  http://linux-libre.fsfla.org/\
-
-' README 'added blurb about GNU Linux-libre'
-
-# Add reject_firmware and maybe_reject_firmware
-grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_FIRMWARE_H\
-#define _LINUX_LIBRE_FIRMWARE_H\
-\
-#include <linux/device.h>\
-\
-#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\
-\
-static inline int\
-report_missing_free_firmware(const char *name, const char *what)\
-{\
-	printk(KERN_ERR "%s: Missing Free %s\\n", name,\
-	       what ? what : "firmware");\
-	return -EINVAL;\
-}\
-static inline int\
-reject_firmware(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware(const struct firmware **fw,\
-		      const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_firmware(fw, name, device);\
-}\
-static inline void\
-discard_rejected_firmware(const struct firmware *fw, void *context)\
-{\
-	release_firmware(fw);\
-}\
-static inline int\
-reject_firmware_nowait(struct module *module, int uevent,\
-		       const char *name, struct device *device,\
-		       gfp_t gfp, void *context,\
-		       void (*cont)(const struct firmware *fw,\
-				    void *context))\
-{\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\
-					 device, gfp, NULL,\
-					 discard_rejected_firmware);\
-	if (retval)\
-		return retval;\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware_nowait(struct module *module, int uevent,\
-			     const char *name, struct device *device,\
-			     gfp_t gfp, void *context,\
-			     void (*cont)(const struct firmware *fw,\
-					  void *context))\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware_nowait(module, uevent, name,\
-					      device, gfp, context, cont);\
-	else\
-		return request_firmware_nowait(module, uevent, name,\
-					       device, gfp, context, cont);\
-}\
-\
-#endif /* _LINUX_LIBRE_FIRMWARE_H */\
-' include/linux/firmware.h 'added non-Free firmware notification support'
-
-########
-# Arch #
-########
-
-# x86
-
-announce MICROCODE_AMD - "AMD microcode patch loading support"
-reject_firmware arch/x86/kernel/microcode_amd.c
-clean_blob arch/x86/kernel/microcode_amd.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD'
-clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/Makefile
-
-announce MICROCODE_INTEL - "Intel microcode patch loading support"
-reject_firmware arch/x86/kernel/microcode_intel.c
-clean_blob arch/x86/kernel/microcode_intel.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL'
-clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/Makefile
-
-# arm
-
-announce IXP4XX_NPE - "IXP4xx Network Processor Engine support"
-reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob Documentation/arm/IXP4xx
-
-announce ARCH_NETX - "Hilscher NetX based"
-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_blob drivers/net/ethernet/netx-eth.c
-clean_kconfig arch/arm/Kconfig 'ARCH_NETX'
-clean_mk CONFIG_ARCH_NETX arch/arm/Makefile
-
-#######
-# ATM #
-#######
-
-announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server"
-reject_firmware drivers/atm/ambassador.c
-clean_blob drivers/atm/ambassador.c
-clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw
-clean_kconfig drivers/atm/Kconfig 'ATM_AMBASSADOR'
-clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile
-
-announce ATM_FORE200E - "FORE Systems 200E-series"
-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 ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver"
-reject_firmware drivers/atm/solos-pci.c
-clean_blob drivers/atm/solos-pci.c
-clean_kconfig drivers/atm/Kconfig 'ATM_SOLOS'
-clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile
-
-########
-# tty #
-########
-
-announce COMPUTONE - "Computone IntelliPort Plus serial"
-drop_fw_file firmware/intelliport2.bin.ihex firmware/intelliport2.bin
-
-announce CYCLADES - "Cyclades async mux support"
-reject_firmware drivers/tty/cyclades.c
-clean_blob drivers/tty/cyclades.c
-clean_kconfig drivers/tty/Kconfig 'CYCLADES'
-clean_mk CONFIG_CYCLADES drivers/tty/Makefile
-
-announce ISI - "Multi-Tech multiport card support"
-reject_firmware drivers/tty/isicom.c
-clean_blob drivers/tty/isicom.c
-clean_kconfig drivers/tty/Kconfig 'ISI'
-clean_mk CONFIG_ISI drivers/tty/Makefile
-
-announce MOXA_INTELLIO - "Moxa Intellio support"
-reject_firmware drivers/tty/moxa.c
-clean_blob drivers/tty/moxa.c
-clean_kconfig drivers/tty/Kconfig 'MOXA_INTELLIO'
-clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile
-
-# gpu drm
-
-announce DRM_NOUVEAU - "Nouveau (nVidia) cards"
-reject_firmware drivers/gpu/drm/nouveau/nvc0_graph.c
-clean_blob drivers/gpu/drm/nouveau/nvc0_graph.c
-reject_firmware drivers/gpu/drm/nouveau/nve0_graph.c
-clean_blob drivers/gpu/drm/nouveau/nve0_graph.c
-clean_kconfig drivers/gpu/drm/nouveau/Kconfig 'DRM_NOUVEAU'
-clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile
-
-announce DRM_MGA - "Matrox g200/g400"
-drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw
-drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw
-reject_firmware drivers/gpu/drm/mga/mga_warp.c
-clean_blob drivers/gpu/drm/mga/mga_warp.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA'
-clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
-
-announce DRM_R128 - "ATI Rage 128"
-drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin
-reject_firmware drivers/gpu/drm/r128/r128_cce.c
-clean_blob drivers/gpu/drm/r128/r128_cce.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128'
-clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile
-
-announce DRM_RADEON - "ATI Radeon"
-drop_fw_file firmware/radeon/R100_cp.bin.ihex firmware/radeon/R100_cp.bin
-drop_fw_file firmware/radeon/R200_cp.bin.ihex firmware/radeon/R200_cp.bin
-drop_fw_file firmware/radeon/R300_cp.bin.ihex firmware/radeon/R300_cp.bin
-drop_fw_file firmware/radeon/R420_cp.bin.ihex firmware/radeon/R420_cp.bin
-drop_fw_file firmware/radeon/R520_cp.bin.ihex firmware/radeon/R520_cp.bin
-drop_fw_file firmware/radeon/R600_me.bin.ihex firmware/radeon/R600_me.bin
-drop_fw_file firmware/radeon/R600_pfp.bin.ihex firmware/radeon/R600_pfp.bin
-drop_fw_file firmware/radeon/RS600_cp.bin.ihex firmware/radeon/RS600_cp.bin
-drop_fw_file firmware/radeon/RS690_cp.bin.ihex firmware/radeon/RS690_cp.bin
-drop_fw_file firmware/radeon/RS780_me.bin.ihex firmware/radeon/RS780_me.bin
-drop_fw_file firmware/radeon/RS780_pfp.bin.ihex firmware/radeon/RS780_pfp.bin
-drop_fw_file firmware/radeon/RV610_me.bin.ihex firmware/radeon/RV610_me.bin
-drop_fw_file firmware/radeon/RV610_pfp.bin.ihex firmware/radeon/RV610_pfp.bin
-drop_fw_file firmware/radeon/RV620_me.bin.ihex firmware/radeon/RV620_me.bin
-drop_fw_file firmware/radeon/RV620_pfp.bin.ihex firmware/radeon/RV620_pfp.bin
-drop_fw_file firmware/radeon/RV630_me.bin.ihex firmware/radeon/RV630_me.bin
-drop_fw_file firmware/radeon/RV630_pfp.bin.ihex firmware/radeon/RV630_pfp.bin
-drop_fw_file firmware/radeon/RV635_me.bin.ihex firmware/radeon/RV635_me.bin
-drop_fw_file firmware/radeon/RV635_pfp.bin.ihex firmware/radeon/RV635_pfp.bin
-drop_fw_file firmware/radeon/RV670_me.bin.ihex firmware/radeon/RV670_me.bin
-drop_fw_file firmware/radeon/RV670_pfp.bin.ihex firmware/radeon/RV670_pfp.bin
-drop_fw_file firmware/radeon/RV710_me.bin.ihex firmware/radeon/RV710_me.bin
-drop_fw_file firmware/radeon/RV710_pfp.bin.ihex firmware/radeon/RV710_pfp.bin
-drop_fw_file firmware/radeon/RV730_me.bin.ihex firmware/radeon/RV730_me.bin
-drop_fw_file firmware/radeon/RV730_pfp.bin.ihex firmware/radeon/RV730_pfp.bin
-drop_fw_file firmware/radeon/RV770_me.bin.ihex firmware/radeon/RV770_me.bin
-drop_fw_file firmware/radeon/RV770_pfp.bin.ihex firmware/radeon/RV770_pfp.bin
-reject_firmware drivers/gpu/drm/radeon/radeon_cp.c
-clean_blob drivers/gpu/drm/radeon/radeon_cp.c
-reject_firmware drivers/gpu/drm/radeon/r100.c
-clean_blob drivers/gpu/drm/radeon/r100.c
-reject_firmware drivers/gpu/drm/radeon/r600.c
-clean_blob drivers/gpu/drm/radeon/r600.c
-reject_firmware drivers/gpu/drm/radeon/r600_cp.c
-clean_blob drivers/gpu/drm/radeon/r600_cp.c
-reject_firmware drivers/gpu/drm/radeon/ni.c
-clean_blob drivers/gpu/drm/radeon/ni.c
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON'
-clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile
-
-drop_fw_file firmware/radeon/ARUBA_me.bin.ihex firmware/radeon/ARUBA_me.bin
-drop_fw_file firmware/radeon/ARUBA_pfp.bin.ihex firmware/radeon/ARUBA_pfp.bin
-drop_fw_file firmware/radeon/ARUBA_rlc.bin.ihex firmware/radeon/ARUBA_rlc.bin
-drop_fw_file firmware/radeon/PITCAIRN_ce.bin.ihex firmware/radeon/PITCAIRN_ce.bin
-drop_fw_file firmware/radeon/PITCAIRN_mc.bin.ihex firmware/radeon/PITCAIRN_mc.bin
-drop_fw_file firmware/radeon/PITCAIRN_me.bin.ihex firmware/radeon/PITCAIRN_me.bin
-drop_fw_file firmware/radeon/PITCAIRN_pfp.bin.ihex firmware/radeon/PITCAIRN_pfp.bin
-drop_fw_file firmware/radeon/PITCAIRN_rlc.bin.ihex firmware/radeon/PITCAIRN_rlc.bin
-drop_fw_file firmware/radeon/TAHITI_ce.bin.ihex firmware/radeon/TAHITI_ce.bin
-drop_fw_file firmware/radeon/TAHITI_mc.bin.ihex firmware/radeon/TAHITI_mc.bin
-drop_fw_file firmware/radeon/TAHITI_me.bin.ihex firmware/radeon/TAHITI_me.bin
-drop_fw_file firmware/radeon/TAHITI_pfp.bin.ihex firmware/radeon/TAHITI_pfp.bin
-drop_fw_file firmware/radeon/TAHITI_rlc.bin.ihex firmware/radeon/TAHITI_rlc.bin
-drop_fw_file firmware/radeon/VERDE_ce.bin.ihex firmware/radeon/VERDE_ce.bin
-drop_fw_file firmware/radeon/VERDE_mc.bin.ihex firmware/radeon/VERDE_mc.bin
-drop_fw_file firmware/radeon/VERDE_me.bin.ihex firmware/radeon/VERDE_me.bin
-drop_fw_file firmware/radeon/VERDE_pfp.bin.ihex firmware/radeon/VERDE_pfp.bin
-drop_fw_file firmware/radeon/VERDE_rlc.bin.ihex firmware/radeon/VERDE_rlc.bin
-
-#######
-# dma #
-#######
-
-announce IMX_SDMA - "i.MX SDMA support"
-reject_firmware drivers/dma/imx-sdma.c
-clean_blob arch/arm/mach-imx/mm-imx25.c
-clean_blob arch/arm/mach-imx/mm-imx3.c
-clean_blob arch/arm/mach-imx/mm-imx5.c
-clean_blob arch/arm/boot/dts/imx51-babbage.dts
-clean_blob arch/arm/boot/dts/imx53-ard.dts
-clean_blob arch/arm/boot/dts/imx53-evk.dts
-clean_blob arch/arm/boot/dts/imx53-qsb.dts
-clean_blob arch/arm/boot/dts/imx53-smd.dts
-clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
-clean_kconfig drivers/dma/Kconfig 'IMX_SDMA'
-clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile
-
-#########
-# Media #
-#########
-
-# media/tuner
-
-announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners"
-undefault_firmware 'XC\(2028\|3028L\)' \
-  drivers/media/common/tuners/tuner-xc2028.h \
-  drivers/media/video/saa7134/saa7134-cards.c \
-  drivers/media/video/ivtv/ivtv-driver.c \
-  drivers/media/video/cx18/cx18-driver.c \
-  drivers/media/video/cx18/cx18-dvb.c \
-  drivers/media/video/cx23885/cx23885-dvb.c \
-  drivers/media/video/cx23885/cx23885-video.c \
-  drivers/media/video/cx88/cx88-dvb.c \
-  drivers/media/video/cx88/cx88-cards.c \
-  drivers/media/video/em28xx/em28xx-cards.c \
-  drivers/media/dvb/dvb-usb/dib0700_devices.c \
-  drivers/media/dvb/dvb-usb/cxusb.c
-reject_firmware drivers/media/common/tuners/tuner-xc2028.c
-clean_kconfig drivers/media/common/tuners/Kconfig 'MEDIA_TUNER_XC2028'
-clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/common/tuners/Makefile
-
-announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards"
-clean_blob drivers/media/video/tm6000/tm6000-cards.c
-clean_kconfig drivers/media/video/tm6000/Kconfig 'VIDEO_TM6000_DVB'
-clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/video/tm6000/Makefile
-
-announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner"
-undefault_firmware 'XC4000' drivers/media/common/tuners/xc4000.c
-maybe_reject_firmware drivers/media/common/tuners/xc4000.c
-clean_kconfig drivers/media/common/tuners/Kconfig 'MEDIA_TUNER_XC4000'
-clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/common/tuners/Makefile
-
-announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner"
-undefault_firmware 'XC5000' \
-  drivers/media/video/cx231xx/cx231xx-cards.c
-reject_firmware drivers/media/common/tuners/xc5000.c
-clean_blob drivers/media/common/tuners/xc5000.c
-clean_kconfig drivers/media/common/tuners/Kconfig 'MEDIA_TUNER_XC5000'
-clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/common/tuners/Makefile
-
-announce DVB_USB - "Support for various USB DVB devices"
-reject_firmware drivers/media/dvb/dvb-usb/dvb-usb-firmware.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB'
-clean_mk CONFIG_DVB_USB drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
-reject_firmware drivers/media/dvb/b2c2/flexcop-fe-tuner.c
-
-announce DVB_BT8XX - "BT8xx based PCI cards"
-reject_firmware drivers/media/dvb/bt8xx/dvb-bt8xx.c
-
-announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)"
-clean_blob drivers/media/dvb/dvb-usb/a800.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_A800'
-clean_mk CONFIG_DVB_USB_A800 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support"
-clean_file drivers/media/dvb/dvb-usb/af9005-script.h
-clean_sed '
-s,^	deb_info("load init script\\n");$,	{\n		err("Missing Free init script\\n");\n		return scriptlen = ret = -EINVAL;\n		,;
-' drivers/media/dvb/dvb-usb/af9005-fe.c 'report missing Free init script'
-clean_blob drivers/media/dvb/dvb-usb/af9005-fe.c
-clean_blob drivers/media/dvb/dvb-usb/af9005.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AF9005'
-clean_mk CONFIG_DVB_USB_AF9005 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/af9015.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AF9015'
-clean_mk CONFIG_DVB_USB_AF9015 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/af9035.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AF9035'
-clean_mk CONFIG_DVB_USB_AF9035 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/az6007.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AZ6007'
-clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support"
-clean_blob drivers/media/dvb/dvb-usb/az6027.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_AZ6027'
-clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support"
-clean_blob drivers/media/dvb/dvb-usb/cxusb.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_CXUSB'
-clean_mk CONFIG_DVB_USB_CXUSB drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices"
-reject_firmware drivers/media/dvb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/dvb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/dvb/dvb-usb/dib0700_core.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIB0700'
-clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)"
-clean_blob drivers/media/dvb/dvb-usb/dibusb-mb.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB'
-clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)"
-clean_blob drivers/media/dvb/dvb-usb/dibusb-mc.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC'
-clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/digitv.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DIGITV'
-clean_mk CONFIG_DVB_USB_DIGITV drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)"
-clean_blob drivers/media/dvb/dvb-usb/dtt200u.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DTT200U'
-clean_mk CONFIG_DVB_USB_DTT200U drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support"
-reject_firmware drivers/media/dvb/dvb-usb/dw2102.c
-clean_blob drivers/media/dvb/dvb-usb/dw2102.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_DW2102'
-clean_mk CONFIG_DVB_USB_DW2102 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/ec168.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_EC168'
-clean_mk CONFIG_DVB_USB_EC168 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support"
-reject_firmware drivers/media/dvb/dvb-usb/gp8psk.c
-clean_blob drivers/media/dvb/dvb-usb/gp8psk.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_GP8PSK'
-clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_IT913X - "it913x driver"
-clean_blob drivers/media/dvb/dvb-usb/it913x.c
-clean_file Documentation/dvb/it9137.txt
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_IT913X'
-clean_mk CONFIG_DVB_USB_IT913X drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support"
-reject_firmware drivers/media/dvb/dvb-usb/lmedm04.c
-clean_blob drivers/media/dvb/dvb-usb/lmedm04.c
-clean_file Documentation/dvb/lmedm04.txt
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_LME2510'
-clean_mk CONFIG_DVB_USB_LME2510 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
-
-announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/nova-t-usb2.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_NOVA_T_USB2'
-clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver"
-reject_firmware drivers/media/dvb/dvb-usb/opera1.c
-clean_blob drivers/media/dvb/dvb-usb/opera1.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_OPERA1'
-clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/technisat-usb2.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_TECHNISAT_USB2'
-clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/ttusb2.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_TTUSB2'
-clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/umt-010.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_UMT_010'
-clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/vp702x.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_VP702X'
-clean_mk CONFIG_DVB_USB_VP702X drivers/media/dvb/dvb-usb/Makefile
-
-announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support"
-clean_blob drivers/media/dvb/dvb-usb/vp7045.c
-clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_VP7045'
-clean_mk CONFIG_DVB_USB_VP7045 drivers/media/dvb/dvb-usb/Makefile
-
-# dvb/frontends
-
-announce DVB_AF9013 - "Afatech AF9013 demodulator"
-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_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_AF9013'
-clean_mk CONFIG_DVB_AF9013 drivers/media/dvb/frontends/Makefile
-
-announce DVB_BCM3510 - "Broadcom BCM3510"
-undefault_firmware 'BCM3510' drivers/media/dvb/frontends/bcm3510.c
-reject_firmware drivers/media/dvb/frontends/bcm3510.c
-reject_firmware drivers/media/dvb/frontends/bcm3510.h
-clean_sed '
-/You.ll need a firmware/,/dvb-fe-bcm/d;
-' drivers/media/dvb/frontends/bcm3510.c \
-  "removed non-Free firmware notes"
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_BCM3510'
-clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb/frontends/Makefile
-
-announce DVB_DS3000 - "Montage Tehnology DS3000 based"
-undefault_firmware 'DS3000' \
-  drivers/media/dvb/frontends/ds3000.c
-reject_firmware drivers/media/dvb/frontends/ds3000.c
-clean_blob drivers/media/dvb/frontends/ds3000.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_DS3000'
-clean_mk CONFIG_DVB_DS3000 drivers/media/dvb/frontends/Makefile
-
-announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
-reject_firmware drivers/media/dvb/frontends/lgs8gxx.c
-clean_blob drivers/media/dvb/frontends/lgs8gxx.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_LGS8GXX'
-clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb/frontends/Makefile
-
-announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based"
-undefault_firmware 'NXT200[24]' drivers/media/dvb/frontends/nxt200x.c
-reject_firmware drivers/media/dvb/frontends/nxt200x.c
-clean_blob drivers/media/dvb/frontends/nxt200x.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_NXT200X'
-clean_mk CONFIG_DVB_NXT200X drivers/media/dvb/frontends/Makefile
-
-announce DVB_OR51132 - "Oren OR51132 based"
-reject_firmware drivers/media/dvb/frontends/or51132.c
-clean_blob drivers/media/dvb/frontends/or51132.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_OR51132'
-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_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_OR51211'
-clean_mk CONFIG_DVB_OR51211 drivers/media/dvb/frontends/Makefile
-
-announce DVB_SP8870 - "Spase sp8870"
-undefault_firmware 'SP8870' drivers/media/dvb/frontends/sp8870.c
-reject_firmware drivers/media/dvb/frontends/sp8870.c
-reject_firmware drivers/media/dvb/frontends/sp8870.h
-clean_blob drivers/media/dvb/frontends/sp8870.c
-clean_kconfig drivers/media/dvb/frontends 'DVB_SP8870'
-clean_mk CONFIG_DVB_SP8870 drivers/media/dvb/frontends/Makefile
-
-announce DVB_CX24116 - "Conexant CX24116 based"
-undefault_firmware CX24116 drivers/media/dvb/frontends/cx24116.c
-reject_firmware drivers/media/dvb/frontends/cx24116.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_CX24116'
-clean_mk CONFIG_DVB_CX24116 drivers/media/dvb/frontends/Makefile
-
-announce DVB_SP887X - "Spase sp887x based"
-undefault_firmware 'SP887X' drivers/media/dvb/frontends/sp887x.c
-reject_firmware drivers/media/dvb/frontends/sp887x.c
-reject_firmware drivers/media/dvb/frontends/sp887x.h
-clean_blob drivers/media/dvb/frontends/sp887x.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_SP887X'
-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'
-clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb/frontends/Makefile
-
-announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H"
-undefault_firmware 'TDA1004[56]' drivers/media/dvb/frontends/tda1004x.c
-reject_firmware drivers/media/dvb/frontends/tda1004x.c
-reject_firmware drivers/media/dvb/frontends/tda1004x.h
-clean_blob drivers/media/dvb/frontends/tda1004x.c
-clean_kconfig drivers/media/dvb/frontends 'DVB_TDA1004X'
-clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb/frontends/Makefile
-
-announce DVB_TDA10071 - "NXP TDA10071"
-undefault_firmware 'TDA10071' drivers/media/dvb/frontends/tda10071_priv.h
-undefault_firmware 'TDA10071' drivers/media/dvb/frontends/tda10071.c
-reject_firmware drivers/media/dvb/frontends/tda10071.c
-clean_kconfig drivers/media/dvb/frontends 'DVB_TDA10071'
-clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb/frontends/Makefile
-
-# dvb
-
-announce DVB_AS102 - "Abilis AS102 DVB receiver"
-reject_firmware drivers/staging/media/as102/as102_fw.c
-clean_blob drivers/staging/media/as102/as102_fw.c
-clean_kconfig drivers/staging/media/as102/Kconfig 'DVB_AS102'
-clean_mk CONFIG_DVB_AS102 drivers/staging/media/as102/Makefile
-
-announce DVB_AV7110 - "AV7110 cards"
-reject_firmware drivers/media/dvb/ttpci/av7110.c
-clean_blob drivers/media/dvb/ttpci/av7110.c
-clean_kconfig drivers/media/dvb/ttpci/Kconfig 'DVB_AV7110'
-clean_mk CONFIG_DVB_AV7110 drivers/media/dvb/ttpci/Makefile
-drop_fw_file firmware/av7110/bootcode.bin.ihex firmware/av7110/bootcode.bin
-
-announce DVB_BUDGET - "Budget cards"
-reject_firmware drivers/media/dvb/ttpci/budget.c
-reject_firmware drivers/media/dvb/frontends/tdhd1.h
-
-announce DVB_BUDGET_AV - "Budget cards with analog video inputs"
-reject_firmware drivers/media/dvb/ttpci/budget-av.c
-
-announce DVB_BUDGET_CI - "Budget cards with onboard CI connector"
-reject_firmware drivers/media/dvb/ttpci/budget-ci.c
-
-announce DVB_DRXD - "Micronas DRXD driver"
-reject_firmware drivers/media/dvb/frontends/drxd_hard.c
-clean_blob drivers/media/dvb/frontends/drxd_hard.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_DRXD'
-clean_mk CONFIG_DVB_DRXD drivers/media/dvb/frontends/Makefile
-
-announce DVB_DRXK - "Micronas DRXK based"
-reject_firmware drivers/media/dvb/frontends/drxk_hard.c
-clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_DRXK'
-clean_mk CONFIG_DVB_DRXK drivers/media/dvb/frontends/Makefile
-
-announce DVB_NGENE - "Micronas nGene support"
-reject_firmware drivers/media/dvb/ngene/ngene-core.c
-clean_blob drivers/media/dvb/ngene/ngene-core.c
-clean_kconfig drivers/media/dvb/ngene/Kconfig 'DVB_NGENE'
-clean_mk CONFIG_DVB_NGENE drivers/media/dvb/ngene/Makefile
-
-announce DVB_PLUTO2 - "Pluto2 cards"
-reject_firmware drivers/media/dvb/pluto2/pluto2.c
-
-announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver"
-reject_firmware drivers/media/dvb/siano/smscoreapi.c
-clean_blob drivers/media/dvb/siano/smscoreapi.c
-clean_blob drivers/media/dvb/siano/sms-cards.c
-clean_kconfig drivers/media/dvb/siano/Kconfig 'SMS_SIANO_MDTV'
-clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/dvb/siano/Makefile
-
-announce SMS_USB_DRV - "Siano's USB interface support"
-reject_firmware drivers/media/dvb/siano/smsusb.c
-clean_blob drivers/media/dvb/siano/smsusb.c
-clean_kconfig drivers/media/dvb/siano/Kconfig 'SMS_USB_DRV'
-clean_mk CONFIG_SMS_USB_DRV drivers/media/dvb/siano/Makefile
-
-announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices"
-drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin
-reject_firmware drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-clean_blob drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-clean_kconfig drivers/media/dvb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET'
-clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/dvb/ttusb-budget/Makefile
-
-announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices"
-reject_firmware drivers/media/dvb/ttusb-dec/ttusb_dec.c
-clean_blob drivers/media/dvb/ttusb-dec/ttusb_dec.c
-clean_blob Documentation/dvb/ttusb-dec.txt
-clean_kconfig drivers/media/dvb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC'
-clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/dvb/ttusb-dec/Makefile
-
-# video
-
-announce VIDEO_BT848 - "BT848 Video For Linux"
-reject_firmware drivers/media/video/bt8xx/bttv-cards.c
-clean_blob drivers/media/video/bt8xx/bttv-cards.c
-clean_blob Documentation/video4linux/bttv/README
-clean_kconfig drivers/media/video/bt8xx/Kconfig 'VIDEO_BT848'
-clean_mk CONFIG_VIDEO_BT848 drivers/media/video/bt8xx/Makefile
-
-announce VIDEO_CPIA2 - "CPiA2 Video For Linux"
-clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin
-reject_firmware drivers/media/video/cpia2/cpia2_core.c
-clean_blob drivers/media/video/cpia2/cpia2_core.c
-clean_kconfig drivers/media/video/cpia2/Kconfig 'VIDEO_CPIA2'
-clean_mk CONFIG_VIDEO_CPIA2 drivers/media/video/cpia2/Makefile
-
-announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support"
-reject_firmware drivers/media/video/cx18/cx18-av-firmware.c
-reject_firmware drivers/media/video/cx18/cx18-dvb.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-dvb.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
-
-announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support"
-reject_firmware drivers/media/video/cx231xx/cx231xx-417.c
-clean_blob drivers/media/video/cx231xx/cx231xx-417.c
-clean_kconfig drivers/media/video/cx231xx/Kconfig 'VIDEO_CX231XX'
-clean_mk CONFIG_VIDEO_CX231XX drivers/media/video/cx231xx/Makefile
-
-announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support"
-reject_firmware drivers/media/video/cx23885/cx23885-417.c
-clean_blob drivers/media/video/cx23885/cx23885-417.c
-reject_firmware drivers/media/video/cx23885/cx23885-cards.c
-clean_blob drivers/media/video/cx23885/cx23885-cards.c
-clean_kconfig drivers/media/video/cx23885/Kconfig 'VIDEO_CX23885'
-clean_mk CONFIG_VIDEO_CX23885 drivers/media/video/cx23885/Makefile
-
-announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders"
-reject_firmware drivers/media/video/cx25840/cx25840-firmware.c
-clean_blob drivers/media/video/cx25840/cx25840-firmware.c
-clean_kconfig drivers/media/video/cx25840/Kconfig 'VIDEO_CX25840'
-clean_mk CONFIG_VIDEO_CX25840 drivers/media/video/cx25840/Makefile
-
-announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)"
-reject_firmware drivers/media/video/cx88/cx88-blackbird.c
-clean_kconfig drivers/media/video/cx88/Kconfig 'VIDEO_CX88_BLACKBIRD'
-clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/video/cx88/Makefile
-
-announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards"
-clean_blob drivers/media/video/em28xx/em28xx-dvb.c
-clean_kconfig drivers/media/video/em28xx/Kconfig 'VIDEO_EM28XX_DVB'
-clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/video/em28xx/Makefile
-
-announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support"
-reject_firmware drivers/media/video/ivtv/ivtv-firmware.c
-clean_blob drivers/media/video/ivtv/ivtv-firmware.c
-clean_kconfig drivers/media/video/ivtv/Kconfig 'VIDEO_IVTV'
-clean_mk CONFIG_VIDEO_IVTV drivers/media/video/ivtv/Makefile
-
-announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support"
-reject_firmware drivers/media/video/pvrusb2/pvrusb2-hdw.c
-clean_blob drivers/media/video/pvrusb2/pvrusb2-devattr.c
-clean_kconfig drivers/media/video/pvrusb2/Kconfig 'VIDEO_PVRUSB2'
-clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/video/pvrusb2/Makefile
-
-announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above"
-clean_blob include/media/cx2341x.h
-
-announce VIDEO_GO7007 - "Go 7007 support"
-reject_firmware drivers/staging/media/go7007/go7007-driver.c
-clean_blob drivers/staging/media/go7007/go7007-driver.c
-reject_firmware drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/go7007-usb.c
-clean_blob drivers/staging/media/go7007/saa7134-go7007.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007'
-clean_mk CONFIG_VIDEO_GO7007 drivers/staging/media/go7007/Makefile
-
-announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support"
-reject_firmware drivers/staging/media/go7007/s2250-loader.c
-clean_blob drivers/staging/media/go7007/s2250-loader.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007_USB_S2250_BOARD'
-clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/staging/media/go7007/Makefile
-
-announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards"
-reject_firmware drivers/media/video/saa7134/saa7134-dvb.c
-clean_kconfig drivers/media/video/saa7134/Kconfig 'VIDEO_SAA7134_DVB'
-clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/video/saa7134/Makefile
-
-announce VIDEO_SAA7164 - "NXP SAA7164 support"
-reject_firmware drivers/media/video/saa7164/saa7164-fw.c
-clean_blob drivers/media/video/saa7164/saa7164-fw.c
-clean_kconfig drivers/media/video/saa7164/Kconfig 'VIDEO_SAA7164'
-clean_mk CONFIG_VIDEO_SAA7164 drivers/media/video/saa7164/Makefile
-
-announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support"
-reject_firmware drivers/media/video/tlg2300/pd-main.c
-clean_blob drivers/media/video/tlg2300/pd-main.c
-clean_kconfig drivers/media/video/tlg2300/Kconfig 'VIDEO_TLG2300'
-clean_mk CONFIG_VIDEO_TLG2300 drivers/media/video/tlg2300/Makefile
-
-announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec"
-reject_firmware drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-clean_blob drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-clean_kconfig drivers/media/video/Kconfig 'VIDEO_SAMSUNG_S5P_MFC'
-clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/video/s5p-mfc/Makefile
-
-announce USB_DABUSB - "left-over DABUSB firmware"
-clean_fw firmware/dabusb/bitstream.bin.ihex firmware/dabusb/bitstream.bin
-clean_fw firmware/dabusb/firmware.HEX firmware/dabusb/firmware.fw
-
-announce USB_S2255 - "USB Sensoray 2255 video capture device"
-reject_firmware drivers/media/video/s2255drv.c
-clean_blob drivers/media/video/s2255drv.c
-clean_kconfig drivers/media/video/Kconfig 'USB_S2255'
-clean_mk CONFIG_USB_S2255 drivers/media/video/Makefile
-
-announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam"
-drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw
-reject_firmware drivers/media/video/gspca/vicam.c
-clean_blob drivers/media/video/gspca/vicam.c
-clean_kconfig drivers/media/video/gspca/Kconfig 'USB_GSPCA_VICAM'
-clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/video/gspca/Makefile
-
-# radio
-
-announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio"
-reject_firmware drivers/media/radio/radio-wl1273.c
-clean_blob drivers/media/radio/radio-wl1273.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL1273'
-clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile
-
-announce RADIO_WL128X - "Texas Instruments WL128x FM Radio"
-clean_blob drivers/media/radio/wl128x/fmdrv_common.h
-reject_firmware drivers/media/radio/wl128x/fmdrv_common.c
-clean_blob drivers/media/radio/wl128x/fmdrv_common.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL128X'
-clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile
-
-#######
-# net #
-#######
-
-announce ACENIC - "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit"
-drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin
-drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin
-reject_firmware drivers/net/ethernet/alteon/acenic.c
-clean_blob drivers/net/ethernet/alteon/acenic.c
-clean_kconfig drivers/net/ethernet/alteon/Kconfig 'ACENIC'
-clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile
-
-announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support"
-clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin
-clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin
-reject_firmware drivers/net/ethernet/adaptec/starfire.c
-clean_blob drivers/net/ethernet/adaptec/starfire.c
-clean_kconfig drivers/net/ethernet/adaptec/Kconfig 'ADAPTEC_STARFIRE'
-clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile
-
-announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support"
-clean_blob drivers/net/ethernet/brocade/bna/bnad.c
-clean_blob drivers/net/ethernet/brocade/bna/cna.h
-reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c
-reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c
-clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig 'BNA'
-clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile
-
-announce BNX2 - "Broadcom NetXtremeII"
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1a.fw
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1b.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.3.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2.c
-clean_blob drivers/net/ethernet/broadcom/bnx2.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2'
-clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile
-
-announce BNX2X - "Broadcom NetXtremeII 10Gb support"
-drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1-7.2.51.0.fw.ihex firmware/bnx2x/bnx2x-e1-7.2.51.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw.ihex firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-7.2.51.0.fw.ihex firmware/bnx2x/bnx2x-e2-7.2.51.0.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^#include "bnx2x_init\.h"/,/^$/{
-  /^$/i\
-#define bnx2x_init_block(bp, start, end) \\\
-  return (printk(KERN_ERR "%s: Missing Free firmware\\n", bp->dev->name),\\\
-	  -EINVAL)
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 'report missing Free firmware'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^bool bnx2x_test_firmware_version/,/^}$/{
-  /^	u32 my_fw = /i\
-	/*(DEBLOBBED)*/
-  /^	u32 my_fw = /,/<< 24);/d;
-  /^	u32 loaded_fw = /,/^$/{
-    /^$/i\
-\
-	u32 my_fw = ~loaded_fw;
-  }
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 'fail already-loaded test'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
-clean_sed '
-/static void bnx2x_init_wr_wb/{
-  i\
-extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32);
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2X'
-clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile
-
-announce CASSINI - "Sun Cassini"
-drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin
-reject_firmware drivers/net/ethernet/sun/cassini.c
-clean_blob drivers/net/ethernet/sun/cassini.c
-clean_kconfig drivers/net/ethernet/sun/Kconfig 'CASSINI'
-clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile
-
-announce CHELSIO_T3 - "Chelsio AEL 2005 support"
-drop_fw_file firmware/cxgb3/t3b_psram-1.1.0.bin.ihex firmware/cxgb3/t3b_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/t3c_psram-1.1.0.bin.ihex firmware/cxgb3/t3c_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/t3fw-7.10.0.bin.ihex firmware/cxgb3/t3fw-7.10.0.bin
-drop_fw_file firmware/cxgb3/ael2005_opt_edc.bin.ihex firmware/cxgb3/ael2005_opt_edc.bin
-drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_edc.bin
-drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin
-reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T3'
-clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile
-
-announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support"
-reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T4'
-clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile
-
-announce E100 - "Intel PRO/100+"
-drop_fw_file firmware/e100/d101m_ucode.bin.ihex firmware/e100/d101m_ucode.bin
-drop_fw_file firmware/e100/d101s_ucode.bin.ihex firmware/e100/d101s_ucode.bin
-drop_fw_file firmware/e100/d102e_ucode.bin.ihex firmware/e100/d102e_ucode.bin
-reject_firmware drivers/net/ethernet/intel/e100.c
-clean_sed '
-/^static const struct firmware \*e100_\(reject\|request\)_firmware(/,/^}$/{
-  s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;:
-}' drivers/net/ethernet/intel/e100.c 'proceed without firmware'
-clean_blob drivers/net/ethernet/intel/e100.c
-clean_kconfig drivers/net/ethernet/intel/Kconfig 'E100'
-clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile
-
-announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device."
-clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img
-reject_firmware drivers/staging/ft1000/TODO
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h
-clean_sed '
-/^static int ft1000_reset_card/,/^}$/ {
-  /card_bootload/i\
-		return /*(DEBLOBBED)*/ false;
-}
-' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \
-  'disabled non-Free firmware-loading machinery'
-reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_PCMCIA'
-clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile
-
-announce FT1000_USB - "Driver for ft1000 USB devices."
-clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img
-reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_USB'
-clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile
-
-announce MYRI_SBUS - "MyriCOM Gigabit Ethernet"
-drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin
-
-announce MYRI10GE - "Myricom Myri-10G Ethernet support"
-reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_kconfig drivers/net/ethernet/myricom/Kconfig 'MYRI10GE'
-clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile
-
-announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC"
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'NETXEN_NIC'
-clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile
-
-announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support"
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'QLCNIC'
-clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile
-
-announce R8169 - "Realtek 8169 gigabit ethernet support"
-reject_firmware drivers/net/ethernet/realtek/r8169.c
-clean_blob drivers/net/ethernet/realtek/r8169.c
-clean_kconfig drivers/net/ethernet/realtek/Kconfig R8169
-clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile
-
-announce SLICOSS - "Alacritech Gigabit IS-NIC cards"
-reject_firmware drivers/staging/slicoss/slicoss.c
-clean_blob drivers/staging/slicoss/slicoss.c
-clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS'
-clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile
-
-announce SPIDER_NET - "Spider Gigabit Ethernet driver"
-reject_firmware drivers/net/ethernet/toshiba/spider_net.c
-clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \
-  drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes'
-clean_blob drivers/net/ethernet/toshiba/spider_net.c
-clean_blob drivers/net/ethernet/toshiba/spider_net.h
-clean_kconfig drivers/net/ethernet/toshiba/Kconfig 'SPIDER_NET'
-clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile
-
-announce TEHUTI - "Tehuti Networks 10G Ethernet"
-drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin
-reject_firmware drivers/net/ethernet/tehuti/tehuti.c
-clean_blob drivers/net/ethernet/tehuti/tehuti.c
-clean_kconfig drivers/net/ethernet/tehuti/Kconfig 'TEHUTI'
-clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile
-
-announce TIGON3 - "Broadcom Tigon3"
-drop_fw_file firmware/tigon/tg3.bin.ihex firmware/tigon/tg3.bin
-drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin
-drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin
-reject_firmware drivers/net/ethernet/broadcom/tg3.c
-clean_blob drivers/net/ethernet/broadcom/tg3.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'TIGON3'
-clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile
-
-announce TYPHOON - "3cr990 series Typhoon"
-drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin
-reject_firmware drivers/net/ethernet/3com/typhoon.c
-clean_blob drivers/net/ethernet/3com/typhoon.c
-clean_kconfig drivers/net/ethernet/3com/Kconfig 'TYPHOON'
-clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile
-
-announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter"
-reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_kconfig drivers/net/ethernet/neterion/Kconfig 'VXGE'
-clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile
-
-# appletalk
-
-announce COPS - "COPS LocalTalk PC"
-clean_sed '
-/sizeof(\(ff\|lt\)drv_code)/{
-  i\
-		printk(KERN_INFO "%s: Missing Free firmware.\\n", dev->name);\
-		return;
-}
-/\(ff\|lt\)drv_code/d;
-' drivers/net/appletalk/cops.c 'report missing Free firmware'
-clean_blob drivers/net/appletalk/cops.c
-clean_file drivers/net/appletalk/cops_ffdrv.h
-clean_file drivers/net/appletalk/cops_ltdrv.h
-clean_kconfig drivers/net/appletalk/Kconfig 'COPS'
-clean_mk CONFIG_COPS drivers/net/appletalk/Makefile
-
-# hamradio
-
-announce YAM - "YAM driver for AX.25"
-drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin
-drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin
-reject_firmware drivers/net/hamradio/yam.c
-clean_blob drivers/net/hamradio/yam.c
-clean_kconfig drivers/net/hamradio/Kconfig 'YAM'
-clean_mk CONFIG_YAM drivers/net/hamradio/Makefile
-
-# irda
-
-announce USB_IRDA - "IrDA USB dongles"
-reject_firmware drivers/net/irda/irda-usb.c
-clean_blob drivers/net/irda/irda-usb.c
-clean_kconfig drivers/net/irda/Kconfig 'USB_IRDA'
-clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile
-
-# smsc
-
-announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA"
-drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin
-reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_kconfig drivers/net/ethernet/smsc/Kconfig 'PCMCIA_SMC91C92'
-clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile
-
-# near-field communication
-
-announce NFC_WILINK - "Texas Instruments NFC WiLink driver"
-reject_firmware drivers/nfc/nfcwilink.c
-clean_blob drivers/nfc/nfcwilink.c
-clean_kconfig drivers/nfc/Kconfig 'NFC_WILINK'
-clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile
-
-# pcmcia
-
-# CIS files are not software.
-# announce PCCARD - "PCCard (PCMCIA/CardBus) support"
-# reject_firmware drivers/pcmcia/ds.c
-# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
-# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
-
-announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CCFEM556.cis.ihex firmware/cis/3CCFEM556.cis
-# clean_blob drivers/net/pcmcia/3c574_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
-# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CXEM556.cis.ihex firmware/cis/3CXEM556.cis
-# clean_blob drivers/net/pcmcia/3c589_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
-# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis
-drop_fw_file firmware/cis/PCMLM28.cis.ihex firmware/cis/PCMLM28.cis
-drop_fw_file firmware/cis/DP83903.cis.ihex firmware/cis/DP83903.cis
-drop_fw_file firmware/cis/NE2K.cis.ihex firmware/cis/NE2K.cis
-drop_fw_file firmware/cis/tamarack.cis.ihex firmware/cis/tamarack.cis
-drop_fw_file firmware/cis/PE-200.cis.ihex firmware/cis/PE-200.cis
-drop_fw_file firmware/cis/PE520.cis.ihex firmware/cis/PE520.cis
-# clean_blob drivers/net/pcmcia/pcnet_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
-# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
-
-# usb
-
-announce USB_KAWETH - "USB KLSI KL5USB101-based ethernet device support"
-drop_fw_file firmware/kaweth/new_code.bin.ihex firmware/kaweth/new_code.bin
-drop_fw_file firmware/kaweth/new_code_fix.bin.ihex firmware/kaweth/new_code_fix.bin
-drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code.bin
-drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin
-reject_firmware drivers/net/usb/kaweth.c
-clean_blob drivers/net/usb/kaweth.c
-clean_kconfig drivers/net/usb/Kconfig 'USB_KAWETH'
-clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile
-
-# wireless
-
-announce ATMEL "Atmel at76c50x chipset  802.11b support"
-reject_firmware drivers/net/wireless/atmel.c
-clean_blob drivers/net/wireless/atmel.c
-clean_kconfig drivers/net/wireless/Kconfig 'ATMEL'
-clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile
-
-announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards"
-reject_firmware drivers/net/wireless/at76c50x-usb.c
-clean_blob drivers/net/wireless/at76c50x-usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'AT76C50X_USB'
-clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile
-
-announce B43 - "Broadcom 43xx wireless support (mac80211 stack)"
-maybe_reject_firmware drivers/net/wireless/b43/main.c
-clean_sed '
-/^static int b43_upload_microcode(/,/^}$/{
-  /	if (dev->fw\.opensource) {$/i\
-	if (!dev->fw.opensource) {\
-		b43err(dev->wl, "Rejected non-Free firmware\\n");\
-		err = -EOPNOTSUPP;\
-		goto error;\
-	}
-}' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware'
-# Major portions of firmware filenames not deblobbed.
-clean_blob drivers/net/wireless/b43/main.c
-clean_kconfig drivers/net/wireless/b43/Kconfig 'B43'
-clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile
-
-announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)"
-reject_firmware drivers/net/wireless/b43legacy/main.c
-# Major portions of firwmare filenames not deblobbed.
-clean_blob drivers/net/wireless/b43legacy/main.c
-clean_kconfig drivers/net/wireless/b43legacy/Kconfig 'B43LEGACY'
-clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile
-
-announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMSMAC'
-clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile
-
-announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_SDIO'
-clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_USB'
-clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)"
-reject_firmware drivers/net/wireless/orinoco/fw.c
-clean_blob drivers/net/wireless/orinoco/fw.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'HERMES'
-clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile
-
-announce ORINOCO_USB - "Agere Orinoco USB support"
-reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c
-clean_blob drivers/net/wireless/orinoco/orinoco_usb.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'ORINOCO_USB'
-clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile
-
-announce WLAGS49_H2 - "Agere Systems HERMES II Wireless PC Card Model 0110"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h2.c
-clean_blob drivers/staging/wlags49_h2/sta_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h2.c
-clean_blob drivers/staging/wlags49_h2/wl_profile.c
-clean_sed '
-  s,\(.*hcf_status = \)dhf_download_fw(.*&fw_image );,//& /*(DEBLOBBED)*/\n\1HCF_ERR_INCOMP_FW;,
-' drivers/staging/wlags49_h2/wl_main.c 'reject built-in non-Free firmware'
-clean_kconfig drivers/staging/wlags49_h2/Kconfig 'WLAGS49_H2'
-clean_mk CONFIG_WLAGS49_H2 drivers/staging/Makefile
-
-announce WLAGS49_H25 - "Linksys Systems HERMES II.5 Wireless-G_CompactFlash_Card"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h25.c
-clean_blob drivers/staging/wlags49_h2/sta_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h25.c
-clean_kconfig drivers/staging/wlags49_h25/Kconfig 'WLAGS49_H25'
-clean_mk CONFIG_WLAGS49_H25 drivers/staging/Makefile
-
-announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2100.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2100'
-clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile
-
-announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2200.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2200'
-clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile
-
-announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection"
-reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945.h
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL3945'
-clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN"
-reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-5000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-6000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-1000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-2000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLWIFI'
-clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile
-
-announce IWL4965 - "Intel Wireless WiFi 4965AGN"
-reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965.c
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL4965'
-clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWM - "Intel Wireless Multicomm 3200 WiFi driver"
-reject_firmware drivers/net/wireless/iwmc3200wifi/fw.c
-clean_blob drivers/net/wireless/iwmc3200wifi/sdio.c
-clean_kconfig drivers/net/wireless/iwmc3200wifi/Kconfig 'IWM'
-clean_mk CONFIG_IWM drivers/net/wireless/iwmc3200wifi/Makefile
-
-announce IWMC3200TOP - "Intel Wireless MultiCom Top Driver"
-reject_firmware drivers/misc/iwmc3200top/fw-download.c
-undefine_macro '_FW_NAME(api)' '"/*(DEBLOBBED)*/"' \
-  'removed non-Free firmware name' drivers/misc/iwmc3200top/iwmc3200top.h
-clean_blob drivers/misc/iwmc3200top/main.c
-clean_kconfig drivers/misc/iwmc3200top/Kconfig 'IWMC3200TOP'
-clean_mk CONFIG_IWMC3200TOP drivers/misc/iwmc3200top/Makefile
-
-announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support"
-reject_firmware drivers/net/wireless/libertas/firmware.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS'
-clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_cs.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_CS'
-clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_sdio.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SDIO'
-clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_spi.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SPI'
-clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_usb.c
-clean_blob drivers/net/wireless/libertas/README
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB'
-clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
-reject_firmware drivers/net/wireless/libertas_tf/if_usb.c
-clean_blob drivers/net/wireless/libertas_tf/if_usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB'
-clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile
-
-announce MWIFIEX - "Marvell WiFi-Ex Driver"
-clean_blob drivers/net/wireless/mwifiex/README
-reject_firmware drivers/net/wireless/mwifiex/main.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX'
-clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787"
-clean_blob drivers/net/wireless/mwifiex/sdio.h
-clean_blob drivers/net/wireless/mwifiex/sdio.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_SDIO'
-clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766"
-clean_blob drivers/net/wireless/mwifiex/pcie.h
-clean_blob drivers/net/wireless/mwifiex/pcie.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_PCIE'
-clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797"
-clean_blob drivers/net/wireless/mwifiex/usb.h
-clean_blob drivers/net/wireless/mwifiex/usb.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_USB'
-clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile
-
-announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support"
-reject_firmware drivers/net/wireless/mwl8k.c
-clean_blob drivers/net/wireless/mwl8k.c
-clean_kconfig drivers/net/wireless/Kconfig 'MWL8K'
-clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile
-
-announce ATH6KL - "Atheros ath6kl support"
-reject_firmware drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/core.h
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL'
-clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_SDIO - "Atheros ath6kl SDIO support"
-clean_blob drivers/net/wireless/ath/ath6kl/sdio.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_SDIO'
-clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_USB - "Atheros ath6kl USB support"
-clean_blob drivers/net/wireless/ath/ath6kl/usb.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_USB'
-clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile
-
-#announce ATH9K_HTC - "Atheros HTC based wireless cards support"
-#reject_firmware drivers/net/wireless/ath/ath9k/hif_usb.c
-#clean_blob drivers/net/wireless/ath/ath9k/hif_usb.c
-#clean_kconfig drivers/net/wireless/ath/ath9k/Kconfig 'ATH9K_HTC'
-#clean_mk CONFIG_ATH9K_HTC drivers/net/wireless/ath/ath9k/Makefile
-
-announce PRISM2_USB - "Prism2.5/3 USB driver"
-reject_firmware drivers/staging/wlan-ng/prism2fw.c
-clean_blob drivers/staging/wlan-ng/prism2fw.c
-clean_kconfig drivers/staging/wlan-ng/Kconfig PRISM2_USB
-clean_mk CONFIG_PRISM2_USB drivers/staging/wlan-ng/Makefile
-
-announce P54_PCI - "Prism54 PCI support"
-reject_firmware drivers/net/wireless/p54/p54pci.c
-clean_blob drivers/net/wireless/p54/p54pci.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_PCI'
-clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile
-
-announce P54_SPI - "Prism54 SPI (stlc45xx) support"
-# There's support for loading custom 3826.eeprom here, with a default
-# eeprom that is clearly pure data.  Without Free 3826.arm, there's
-# little point in trying to retain the ability to load 3826.eeprom, so
-# we drop it altogether.
-reject_firmware drivers/net/wireless/p54/p54spi.c
-clean_blob drivers/net/wireless/p54/p54spi.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_SPI'
-clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile
-
-announce P54_USB - "Prism54 USB support"
-reject_firmware drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.h
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB'
-clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile
-
-announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus"
-reject_firmware drivers/net/wireless/prism54/islpci_dev.c
-clean_blob drivers/net/wireless/prism54/islpci_dev.c
-clean_kconfig drivers/net/wireless/Kconfig 'PRISM54'
-clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile
-
-announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support"
-reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE'
-clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile
-
-announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt61pci.h
-clean_blob drivers/net/wireless/rt2x00/rt61pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT61PCI'
-clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT73USB - "Ralink rt2501/rt73 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt73usb.h
-clean_blob drivers/net/wireless/rt2x00/rt73usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT73USB'
-clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.h
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800PCI
-clean_mk CONFIG_RT2800PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800USB - "Ralink rt2800 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.h
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB
-clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile
-
-announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE
-clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
-
-announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU
-clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile
-
-announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE
-clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile
-
-announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE
-clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile
-
-announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c
-clean_kconfig drivers/staging/rtl8192e/Kconfig RTL8192E
-clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile
-
-announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c
-clean_blob drivers/staging/rtl8192u/r819xU_firmware.c
-clean_kconfig drivers/staging/rtl8192u/Kconfig 'RTL8192U'
-clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile
-
-announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8712/hal_init.c
-clean_blob drivers/staging/rtl8712/hal_init.c
-clean_kconfig drivers/staging/rtl8712/Kconfig 'R8712U'
-clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile
-
-announce VT6656 - "VIA Technologies VT6656 support"
-reject_firmware drivers/staging/vt6656/firmware.c
-clean_blob drivers/staging/vt6656/firmware.c
-clean_kconfig drivers/staging/vt6656/Kconfig 'VT6656'
-clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile
-
-announce WL1251 - "TI wl1251 support"
-reject_firmware drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/wl1251.h
-clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig 'WL1251'
-clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile
-
-announce WL12XX - "TI wl12xx support"
-clean_blob drivers/net/wireless/ti/wl12xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig 'WL12XX'
-clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile
-
-announce WLCORE - "TI wlcore support"
-clean_blob drivers/net/wireless/ti/wlcore/wl12xx.h
-reject_firmware drivers/net/wireless/ti/wlcore/main.c
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE'
-clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile
-
-announce WLCORE_SDIO - "TI wlcore SDIO support"
-clean_blob drivers/net/wireless/ti/wlcore/sdio.c
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE_SDIO'
-clean_mk CONFIG_WLCORE_SDIO drivers/net/wireless/ti/wlcore/Makefile
-
-announce WLCORE_SPI - "TI wlcore SPI support"
-clean_blob drivers/net/wireless/ti/wlcore/spi.c
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE_SPI'
-clean_mk CONFIG_WLCORE_SPI drivers/net/wireless/ti/wlcore/Makefile
-
-announce USB_ZD1201 - "USB ZD1201 based Wireless device support"
-reject_firmware drivers/net/wireless/zd1201.c
-clean_blob drivers/net/wireless/zd1201.c
-clean_kconfig drivers/net/wireless/Kconfig 'USB_ZD1201'
-clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile
-
-announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support"
-reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c
-clean_blob drivers/net/wireless/zd1211rw/zd_usb.c
-clean_kconfig drivers/net/wireless/zd1211rw/Kconfig 'ZD1211RW'
-clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile
-
-# bluetooth
-
-announce BT_ATH3K - "Atheros firmware download driver"
-reject_firmware drivers/bluetooth/ath3k.c
-clean_blob drivers/bluetooth/ath3k.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_ATH3K'
-clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile
-
-announce BT_HCIBCM203X - "HCI BCM203x USB driver"
-reject_firmware drivers/bluetooth/bcm203x.c
-clean_blob drivers/bluetooth/bcm203x.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBCM203X'
-clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile
-
-announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver"
-reject_firmware drivers/bluetooth/bfusb.c
-clean_blob drivers/bluetooth/bfusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBFUSB'
-clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile
-
-announce BT_HCIBT3C - "HCI BT3C (PC Card) driver"
-reject_firmware drivers/bluetooth/bt3c_cs.c
-clean_blob drivers/bluetooth/bt3c_cs.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C'
-clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile
-
-announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver"
-reject_firmware drivers/bluetooth/btmrvl_sdio.c
-clean_blob drivers/bluetooth/btmrvl_sdio.c
-clean_blob Documentation/btmrvl.txt
-clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL_SDIO'
-clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile
-
-announce TI_ST - "Texas Instruments shared transport line discipline"
-reject_firmware drivers/misc/ti-st/st_kim.c
-clean_blob drivers/misc/ti-st/st_kim.c
-clean_kconfig drivers/misc/ti-st/Kconfig 'TI_ST'
-clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile
-
-# wimax
-
-announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400"
-reject_firmware drivers/net/wimax/i2400m/fw.c
-clean_blob drivers/net/wimax/i2400m/sdio.c
-clean_blob drivers/net/wimax/i2400m/usb.c
-clean_blob Documentation/wimax/README.i2400m
-clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M'
-clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile
-
-announce BCM_WIMAX - "Beceem BCS200/BCS220-3 and BCSM250 wimax support"
-clean_blob drivers/staging/bcm/Macros.h
-# This disables loading of the .cfg file as well, but it's useless without
-# the firmware proper.
-clean_sed '
-/^static \(inline \)\?struct file \*open_firmware_file/,/^}$/ {
-  /oldfs *= *get_fs();/i\
-	return /*(DEBLOBBED)*/ NULL;
-}' drivers/staging/bcm/Misc.c 'disabled non-Free firmware loading machinery'
-clean_kconfig drivers/staging/bcm/Kconfig 'BCM_WIMAX'
-clean_mk CONFIG_BCM_WIMAX drivers/staging/bcm/Makefile
-
-announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface"
-clean_sed '
-/^static int download_image/,/^}/ {
-  /filp = filp_open/ s,filp = .*;,/*(DEBLOBBED)*/,
-  s,if (IS_ERR(filp)),if (1 /*(DEBLOBBED)*/),
-}' drivers/staging/gdm72xx/sdio_boot.c \
-  'disabled non-Free firmware loading machinery'
-clean_blob drivers/staging/gdm72xx/sdio_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_SDIO'
-clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile
-
-announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface"
-clean_sed '
-/^int usb_boot/,/^}/ {
-  /filp = filp_open/ s,filp = .*;,/*(DEBLOBBED)*/,
-  s,if (IS_ERR(filp)),if (1 /*(DEBLOBBED)*/),
-}' drivers/staging/gdm72xx/usb_boot.c \
-  'disabled non-Free firmware loading machinery'
-clean_blob drivers/staging/gdm72xx/usb_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_USB'
-clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile
-
-# infiniband
-
-announce INFINIBAND_QIB - "QLogic PCIe HCA support"
-drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw
-reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c
-clean_blob drivers/infiniband/hw/qib/qib_sd7220.c
-clean_kconfig drivers/infiniband/hw/qib/Kconfig 'INFINIBAND_QIB'
-clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile
-
-# CAN
-
-announce CAN_SOFTING - "Softing Gmbh CAN generic support"
-reject_firmware drivers/net/can/softing/softing_fw.c
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING'
-clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile
-
-announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards"
-clean_blob drivers/net/can/softing/softing_cs.c
-clean_blob drivers/net/can/softing/softing_platform.h
-clean_sed '
-/^config CAN_SOFTING_CS$/,${
-  /You need firmware/i\
-	  /*(DEBLOBBED)*/
-  /You need firmware/,/softing-fw.*tar\.gz/d
-}' drivers/net/can/softing/Kconfig 'removed firmware notes'
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING_CS'
-clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/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
-
-announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+"
-reject_firmware drivers/isdn/hardware/mISDN/speedfax.c
-clean_blob drivers/isdn/hardware/mISDN/speedfax.c
-clean_kconfig drivers/isdn/hardware/mISDN/Kconfig 'MISDN_SPEEDFAX'
-clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile
-
-##########
-# Serial #
-##########
-
-announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/MT5634ZLX.cis.ihex firmware/cis/MT5634ZLX.cis
-drop_fw_file firmware/cis/RS-COM-2P.cis.ihex firmware/cis/RS-COM-2P.cis
-drop_fw_file firmware/cis/COMpad2.cis.ihex firmware/cis/COMpad2.cis
-drop_fw_file firmware/cis/COMpad4.cis.ihex firmware/cis/COMpad4.cis
-# These are not software; they're Free, but GPLed without textual sources.
-# It could be assumed that these binaries *are* sources, since they
-# can be trivially converted back to a textual form, without loss,
-# but we're better off safe than sorry, so remove them from our tree.
-drop_fw_file firmware/cis/SW_555_SER.cis.ihex firmware/cis/SW_555_SER.cis
-drop_fw_file firmware/cis/SW_7xx_SER.cis.ihex firmware/cis/SW_7xx_SER.cis
-drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis
-# clean_blob drivers/tty/serial/serial_cs.c
-# clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_8250_CS'
-# clean_mk CONFIG_SERIAL_8250_CS drivers/tty/serial/Makefile
-
-announce SERIAL_ICOM - "IBM Multiport Serial Adapter"
-reject_firmware drivers/tty/serial/icom.c
-clean_blob drivers/tty/serial/icom.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_ICOM'
-clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile
-
-announce SERIAL_QE - "Freescale QUICC Engine serial port support"
-reject_firmware drivers/tty/serial/ucc_uart.c
-clean_blob drivers/tty/serial/ucc_uart.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_QE'
-clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile
-
-#########
-# input #
-#########
-
-announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen"
-reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c
-clean_blob drivers/input/touchscreen/atmel_mxt_ts.c
-clean_kconfig drivers/input/touchscreen/Kconfig 'TOUCHSCREEN_ATMEL_MXT'
-clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile
-
-announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter"
-reject_firmware drivers/staging/media/lirc/lirc_zilog.c
-clean_blob drivers/staging/media/lirc/lirc_zilog.c
-clean_kconfig drivers/staging/media/lirc/Kconfig 'LIRC_ZILOG'
-clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile
-
-####################
-# Data acquisition #
-####################
-
-announce COMEDI_PCI_DRIVERS - "Data acquisition support Comedi PCI drivers"
-reject_firmware drivers/staging/comedi/drivers/jr3_pci.c
-clean_blob drivers/staging/comedi/drivers/jr3_pci.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_PCI_DRIVERS'
-clean_mk CONFIG_COMEDI_PCI_DRIVERS drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUX - "ITL USBDUX support"
-reject_firmware drivers/staging/comedi/drivers/usbdux.c
-clean_blob drivers/staging/comedi/drivers/usbdux.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUX'
-clean_mk CONFIG_COMEDI_USBDUX drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXFAST - "ITL USB-DUXfast support"
-reject_firmware drivers/staging/comedi/drivers/usbduxfast.c
-clean_blob drivers/staging/comedi/drivers/usbduxfast.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXFAST'
-clean_mk CONFIG_COMEDI_USBDUXFAST drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXSIGMA - "ITL USB-DUXsigma support"
-reject_firmware drivers/staging/comedi/drivers/usbduxsigma.c
-clean_blob drivers/staging/comedi/drivers/usbduxsigma.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXSIGMA'
-clean_mk CONFIG_COMEDI_USBDUXSIGMA drivers/staging/comedi/drivers/Makefile
-
-
-#######
-# MMC #
-#######
-
-announce MMC_VUB300 - "VUB300 USB to SDIO/SD/MMC Host Controller support"
-clean_sed '
-/^config MMC_VUB300/,/^config /{
-  /Some SDIO cards/i\
-	  /*(DEBLOBBED)*/
-  /Some SDIO cards/,/obtainable data rate\.$/d
-}
-' drivers/mmc/host/Kconfig "removed firmware notes"
-reject_firmware drivers/mmc/host/vub300.c
-clean_blob drivers/mmc/host/vub300.c
-clean_kconfig drivers/mmc/host/Kconfig 'MMC_VUB300'
-clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile
-
-########
-# SCSI #
-########
-
-announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver"
-drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin
-reject_firmware drivers/scsi/qlogicpti.c
-clean_blob drivers/scsi/qlogicpti.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGICPTI'
-clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile
-
-announce SCSI_ADVANSYS - "AdvanSys SCSI"
-drop_fw_file firmware/advansys/mcode.bin.ihex firmware/advansys/mcode.bin
-drop_fw_file firmware/advansys/3550.bin.ihex firmware/advansys/3550.bin
-drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin
-drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin
-reject_firmware drivers/scsi/advansys.c
-clean_blob drivers/scsi/advansys.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_ADVANSYS'
-clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile
-
-announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI"
-drop_fw_file firmware/qlogic/1040.bin.ihex firmware/qlogic/1040.bin
-drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin
-drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin
-reject_firmware drivers/scsi/qla1280.c
-clean_blob drivers/scsi/qla1280.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGIC_1280'
-clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile
-
-announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support"
-reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.h
-clean_kconfig drivers/scsi/aic94xx/Kconfig 'SCSI_AIC94XX'
-clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile
-
-announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support"
-reject_firmware drivers/scsi/bfa/bfad.c
-clean_blob drivers/scsi/bfa/bfad.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_BFA_FC'
-clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile
-
-announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support"
-# The firmware name is built out of Vital Product Data read from the
-# adapter.  The firmware is definitely code, and I couldn't find
-# evidence it is Free, so I'm disabling it.  It's not clear whether
-# this is the hardware or the software inducing to the installation of
-# non-Free firmware.
-reject_firmware drivers/scsi/lpfc/lpfc_init.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_LPFC'
-clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile
-
-announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support"
-reject_firmware drivers/scsi/qla2xxx/qla_gbl.h
-reject_firmware drivers/scsi/qla2xxx/qla_init.c
-reject_firmware drivers/scsi/qla2xxx/qla_os.c
-reject_firmware drivers/scsi/qla2xxx/qla_nx.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
-
-drop_fw_file firmware/ql2300_fw.bin.ihex firmware/ql2300_fw.bin
-drop_fw_file firmware/ql2322_fw.bin.ihex firmware/ql2322_fw.bin
-drop_fw_file firmware/ql2400_fw.bin.ihex firmware/ql2400_fw.bin
-drop_fw_file firmware/ql2500_fw.bin.ihex firmware/ql2500_fw.bin
-
-#######
-# USB #
-#######
-
-# atm
-
-announce USB_CXACRU - "Conexant AccessRunner USB support"
-reject_firmware drivers/usb/atm/cxacru.c
-clean_blob drivers/usb/atm/cxacru.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_CXACRU'
-clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile
-
-announce USB_SPEEDTOUCH - "Speedtouch USB support"
-reject_firmware drivers/usb/atm/speedtch.c
-clean_blob drivers/usb/atm/speedtch.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_SPEEDTOUCH'
-clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile
-
-announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem"
-reject_firmware drivers/usb/atm/ueagle-atm.c
-clean_blob drivers/usb/atm/ueagle-atm.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_UEAGLEATM'
-clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile
-
-# misc
-
-announce USB_EMI26 - "EMI 2|6 USB Audio interface"
-# These files are not under the GPL, better remove them all.
-drop_fw_file firmware/emi26/bitstream.HEX firmware/emi26/bitstream.fw
-drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw
-drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw
-reject_firmware drivers/usb/misc/emi26.c
-clean_blob drivers/usb/misc/emi26.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI26'
-clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile
-
-announce USB_EMI62 - "EMI 6|2m USB Audio interface"
-# These files are probably not under the GPL, better remove them all.
-drop_fw_file firmware/emi62/bitstream.HEX firmware/emi62/bitstream.fw
-drop_fw_file firmware/emi62/loader.HEX firmware/emi62/loader.fw
-drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw
-drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw
-reject_firmware drivers/usb/misc/emi62.c
-clean_blob drivers/usb/misc/emi62.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI62'
-clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile
-
-announce USB_ISIGHTFW - "iSight firmware loading support"
-reject_firmware drivers/usb/misc/isight_firmware.c
-clean_blob drivers/usb/misc/isight_firmware.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_ISIGHTFW'
-clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile
-
-# storage
-
-announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support"
-reject_firmware drivers/usb/storage/ene_ub6250.c
-clean_blob drivers/usb/storage/ene_ub6250.c
-clean_kconfig drivers/usb/storage/Kconfig 'USB_STORAGE_ENE_UB6250'
-clean_mk 'CONFIG_USB_STORAGE_ENE_UB6250' drivers/usb/storage/Makefile
-
-announce USB_ENESTORAGE - "USB ENE card reader support"
-clean_blob drivers/staging/keucr/init.h
-clean_sed '
-/^int ENE_LoadBinCode(/,/^}$/ {
-  /kmalloc/i\
-	return /*(DEBLOBBED)*/ USB_STOR_TRANSPORT_ERROR;
-}
-' drivers/staging/keucr/init.c 'disable non-Free firmware loading machinery'
-clean_kconfig drivers/staging/keucr/Kconfig 'USB_ENESTORAGE'
-clean_mk 'CONFIG_USB_ENESTORAGE' drivers/staging/keucr/Makefile
-
-# serial
-
-announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver"
-drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_MPR'
-drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA18X'
-drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19'
-drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QI'
-drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QW'
-drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19W'
-drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28'
-drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XA'
-drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XB'
-drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28X'
-drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49W'
-drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49WLC'
-reject_firmware drivers/usb/serial/keyspan.c
-clean_blob drivers/usb/serial/keyspan.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN'
-clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile
-
-announce USB_SERIAL_KEYSPAN_PDA - "USB Keyspan PDA Single Port Serial Driver"
-clean_sed '
-s,request_ihex_firmware,/*KEYSPAN_PDA*/&,
-' drivers/usb/serial/keyspan_pda.c 'accept Free firmware'
-
-announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver"
-clean_fw firmware/edgeport/boot.H16 firmware/edgeport/boot.fw
-clean_fw firmware/edgeport/boot2.H16 firmware/edgeport/boot2.fw
-clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw
-clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw
-reject_firmware drivers/usb/serial/io_edgeport.c
-clean_blob drivers/usb/serial/io_edgeport.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)"
-clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin
-reject_firmware drivers/usb/serial/io_ti.c
-clean_blob drivers/usb/serial/io_ti.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT_TI'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver"
-drop_fw_file firmware/ti_3410.fw.ihex firmware/ti_3410.fw
-drop_fw_file firmware/ti_5052.fw.ihex firmware/ti_5052.fw
-drop_fw_file firmware/mts_cdma.fw.ihex firmware/mts_cdma.fw
-drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw
-drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw
-reject_firmware drivers/usb/serial/ti_usb_3410_5052.c
-clean_blob drivers/usb/serial/ti_usb_3410_5052.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_TI'
-clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver"
-clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw
-clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw
-clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw
-reject_firmware drivers/usb/serial/whiteheat.c
-clean_blob drivers/usb/serial/whiteheat.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_WHITEHEAT'
-clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile
-
-# uwb
-
-announce UWB_I1480U - Support for Intel Wireless UWB Link 1480 HWA
-reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h
-reject_firmware drivers/uwb/i1480/dfu/mac.c
-reject_firmware drivers/uwb/i1480/dfu/phy.c
-clean_blob drivers/uwb/i1480/dfu/usb.c
-clean_kconfig drivers/uwb/Kconfig 'UWB_I1480U'
-clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile
-
-
-
-#########
-# Sound #
-#########
-
-announce SND_ASIHPI - "AudioScience ASIxxxx"
-reject_firmware sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpioctl.c
-clean_kconfig sound/pci/Kconfig 'SND_ASIHPI'
-clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile
-
-announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
-# This appears to have been extracted from some non-Free driver
-clean_file sound/pci/cs46xx/cs46xx_image.h
-# The following blobs are definitely extracted from non-Free drivers.
-clean_file sound/pci/cs46xx/imgs/cwc4630.h
-clean_file sound/pci/cs46xx/imgs/cwcasync.h
-clean_file sound/pci/cs46xx/imgs/cwcsnoop.h
-clean_sed '
-/^\(int \)\?snd_cs46xx_download_image([^;]*$/,/^}$/{
-  /for.*BA1_MEMORY_COUNT/i\
-#if 0
-  /^}$/{
-    i\
-#else\
-	snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n");\
-	return -EINVAL;\
-#endif
-  }
-}
-s/cs46xx_dsp_load_module(chip, [&]cwc\(4630\|async\|snoop\)_module)/(snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n"),-EINVAL)/
-' sound/pci/cs46xx/cs46xx_lib.c 'report missing Free firmware'
-clean_blob sound/pci/cs46xx/cs46xx_lib.c
-clean_kconfig sound/pci/Kconfig 'SND_CS46XX'
-clean_mk 'CONFIG_SND_CS46XX' sound/pci/cs46xx/Makefile
-
-announce SND_KORG1212 - "Korg 1212 IO"
-drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp
-reject_firmware sound/pci/korg1212/korg1212.c
-clean_blob sound/pci/korg1212/korg1212.c
-clean_kconfig sound/pci/Kconfig 'SND_KORG1212'
-clean_mk 'CONFIG_SND_KORG1212' sound/pci/korg1212/Makefile
-
-announce SND_MAESTRO3 - "ESS Allegro/Maestro3"
-drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw
-drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw
-reject_firmware sound/pci/maestro3.c
-clean_blob sound/pci/maestro3.c
-clean_kconfig sound/pci/Kconfig 'SND_MAESTRO3'
-clean_mk 'CONFIG_SND_MAESTRO3' sound/pci/Makefile
-
-announce SND_YMFPCI - "Yamaha YMF724/740/744/754"
-drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw
-drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw
-drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw
-reject_firmware sound/pci/ymfpci/ymfpci_main.c
-clean_blob sound/pci/ymfpci/ymfpci_main.c
-clean_kconfig sound/pci/Kconfig 'SND_YMFPCI'
-clean_mk 'CONFIG_SND_YMFPCI' sound/pci/ymfpci/Makefile
-
-announce SND_SB16_CSP - "SB16 Advanced Signal Processor"
-drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp
-drop_fw_file firmware/sb16/mulaw_main.csp.ihex firmware/sb16/mulaw_main.csp
-drop_fw_file firmware/sb16/ima_adpcm_init.csp.ihex firmware/sb16/ima_adpcm_init.csp
-drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_capture.csp
-drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp
-reject_firmware sound/isa/sb/sb16_csp.c
-clean_blob sound/isa/sb/sb16_csp.c
-clean_kconfig sound/isa/Kconfig 'SND_SB16_CSP'
-clean_mk 'CONFIG_SND_SB16_CSP' sound/isa/sb/Makefile
-
-announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
-drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin
-reject_firmware sound/isa/wavefront/wavefront_fx.c
-clean_blob sound/isa/wavefront/wavefront_fx.c
-reject_firmware sound/isa/wavefront/wavefront_synth.c
-clean_blob sound/isa/wavefront/wavefront_synth.c
-clean_kconfig sound/isa/Kconfig 'SND_WAVEFRONT'
-clean_mk 'CONFIG_SND_WAVEFRONT' sound/isa/wavefront/Makefile
-
-announce SND_VX_LIB - Digigram VX soundcards
-reject_firmware sound/drivers/vx/vx_hwdep.c
-clean_blob sound/drivers/vx/vx_hwdep.c
-clean_kconfig sound/drivers/Kconfig 'SND_VX_LIB'
-clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile
-
-announce SND_DARLA20 - "(Echoaudio) Darla20"
-clean_blob sound/pci/echoaudio/darla20.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA20'
-clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile
-
-announce SND_DARLA24 - "(Echoaudio) Darla24"
-clean_blob sound/pci/echoaudio/darla24.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA24'
-clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile
-
-announce SND_ECHO3G - "(Echoaudio) 3G cards"
-clean_blob sound/pci/echoaudio/echo3g.c
-clean_kconfig sound/pci/Kconfig 'SND_ECHO3G'
-clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile
-
-announce SND_GINA20 - "(Echoaudio) Gina20"
-clean_blob sound/pci/echoaudio/gina20.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA20'
-clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile
-
-announce SND_GINA24 - "(Echoaudio) Gina24"
-clean_blob sound/pci/echoaudio/gina24.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA24'
-clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile
-
-announce SND_INDIGO - "(Echoaudio) Indigo"
-clean_blob sound/pci/echoaudio/indigo.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGO'
-clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJ - "(Echoaudio) Indigo DJ"
-clean_blob sound/pci/echoaudio/indigodj.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJ'
-clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJX - "(Echoaudio) Indigo DJx"
-clean_blob sound/pci/echoaudio/indigodjx.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJX'
-clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIO - "(Echoaudio) Indigo IO"
-clean_blob sound/pci/echoaudio/indigoio.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIO'
-clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx"
-clean_blob sound/pci/echoaudio/indigoiox.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIOX'
-clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA20 - "(Echoaudio) Layla20"
-clean_blob sound/pci/echoaudio/layla20.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA20'
-clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA24 - "(Echoaudio) Layla24"
-clean_blob sound/pci/echoaudio/layla24.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA24'
-clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile
-
-announce SND_MIA - "(Echoaudio) Mia"
-clean_blob sound/pci/echoaudio/mia.c
-clean_kconfig sound/pci/Kconfig 'SND_MIA'
-clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile
-
-announce SND_MONA - "(Echoaudio) Mona"
-clean_blob sound/pci/echoaudio/mona.c
-clean_kconfig sound/pci/Kconfig 'SND_MONA'
-clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile
-
-announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above "
-reject_firmware sound/pci/echoaudio/echoaudio.c
-clean_blob sound/pci/echoaudio/echoaudio.c
-
-announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)"
-reject_firmware sound/pci/emu10k1/emu10k1_main.c
-clean_blob sound/pci/emu10k1/emu10k1_main.c
-clean_kconfig sound/pci/Kconfig 'SND_EMU10K1'
-clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile
-
-announce SND_MIXART - "Digigram miXart"
-reject_firmware sound/pci/mixart/mixart_hwdep.c
-clean_blob sound/pci/mixart/mixart_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_MIXART'
-clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile
-
-announce SND_PCXHR - "Digigram PCXHR"
-reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c
-clean_blob sound/pci/pcxhr/pcxhr_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_PCXHR'
-clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile
-
-announce SND_RIPTIDE - "Conexant Riptide"
-reject_firmware sound/pci/riptide/riptide.c
-clean_blob sound/pci/riptide/riptide.c
-clean_kconfig sound/pci/Kconfig 'SND_RIPTIDE'
-clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile
-
-# This is ok, patch filenames are supplied as module parameters, and
-# they are text files with patch instructions.
-#announce SND_HDA_PATCH_LOADER - "Support initialization patch loading for HD-audio"
-#reject_firmware sound/pci/hda/hda_hwdep.c
-#clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_PATCH_LOADER'
-
-announce SND_HDSP - "RME Hammerfall DSP Audio"
-reject_firmware sound/pci/rme9652/hdsp.c
-clean_blob sound/pci/rme9652/hdsp.c
-clean_kconfig sound/pci/Kconfig 'SND_HDSP'
-clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile
-
-announce SND_AICA - "Dreamcast Yamaha AICA sound"
-reject_firmware sound/sh/aica.c
-clean_blob sound/sh/aica.c
-clean_kconfig sound/sh/Kconfig 'SND_AICA'
-clean_mk CONFIG_SND_AICA sound/sh/Makefile
-
-announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle"
-clean_blob sound/isa/msnd/msnd_pinnacle.h
-reject_firmware sound/isa/msnd/msnd_pinnacle.c
-clean_blob sound/isa/msnd/msnd_pinnacle.c
-clean_kconfig sound/isa/Kconfig 'SND_MSND_PINNACLE'
-clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile
-
-announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey"
-clean_blob sound/isa/msnd/msnd_classic.h
-clean_kconfig sound/isa/Kconfig 'SND_MSND_CLASSIC'
-clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile
-
-announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)"
-clean_blob sound/oss/msnd_classic.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS'
-clean_sed '
-/^config MSNDCLAS_INIT_FILE$/, /^config / {
-  /^	default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDCLAS_PERM_FILE$/, /^config / {
-  /^	default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile
-
-announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)"
-clean_blob sound/oss/msnd_pinnacle.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN'
-clean_sed '
-/^config MSNDPIN_INIT_FILE$/, /^config / {
-  /^	default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDPIN_PERM_FILE$/, /^config / {
-  /^	default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile
-
-announce SND_SSCAPE - "Ensoniq SoundScape driver"
-reject_firmware sound/isa/sscape.c
-clean_blob sound/isa/sscape.c
-clean_sed '
-/^config SND_SSCAPE$/, /^config / {
-  s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g;
-}' sound/isa/Kconfig 'removed firmware names'
-clean_kconfig sound/isa/Kconfig 'SND_SSCAPE'
-clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile
-
-announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1701.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1701'
-clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile
-
-announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader"
-maybe_reject_firmware sound/soc/codecs/sigmadsp.c
-
-# It's not clear that wm2000_anc.bin is pure data.
-# Check with developer, clean up for now.
-announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm2000.c
-clean_blob sound/soc/codecs/wm2000.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM2000'
-clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile
-
-announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm8958-dsp2.c
-clean_blob sound/soc/codecs/wm8958-dsp2.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM8994'
-clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile
-
-announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral"
-reject_firmware sound/soc/sh/siu_dai.c
-clean_blob sound/soc/sh/siu_dai.c
-clean_kconfig sound/soc/sh/Kconfig 'SND_SOC_SH4_SIU'
-clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile
-
-announce SOUND_TRIX - "MediaTrix AudioTrix Pro support"
-clean_blob sound/oss/trix.c
-clean_kconfig sound/oss/Kconfig 'SOUND_TRIX'
-clean_sed '
-/^config TRIX_BOOT_FILE$/, /^config / {
-  /^	default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile
-
-announce SOUND_TRIX - "See above,"
-announce SOUND_PAS - "ProAudioSpectrum 16 support,"
-announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support"
-clean_blob sound/oss/sb_common.c
-clean_kconfig sound/oss/Kconfig 'SOUND_PAS'
-clean_kconfig sound/oss/Kconfig 'SOUND_SB'
-clean_mk CONFIG_SOUND_PAS sound/oss/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 '
-/^config PSS_BOOT_FILE$/, /^config / {
-  /^	default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_PSS sound/oss/Makefile
-
-announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB"
-reject_firmware sound/usb/6fire/firmware.c
-clean_blob sound/usb/6fire/firmware.c
-clean_kconfig sound/usb/Kconfig 'SND_USB_6FIRE'
-clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile
-
-announce KEYSPAN_PDA - "Keyspan pda serial-usb adapter"
-drop_fw_file firmware/keyspan_pda/keyspan_pda.HEX firmware/keyspan_pda/keyspan_pda.fw
-drop_fw_file firmware/keyspan_pda/xircom_pgs.HEX firmware/keyspan_pda/xircom_pgs.fw
-#looks like firmware gets loaded into .h file during kernel build. No runtime loading
-
-announce RTL8192E - "Wifi adapter"
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
-clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c
-
-announce ISCI - "Intel SCSI controller"
-clean_blob drivers/scsi/isci/probe_roms.c
-
-#################
-# Documentation #
-#################
-
-announce Documentation - "non-Free firmware scripts and documentation"
-clean_blob Documentation/dvb/avermedia.txt
-clean_blob Documentation/dvb/opera-firmware.txt
-clean_blob Documentation/sound/alsa/ALSA-Configuration.txt
-clean_blob Documentation/sound/oss/MultiSound
-clean_blob Documentation/sound/oss/PSS
-clean_blob Documentation/sound/oss/PSS-updates
-clean_blob Documentation/sound/oss/README.OSS
-clean_file Documentation/dvb/get_dvb_firmware
-clean_file Documentation/video4linux/extract_xc3028.pl
-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
diff --git a/helpers/DATA/linux-lts-quantal/deblob-check b/helpers/DATA/linux-lts-quantal/deblob-check
deleted file mode 100755
index ee62c57fa..000000000
--- a/helpers/DATA/linux-lts-quantal/deblob-check
+++ /dev/null
@@ -1,7091 +0,0 @@
-#! /bin/sh
-
-# deblob-check version 2013-02-06
-# Inspired in gNewSense's find-firmware script.
-# Written by Alexandre Oliva <lxoliva@fsfla.org>
-
-# Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer
-# versions.
-
-# Copyright 2008-2013 Alexandre Oliva <lxoliva@fsfla.org>
-#
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-
-# usage: deblob-check [-S] [-v] [-v] [-s S] [--reverse-patch] \
-#        [--use-...|--gen-flex] [-lDdBbCcXxPpFftVh?H] \
-#        *.tar* patch-* [-i prefix/] *.patch *.diff...
-
-# Look for and report too-long undocumented sequences of numbers
-# (generally blobs in disguise) in source files, as well as requests
-# for loading non-Free firmware.
-
-# The order of command line flags is significant.  Flags given out of
-# the order above won't be handled correctly, sorry.
-
-# -s --sensitivity: Specifies the number of consecutive integral or
-#		character constants that trigger the blob detector.
-#	        Must be followed by a blank and a number.
-
-#    --reverse-patch: Test the removed parts of a patch, rather than
-#		the added ones.
-
-#    --use-awk: Choose the internal GNU awk script for the bulk of the
-#		work.  This is the default option, if GNU awk is found.
-#		The awk interpreter is named gawk, unless AWK is set.
-
-#    --use-sed: Choose the internal GNU sed script for the bulk of the
-#		work.  This is the default option, if GNU awk is not
-#		found.
-
-#    --use-python: Choose the internal python script.  This is not
-#		recommended, because the regular expressions we use
-#		invoke exponential behavior in the python engine.
-
-#    --use-perl: Choose the internal perl script.  This is not
-#		recommended, because our regular expressions exceed
-#		some limits hard-coded into perl.
-
-#    --save-script-input: Save the input that would have been fed to
-#		any of the engines above.
-
-#    --gen-flex: Generate a flex input file with all known blob and
-#		false positive patterns.  It would have been a fast
-#		regular expression processor if only the flex program
-#		completed in reasonable time.
-
-
-# The default sensitivity is 32 constants.
-
-# The sensitivity, if present, must be the first option.  The action
-# selection, if present, must be the first argument, except for the
-# sensitivity and verbosity.
-
-# The default can be overridden with one of:
-
-# -l --list-blobs: list files that contain sequences that match the
-#		blob detector test and that are not known to be false
-#		positives.  This is the default option.
-
-# -d --deblob --mark-blobs: print the processed input, replacing
-#		sequences that match the blob detector test and that
-#		are NOT known to be false positives with
-#		/*(DEBLOBBED)*/.
-
-# -D --cat: print the processed input, as it would have been fed to
-#		the blob detector script.  Use -S to save the sed
-#		script used to process it, and search for `sedcat:' in
-#		comments to locate the relevant adaptation points.
-
-# -b --print-marked-blobs: like -d, but print only the matching
-#		sequences.
-
-# -B --print-blobs: like -b, but do not deblob the sequences.
-
-# -c --print-marked-blobs-with-context: like -b, but try to maximize
-#		the context around the blobs.  This maximization will
-#		sometimes disregard known false positives, if they
-#		happen to be contained within the extended match.
-#		This is probably an indication that the false positive
-#		matching rule could be improved.
-
-# -C --print-blobs-with-context: like -B, but try to maximize the
-#		context around the blobs.
-
-# -X --print-all-matches: print all blobs, be they known false
-#		positives or actual blobs.
-
-# -x --list-all-matches: list files that contain sequences that appear
-#		to be blobs, be they known false positives or not.
-
-# -p --mark-false-positives: print the processed input, replacing
-#		sequences that match the blob detector test, even those
-#		known to be false positives, with /*(DEBLOBBED)*/.
-
-# -P --list-false-positives: list files that contain false positives.
-
-# -f --print-marked-false-positives: like -p, but print only the
-#		matching sequences.
-
-# -F --print-false-positives: like -f, but do not deblob the sequences.
-
-# -t --test: run (very minimal) self-test.
-
-# -V --version: print a version number
-
-# -h -? -H --help: print short or long help message
-
-
-# debugging options:
-
-# -S --save-scripts: save scripts and temporary files.
-
-# -v --verbose: increase verbosity level, for internal debugging.  May
-#		be given at most twice.
-
-
-# file options:
-
-# --: Don't process command-line options any further.  All following
-#		arguments are taken as filenames.
-
-# -i --implied-prefix --prefix: prepend the given prefix to each filename
-#		listed after this option, when configuring false positives
-#		and negatives.
-
-# *.tar*: iterate over all files in the named tar file.
-
-# *.patch, patch-*, *.diff: Look for blobs in the [ +] parts of the
-# 		*patch, unless --reverse-patch is given, in which case
-# 		the [ -] parts will be used.
-
-# Anything else is assumed to be a source file.
-
-# *.gz | *.bz2 | *.xz | *.lz: Decompress automatically.
-
-
-# The exit status is only significant for the --list options: it will
-# be true if nothing was found, and false otherwise.
-
-: # Mark the end of the help message.
-
-# TODO:
-
-# - Improve handling of command-line arguments, so as to not make the
-# order relevant.
-
-# - Add an option for the user to feed their own false positive
-# patterns.
-
-# - Add support to recognize known blobs (or other non-Free
-# signatures, really), to speed up the scanning of files containing
-# blobs, and to avoid attempts to disguise blobs.
-
-# - Factor out the code in the various print_* and list_* parts of the
-# sed script, at least in the shell sources.  Make sure they're all
-# included and expanded in a saved --cat script though.
-
-# - Add support for file name tagging in patterns, such that blobs or
-# false positives are recognized only when handling the specific
-# filename, be it stand-alone, as part of a patch or a tarball.  This
-# should help avoid recognition of actual blobs as false positives
-# just because there's a symbol with a different name elsewhere.
-
-#   It is convenient that the patterns provided by the user to
-# recognize file names can be empty (for backward compatibility), but
-# this should ideally be phased out in favor of more precise matches.
-# It's important that files can be recognized with leading tarball or
-# patch names, that the filename used within the tarball contain
-# leading garbage, and even that a partial pathname be recognizable
-# (say recognize drivers/net/whatever.c when the input file is named
-# ../net/whatever.c).
-
-#   Rather than using regular expressions to recognize multiple files
-# it's convenient (but not quite essential) that filename patterns be
-# specifiable as regular expressions, rather than simple filenames,
-# but there are other ways around this.
-
-#   Maintaining begin/end markers in a stack-like fashion as part of
-# the processed stream, and using the names in them as (optional) part
-# of the recognition patterns, would enable us to do it.
-
-#   Introducing annotations next to the false positives (and recognized
-# blobs) as an early part of the process may speed things up and
-# enable fast processing, but how to introduce the annotations quickly
-# in the first place?  Given patterns such as
-
-#   \(\(file1\)\(.*\)\(pat1\)\|\(file2\)\(.*\)\(pat2\)\|...\)
-
-# how do we get sed to introduce a marker that contains file2 right
-# before or right after pat2, without turning a big efficient regexp
-# into a slowish sequence of s/// commands?
-
-# - Re-check and narrow false-positive patterns to make sure they
-# apply only to the relevant content.
-
-# - Scripting abilities, so as to be able to automate the removal of
-# source files or of blobs from source files in a tarball without
-# having to extract the entire tarball (as in tar --update/--delete)
-# would be nice.  Carrying over removed files automatically into
-# patches would also be great, and this sort of script would be
-# perfect to document what has been done to a tarball plus a set of
-# patches.  Something like deblob.script:
-#
-#   tarball linux-2.6.24.tar.bz2
-#   delete net/wireloss/freedom.c drivers/me/crazy.c
-#   deblob include/linux/slab-blob-kfree.h
-#   deconfig drivers/char/drm DRM_IS_BAD
-#
-#   patch patch-2.6.25-rc7.bz2
-#   delete arch/power/over/you.c
-
-# such that the deletes from an earlier file would carry over into the
-# subsequent ones, and new tarballs and patch files would be generated
-# with the libre- prefix in their basename, and the xdeltas between
-# the original files and the modified files would be minimal, and
-# redundant with this script and the input script while at that.
-
-# - Improve documentation of the code.
-
-# - Write a decent testsuite.
-
-# - Insert your idea here. :-)
-
-# Yeah, lots of stuff to do.  Want to help?
-
-# This makes it much faster, and mostly immune to non-ASCII stuff, as
-# long as a 8-bit-safe sed is used.  Probably a safe assumption these
-# days.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-rm="rm -f"
-
-for echo in 'echo' 'printf %s\n'; do
-  case `$echo '\nx'` in
-  '\nx') break;;
-  esac
-done
-case `$echo '\nx'` in
-'\nx') ;; *) echo Cannot find out what echo to use >&2; exit 1;;
-esac
-
-for echo_n in "echo -n" "printf %s"; do
-  case `$echo_n '\na'; $echo_n '\nb'` in
-  '\na\nb') break;;
-  esac
-done
-case `$echo_n a; $echo_n b` in
-'ab') ;; *) echo Cannot find out an echo -n equivalent to use >&2; exit 1;;
-esac
-
-case $1 in
---save-scripts | -S)
-  shift
-  rm="echo preserving"
-  ;;
-esac
-
-# Choose verbosity level for sed script debugging and performance
-# analysis.
-case $1 in
---verbose | -v)
-  shift
-  case $1 in
-  --verbose | -v)
-    shift
-    v="i\\
-:
-p
-i\\
-"
-    vp="2"
-    ;;
-  *)
-    v="P;i\\
-"
-    vp="1"
-    ;;
-  esac
-  ;;
-*)
-  v="# "
-  vp="0"
-  ;;
-esac
-
-sens=31 # 32 - 1
-case $1 in
---sensitivity | -s)
-  sens=$2;
-  shift 2 || exit 1
-
-  if test "$sens" -gt 0 2>/dev/null; then
-    :
-  else
-    echo invalid sensitivity: $sens >&2
-    exit 1
-  fi
-
-  sens=`expr $sens - 1`
-  ;;
-esac
-
-reverse_patch=false
-case $1 in
---reverse-patch)
-  reverse_patch=:
-  shift;
-  ;;
-esac
-
-prefix=/
-case $1 in
---implied-prefix | --prefix| -i)
-  prefix=$2
-  case $prefix in
-  /*/) ;;
-  */) prefix=/$prefix ;;
-  /*) prefix=$prefix/ ;;
-  *) prefix=/$prefix/ ;;
-  esac
-  shift 2 || exit 1
-  ;;
-esac
-
-test_mode=false
-
-name=deblob-check
-
-set_eqscript_main () {
-  $set_main_cmd "$@"
-}
-
-set_eqscript_cmd () {
-  set_eqscript_main "list_blob"
-}
-
-set_sed_cmd () {
-  set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-}
-
-set_flex_cmd () {
-  set_flex_main
-}
-
-set_save_script_input_cmd () {
-  set_save_script_input_main
-}
-
-set_cmd=set_eqscript_cmd
-if (${PYTHON-python} --version) > /dev/null 2>&1; then
-  # Python will exhibit exponential behavior processing some regular
-  # expressions, but we may have already fixed them all.  (see
-  # http://swtch.com/~rsc/regexp/regexp1.html for details)
-  set_main_cmd=set_python_main
-elif (${AWK-gawk} --re-interval --version) > /dev/null 2>&1; then
-  # GNU awk works fine, but it requires --re-interval to accept regexp
-  # ranges, which we rely on to match blobs.  We could expand the blob
-  # on our own, but, yuck.
-  set_main_cmd=set_awk_main
-elif (${PERL-false} --version) > /dev/null 2>&1; then
-  # Don't choose perl by default.  Besides the potential for
-  # exponential behavior, we exceed some internal recursion limits.
-  set_main_cmd=set_perl_main
-else
-  # Sed takes GBs of RAM to compile all the huge regexps in the sed
-  # script we generate with all known false positives and blobs in
-  # Linux.  However, it is somewhat faster than GNU awk and even
-  # python for long runs.
-  # Try it: deblob-check --use-sed linux-2.6.32.tar.bz2
-  set_cmd=set_sed_cmd
-fi
-
-case $1 in
---use-python)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_python_main;
-  ;;
-
---use-perl)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_perl_main;
-  ;;
-
---use-awk)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_awk_main;
-  ;;
-
---use-sed)
-  shift;
-  set_cmd=set_sed_cmd;
-  ;;
-
---gen-flex)
-  shift;
-  set_cmd=set_flex_cmd;
-  ;;
-
---save-script-input)
-  shift;
-  set_cmd=set_save_script_input_cmd;
-  ;;
-esac
-
-case $1 in
---version | -V)
-  ${SED-sed} -e '/^# '$name' version /,/^# Written by/ { s/^# //; p; }; d' < $0
-  exit 0
-  ;;
-
--\? | -h)
-  ${SED-sed} -n -e '/^# usage:/,/# -h/ { /^# -/,/^$/{s/^# \(-.*\):.*/\1/p; d; }; s/^\(# \?\)\?//p; }' < $0 &&
-  echo
-  echo "run \`$name --help | more' for full usage"
-  exit 0
-  ;;
-
---help | -H)
-  ${SED-sed} -n -e '/^# '$name' version /,/^[^#]/ s/^\(# \?\)\?//p' < $0
-  exit 0
-  ;;
-
---test | -t)
-  test_mode=:
-  ;;
-
---mark-false-positives | -p)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_both" "p" "b list_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = without_falsepos"
-  }
-  ;;
-
---print-marked-false-positives | -f)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_matches" "" "b print_marked_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_falsepos = print_falsepos"
-  }
-  ;;
-
---print-false-positives | -F)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_matches" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_falsepos"
-  }
-  ;;
-
---deblob | --mark-blobs | -d)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_blobs" "p" "p"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---cat | -D)
-  shift;
-  set_sed_cmd () {
-    set_sed_main \
-      "# sedcat: Actual blob detected, but there may be false positives." \
-      "# sedcat: No blob whatsoever found." \
-      "# sedcat: False positives found." \
-      "p
-d
-# sedcat: Just print stuff, remove this line to run the actual script."
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---print-marked-blobs | -b)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs | -B)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob"
-  }
-  ;;
-
---print-marked-blobs-with-context | -c)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs-with-context | -C)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = print_blob"
-  }
-  ;;
-
---list-false-positives | -P)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_falsepos"
-  }
-  ;;
-
---list-all-matches | -x)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_blob = list_falsepos"
-  }
-  ;;
-
---print-all-matches | -X)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_both" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos"
-  }
-  ;;
-
-*)
-  case $1 in
-  --list-blobs | -l) shift;;
-  esac
-  case $1 in
-  -- | --implied-prefix | --prefix | -i) ;;
-  -*)
-    if test ! -f "$1"; then
-      echo "$name: \`$1' given too late or out of the proper sequence." >&2
-      echo "$name: The order of arguments is significant, see the usage." >&2
-      exit 1
-    fi
-    ;;
-  esac
-  ;;
-
-esac
-
-case $1 in
---)
-  sawdashdash=t
-  shift;;
-esac
-
-if $test_mode; then
- allpass=:
- for tool in awk perl python sed; do
-  echo testing $tool...
-
-  targs="-s 4 -i /deblob-check-testsuite/ --use-$tool"
-
-  pass=:
-
-
-  # Exercise some nasty inputs to see that we
-  # recognize them as blobs with full context.
-  test="positive context"
-  for string in \
-    "1,2,3,4" \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-    ".long 1,2
-     .long \$3,\$4" \
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-    "= {
-blob(
-)
-accept(
-)
-1, 2, 3, 4
-}" \
-  ; do
-    case `echo "$string" | $0 $targs -C` in
-    "::: - :::
-$string") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we do not recognize these as blobs.
-  test=negative
-  for string in \
-    "#define X { 1, 2 }
-#define Y { 3, 4 }" \
-    " 0x00, 0x00, 0x00 " \
-    "accept(1, 2, 3,
-4, 5, 6)" \
-  ; do
-    case `echo "$string" | $0 $targs` in
-    "") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we print only the lines with blobs.
-  test="only blob"
-  odd=:
-  for string in \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-	"1, 0x2, 03, L'\x4'" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long 1,2
-     .long \$3,\$4" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { 1, 2, \\
-		 3, 4, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   0x4c00c000, 0x00000000, 0x00060000, 0x00000000," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6, 7, 8;
-9, 10, 11" \
-      "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-::: - :::
-1, 2, 3, 4; 5, 6, 7, 8;" \
-\
-    "= {
-blob()
-accept()
-1, 2, 3, 4
-}" \
-	"blob()
-::: - :::
-1, 2, 3, 4" \
-\
-    "a blobeol y
-x" \
-	"a blobeol y
-x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -B` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # Make sure we deblob only the blobs.
-  test="deblobs"
-  odd=:
-  for string in \
-    "= { 1, 0x2, 03, L'\x4' }" \
-	"= { /*(DEBLOBBED)*/' }" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x/*(DEBLOBBED)*/\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long /*(DEBLOBBED)*/" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { /*(DEBLOBBED)*/, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   /*(DEBLOBBED)*/," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6; 7, 8, 9, 10;
-9, 10, 11" \
-      "/*(DEBLOBBED)*/
-::: - :::
-/*(DEBLOBBED)*/; 5, 6; /*(DEBLOBBED)*/;" \
-\
-    "= {
-accept() blob() x blob(
-) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "= {
-accept() blob() x blob(
-w) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "a blobeol y
-x" \
-	"a /*(DEBLOBBED)*/x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -b` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # How did we do?
-  if $pass; then
-    echo success for $tool
-  else
-    allpass=$pass
-  fi
- done
- $allpass
- exit
-fi
-
-# Call addx as needed to set up more patterns to be recognized as
-# false positives.  Takes the input filename in $1.
-
-set_except () {
-  blob "$blobseq"
-  # We leave out the initial and final letters of request_firmware so
-  # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
-  blobna 'equest_firmwar'
-  blobna 'equest_ihex_firmwar'
-  blobna 'MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\([ 	\n]*MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\)*'
-  blobna 'DEFAULT_FIRMWARE'
-  blobna '\([.]\|->\)firmware[ 	\n]*=[^=]'
-  blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\)["]'
-  # Ideally we'd whitelist URLs that don't recommend non-Free
-  # Software, but there are just too many URLs in Linux, and most are
-  # fine, so we just blacklist when we find undesirable URLs.
-  # Please report if you find any inappropriate URL in Linux-libre
-  # deblobbed documentation, sources or run-time log messages.
-  # blobna '\(f\|ht\)tp:[/]\([/]\+[^/ \n ]\+\)\+'
-
-  case $prefix$1 in
-  */*linux*.tar* | */*kernel*.tar* | */*linux-*.*/*)
-    # false alarms, contain source
-    # drivers/net/wan/wanxlfw.inc_shipped -> wanxlfw.S
-    accept 'static[ ]u8[ ]firmware\[\]=[{][\n]0x60,\(0x00,\)*0x16,\(0x00,\)*\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*[\n]0x23,0xFC,0x00,0x00,0x00,0x01,0xFF,0xF9,0x00,0xD4,0x61,0x00,0x06,0x74,0x33,0xFC,\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*0x00[\n][}][;]'
-    # drivers/usb/serial/xircom_pgs_fw.h -> xircom_pgs.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]xircom_pgs_firmware\[\][ ]='
-    # drivers/usb/serial/keyspan_pda_fw_h -> keyspan_pda.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]keyspan_pda_firmware\[\][ ]='
-    # arch/m68k/ifpsp060/*.sa -> src/*.s
-    accept '[	]\.long[	]0x60ff0000,0x02360000,0x60ff0000,0x16260000[\n]'"$sepx$blobpat*"
-    accept '[	]\.long[	]0x60ff0000,0x17400000,0x60ff0000,0x15f40000[\n]'"$sepx$blobpat*"
-    # arch/powerpc/platforms/cell/spufs/spu_save_dump.h_shipped -> spu_save.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_save_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped -> spu_restore.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_restore_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # drivers/net/ixp2000/ixp2400_tx.ucode -> ixp2400_tx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    # drivers/net/ixp2000/ixp2400_rx.ucode -> ixp2400_rx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-
-
-    # checked:
-
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    accept '__clz_tab:[\n][	]\.byte[	]0\(,[0-5]\)\+'"$sepx$blobpat*" arch/sparc/lib/divdi3.S
-    accept 'PITBL:[\n][ ][ ]\.long[ ][ ]0xC0040000,0xC90FDAA2,'"$blobpat*" arch/sparc/lib/divdi3.S
-    accept '\(0x[0F][0F],\)\+\\[\n]\(\(0x[0F][0F],\)\+\\[\n]\)*\(0x[0F][0F],\)\+0x00' arch/m68k/mac/mac_penguin.S
-    accept '\.lowcase:[\n][	]\.byte[ ]0x00\(,0x0[1-7]\)\+'"$sepx$blobpat*"'$' arch/s390/kernel/head.S
-    accept '_zb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]0\(,[123],0\)\+,4'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '_sb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]8\(,0,[123]\)\+,0'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]cpu_745x\[2\]\[16\][ ]=' arch/ppc/platforms/ev64260.c
-    initnc 'const[ ]unsigned[ ]char[ ]__flsm1_tab\[256\][ ]=' arch/alpha/lib/fls.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    initc '[	]static[ ]int[ ][ ][ ][ ][ ][ ]init_values_b\[\][ ]=' sound/oss/ad1848.c
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set2_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix\.txt|Documentation/serial/specialix\.txt'
-    accept '[ ][ ][ ][ ][ ][ ][ ][ ][ ]:[ ][ ][ ]3600000[ ][ ][ ]3400000[ ][ ][ ]3200000[ ][ ][ ]3000000[ ][ ][ ]2800000[ ]' Documentation/cpu-freq/cpufreq-stats.txt
-    accept '00[ ]00[\n]64[ ]01[\n]8e[ ]0b[\n][\n][0-9a-f \n]*fe[ ]fe' 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0f[ ]00[ ]08[ ]08[ ]64[ ]00[ ]0a[ ]00[ ]-[ ]id[ ]0[\n]'"$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept 'default[ ]nvram[ ]data:'"$sepx$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0x0458[ ][ ][ ][ ][ ]0x7025[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    accept '[ ][ ][(]gdb[)][ ]x[/]100x[ ][$]25[\n][ ][ ]0x507d2434:[ ][ ][ ][ ][ ]0x507d2434[ ][ ][ ][ ][ ][ ]0x00000000[ ][ ][ ][ ][ ][ ]0x08048000[ ][ ][ ][ ][ ][ ]0x080a4f8c'"$sepx$blobpat*" Documentation/uml/UserModeLinux-HOWTO.txt
-    accept '[ ][ ][ ][ ][ ][ ]1[ ][ ]0[ ][ ]0[ ][ ]0[ ][ ]0x308'"$sepx$blobpat*" Documentation/isdn/README.inc
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$' Documentation/sched-stats.txt
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync.c|net/sctp/sm_make_chunk.c|include/linux/scpt.h'
-    accept '[ ][*][ ][ ]1[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0' arch/x86/lguest/boot.c
-    ocomment '[	][/][*][ ]Configure[ ]the[ ]PCI[ ]bus[ ]bursts[ ]and[ ]FIFO[ ]thresholds.' drivers/net/fealnx.c
-    ocomment '[/][*][ ]the[ ]original[ ]LUT[ ]values[ ]from[ ]Alex[ ]van[ ]Kaam[ ]<darkside@chello\.nl>' drivers/hwmon/via686a.c
-    initc 'static[ ]const[ ]unsigned[ ]char[ ]init\[\][ ]=[ ][{][^;]*MODE=0[ ][;].*SAA_7114_NTSC_HSYNC_START' drivers/media/video/saa7114.c
-
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    # initnc '[ 	]*\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ \n	]*=[ ][{"]' 'crypto/\(tcrypt\|testmgr\).h'
-
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/delkin_cb\.c\|drivers/ide/pci/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]u8[ ]tas3004_treble_table\[\][ ]=' sound/aoa/codecs/tas-basstreble.h
-
-    # This file contains firmwares that we deblob with high
-    # sensitivity, so make sure the sequences of numbers that are not
-    # blobs are not deblobbed.  FIXME: we should have patterns to
-    # recognize the blobs instead.
-    defsnc '[	]static[ ]const[ ]u32[ ]test_pat\[4\]\[6\][ ]=' drivers/net/tg3.c
-    accept "[	][}]\\(,\\?[ ]mem_tbl_5\\(70x\\|705\\|755\\|906\\)\\[\\][ ]=[ ][{]$sepx$blobpat*$sepx[}]\\)*[;]" drivers/net/tg3.c
-
-    # end of generic checked expressions.
-    # version-specific checked bits start here
-
-    # removed in 2.6.28
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    # removed in 2.6.24
-    accept "[ ]Psize[ ][ ][ ][ ]Ipps[ ][ ][ ][ ][ ][ ][ ]Tput[ ][ ][ ][ ][ ]Rxint[ ][ ][ ][ ][ ]Txint[ ][ ][ ][ ]Done[ ][ ][ ][ ][ ]Ndone[\\n][ ]---------------------------------------------------------------\\([\\n][ 0-9]\\+\\)\\+"'$'
-    initnc 'static[ ]u_short[ ]ataplain_map\[NR_KEYS\][ ]__initdata[ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]char[ ]invert5\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]alpa2target\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]target2alpa\[\][ ]='
-    oprepline '#define[ ]INIT_THREAD[ ][{0},]\+[ 	]*\\[\n][ 	]*[{0},]\+'
-    initnc 'static[ ]uint[ ]tas300\(1c\|4\)_\(master\|mixer\|treble\|bass\)_tab\[\]='
-    initnc 'static[ ]short[ ]dmasound_[au]law2dma16\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]DACVolTable\[101\][ ]='
-
-    # removed in 2.6.23
-    initnc 'static[ ]const[ ]UQItype[ ]__clz_tab\[\][ ]=' arch/arm26/lib/udivdi3.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]scale\[101\][ ]=' sound/oss/opl3sa2.c
-    initnc '[}][ ]syncs\[\][ ]=' drivers/scsi/53c7xx.c
-    initnc 'genoa_md:'"$sepx$blobpat*"'[\n][	]\.ascii[	]["]Genoa["]' arch/i386/boot/video.S
-
-    # removed in 2.6.22
-    initnc 'Vendor[ ]ID[ ][ ]Product[ ]ID[\n]-\+[ ][ ]-\+[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    defsnc 'static[ ]short[ ][au]law2dma16\[\]' arch/ppc/8xx_io/cs4218_tdm.c
-    defsnc '[	]static[ ]const[ ]char[ ]minimal_ascii_table\[\]' drivers/ieee1394/csr1212.c
-    defsnc 'static[ ]u16[ ]key_map[ ]\[256\][ ]=' drivers/media/dvb/ttpci/av7110_ir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]gf64_inv\[64\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]short[ ]err_pos_lut\[4096\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]testdata\[TESTDATA_LEN\][ ]=' fs/jffs2/comprtest.c
-
-    # added in 2.6.25
-    accept "%canned_values[ ]=[ ][(][\\n][	]\\([0-9]\\+[ ]=>[ ]\\[[ 	\\n]\\+\\(\\([0-9]\\+\\|\\'0x[0-9a-f]\\+\\'\\),[ 	\\n]*\\)*\\]\\(,[ ]\\|[\\n]\\)\\)*[)][;]"
-
-    # from 2.6.25-rc* patches
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-
-    # new in 2.6.26
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf24\(13\|25\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-
-    # new in 2.6.27
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca561\|rev72a\)_init_data3\?\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]\(__\)\?u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_\(agc\|ofdm\|power_cck\(_ch14\)\?\)\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' Documentation/bt8xxgpio.txt
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]\(UINT32\|u32\)[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_b\[\][ ]=' drivers/net/wireless/rt2x00/rt2400pci.c
-
-    # request_firmware matches for 2.6.28
-    accept 'D:[ ]Firmware[ ]loader[ ][(]request_firmware[)]' CREDITS
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept 'This[ ]driver[ ]requires[ ]a[ ]patch[ ]for[ ]firmware_class[^\n]*[\n]request_firmware_nowait[ ]function\.' Documentation/dell_rbu.txt
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept 'Still,[ ]there[ ]are[ ]kernel[ ]threads[ ]that[ ]may[ ]want.*For[ ]example,[ ]if[ ]request_.*_firmware[(][)][ ]will[ ]fail[ ]regardless' Documentation/power/freezing-of-tasks.txt
-    accept 'Also,[ ]there[ ]may[ ]be[ ]some[ ]operations,.*calling[ ]request_firmware[(][)][ ]from[ ]their[ ].resume[(][)][ ]routines' Documentation/power/notifiers.txt
-    accept 'There[ ]is[ ]an[ ]USB[ ]interface[ ]for[ ]downloading[/]uploading.*request_firmware[ ]interface\.' Documentation/video4linux/si470x.txt
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    accept 'config[ ]FIRMWARE_IN_KERNEL.*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware:[ ]-[ ]send[ ]firmware[ ][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[^{]*[\n][{]\([\n]\+[^\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][	]return[ ]-EINVAL[;][\n][}]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-
-    accept 'static[ ]inline[ ]int[ ]request_ihex_firmware\?[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' include/linux/ihex.h
-    ocomment '[/][*][ ]Optional[ ]firmware\([^\n]*[\n][ ][*]\)*[^\n]*[ ]MODULE_FIRMWARE[(][)]'
-    oprepline '#define[ ]MODULE_FIRMWARE[(]_firmware[)]' include/linux/module.h
-    accept '[ ][*][ ]Sample[ ]code[ ]on[ ]how[ ]to[ ]use[ ]request_firmware[(][)][ ]from[ ]drivers\.' samples/firmware_class/firmware_sample_driver.c
-    accept '[	]\(retval\|error\)[ ]=[ ]request_firmware\(_nowait\)\?[(][^;]*["]sample_driver_fw["],[^;]*[)][;]' samples/firmware_class/firmware_sample_driver.c
-    ocomment '[	][/][*][ ]request_firmware[ ]blocks[ ]until[ ]userspace[ ]finished' samples/firmware_class/firmware_sample_driver.c
-    accept '[	][	][ 	]*["][ ]request_firmware_nowait[ ]failed' samples/firmware_class/firmware_sample_driver.c
-
-    # We used to remove these in early versions of Linux-libre.
-    # They're now believed to be mere initialization data, rather than
-    # code disguised as such, and they're not long enough so as to
-    # render the software non-Free.
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\|IPA_PDU_HEADER\|\(READ\|WRITE\)_CCW\)\[\][ ]=' drivers/net/qeth_core_mpc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]\(sync\|magic[0-3]\)_data\[\][ ]=' arch/sh/boards/mach-migor/lcd_qvga.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ov772x_magic\[\][ ]=' arch/sh/boards/mach-migor/setup.c
-    defsnc 'static[ ]struct[ ]chips_init_reg[ ]chips_init_[sgacfx]r\[\][ ]=' 'drivers/video/\(asiliant\|chips\)fb.c'
-
-    # This one is quite suspicious, but it's small enough (64 bytes
-    # total) that it's believable that it could be actual source code.
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-
-    # Hunting down non-Free firmware-loading code and instructions.
-    # Firmware names are to be caught anywhere.
-
-    # 2.6.26 but not later
-
-    blobname 'atmsar1[12]\.\(x\|start\|regions\|data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|ambassador\.c\)'
-    blob '#\(define\|include\)[ ]UCODE2\?[(][^\n]*' drivers/atm/ambassador.c
-    blob 'static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]' drivers/atm/ambassador.c
-    blob '\(#\(ifdef[ ]AMB_NEW_MICROCODE\|else\|endif\)[\n]#\(define\|include\)[ ]UCODE2\?[(][^\n]*[\n]\)\+\([\n]*static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]\)*' drivers/atm/ambassador.c
-
-    blobname '\(pca\|sba\)200e\(_ecd\)\?\.\(data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|fore200e\(_mkfirm\)\?\.c\)'
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*PCA-200E[ ]firmware[ ][*][/]' drivers/atm/fore200e_mkfirm.c
-    blobna '_fore200e_\(pca\|sba\)_fw_\(data\|size\)' drivers/atm/fore200e.c
-    blob '#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\([\n]\+#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\)*' drivers/atm/fore200e.c
-
-    # 2.6.27 but not later
-
-    blob 'cas_saturn_patch_t[ ]cas_saturn_patch\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/cassini.h
-    accept '[	][ ][ ]firmware[ ]files[ ]--[ ]the[ ]same[ ]names[ ]which[ ]appear[ ]in[ ]MODULE_FIRMWARE[(][)]' drivers/base/Kconfig
-
-    # 2.6.28 or earlier
-
-    blobname 'atmsar11\.fw' drivers/atm/ambassador.c
-
-    blob '\(#ifdef[ ]__\(LITTLE\|BIG\)_ENDIAN[\n]\)\?#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\([\n]#else[\n]#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\)*\([\n]#endif\)\?' drivers/atm/fore200e.c
-    blobna 'sprintf[(][^;]*fore200[^;]*FW_EXT[^;]*[)][;]' drivers/atm/fore200e.c
-    blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]\?' drivers/atm/fore200e.c
-    blobna 'The[ ]supplied[ ]firmware[ ]images.*http:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
-
-    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[ ]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]\+[}]\)\([\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]*\)*[^\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]*[\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]_\(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}][^\n]*\)*cp_microcode[^\n]*\([\n]\+[^\n}][^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    blobna 'Please[ ]use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
-    blob 'To[ ]extract[ ]the[ ]firmware[^\n]*Opera[ ]DVB-S1[ ]USB-Box.*[/]lib[/]firmware[/][ ]\.' Documentation/dvb/opera-firmware.txt
-    blobname '\(dvb-usb-opera[^\n]*\.fw\|2830S[^\n]*2\.sys\)' Documentation/dvb/opera-firmware.txt
-    blob 'Getting[ ]the[ ]Firmware\([\n][^\n]\+\)*' Documentation/dvb/ttusb-dec.txt
-
-    blob '[/][*][\n 	]*File[ ]automatically[ ]generated[ ]by[ ]createinit\.py[ ]using[ ]data[\n 	]*extracted[ ]from[ ]AF05BDA\.sys.*[}][;]' drivers/media/dvb/dvb-usb/af9005-script.h
-    blob '#include[ ]["]af9005-script\.h["]' drivers/media/dvb/dvb-usb/af9005-fe.c
-    blobna '[\n][	]scriptlen[ ]=[ ]sizeof[(]script[)][^;]*[;][\n][	]for[^{]*scriptlen[^{]*[{][^}]*[^\n	}]' drivers/media/dvb/dvb-usb/af9005-fe.c
-
-    accept 'struct[ ]\(sp8870\|tda1004x\)_config[\n][{][^}]*[(][*]request_firmware[)][^}]*[\n][}][;]' 'drivers/media/dvb/frontends/\(sp8870\|tda1004x\)\.h'
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*get_dvb_firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n]\(#define[ ]\(\([^\n 	]*_DEFAULT\|NONFREE\)_FIRMWARE\|["][^"]*["]\)[ ]\([^\n]\|[\\][\n]\)*\|[/][*][(]DEBLOBBED[)][*][/]\)\)*' 'drivers/media/dvb/frontends/\(nxt200x\|or51211\|sp887[0x]\|tda1004[8x]\)\.c'
-    blobname 'dvb-fe-sp8870\.fw' drivers/media/dvb/frontends/sp8870.c
-    blobname 'dvb-fe-tda1004[56]\.fw' drivers/media/dvb/frontends/tda1004x.c
-
-    # This bootcode is actually Free Software under GPLv2, but since it's
-    # being distributed without source code, we're taking it out.
-    blob 'static[ ]u8[ ]bootcode\[\][ ]=[ ][{][^}]*[}][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    blobname 'dvb-ttpci-01\.fw' drivers/media/dvb/ttpci/av7110.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-
-    blobname 'ttusb-budget[/]dspbootcode\.bin' drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-
-    blobname 'cpia2[/]stv0672_vp4\.bin' drivers/media/video/cpia2/cpia2_core.c
-
-    blobname 'dabusb[/]\(firmware\.fw\|bitstream\.bin\)' drivers/media/video/dabusb.c
-
-    blob 'static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\([\n]static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\)*' drivers/net/acenic_firwmare.h
-    blob '#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\([\n]#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\)\+' drivers/net/acenic_firmware.h
-    blob '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Do[ ]not[ ]try[ ]to[ ]clear[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n][	]\)\?ace_clear[^;]*[;][\n]\([^}]*[{][^}]*ace_copy[^}]*tigon2\?Fw[^}]*[}]\)*[\n]\+[	]return[ ]0[;][\n][}]' drivers/net/acenic.c
-    blob 'if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\([\n][	]if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\)*' drivers/net/acenic.c
-
-    blob '#include[ ]["]starfire_firmware\.h["]' drivers/net/starfire.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Load[ ]Rx[/]Tx[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n][	]for[ ][(][^)]*FIRMWARE_[RT]X_SIZE[^)]*[)][\n][	][	]writel[^;]*firmware_[rt]x[^;]*[;]\)\+' drivers/net/starfire.c
-
-    blob 'static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\)*' 'drivers/net/bnx2_fw2\?.h'
-    blob '#include[ ]["]bnx2_fw\.h["][\n][\n]*#include[ ]["]bnx2_fw2\.h["]' drivers/net/bnx2.c
-    blob 'static[ ]void[\n]load_rv2p_fw[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-    blob 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-
-    # init_data_e1h? might actually be just data, but it doesn't
-    # really matter.
-    blob 'static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\)*' drivers/net/bnx2x_init_values.h
-    blob 'static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\([\n][\n]*static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\)*' 'drivers/net/bnx2x_init\(_ops\)\?\.h'
-
-    blobname 'sun[/]cassini\.bin' drivers/net/cassini.c
-
-    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 '\(cxgb3[/]\)\?t3\(fw\|\(%c\|.\)_p\(rotocol_\)\?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]*[/][*][^*]*\([*]\+\([^/*]\|[/][\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
-
-    blob 'static[ ]unsigned[ ]char[ ]__devinitdata[ ]lanai4_\(code\|data\)\[[0-9]*\][ ]=[ ][{][^;]*[}][;]' drivers/net/myri_code.h
-    blob '#include[ ]["]myri_code\.h["]' drivers/net/myri_sbus.c
-    blobna '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_code_off[^;]*[;]\([\n	 ]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_\(code\|data\)_off[^;]*[;]\)*' drivers/net/myri_sbus.c
-
-    blob 'static[ ]u32[ ]s_firmLoad\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/tehuti_fw.h
-    blobna 'bdx_tx_push_desc_safe[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-    blobna 'for[ ][(][^\n]*ARRAY_SIZE[(]s_firmLoad[)][^\n]*[)][\n	 ]*s_firmLoad[^;]*=[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-
-    blob '[ ][*][ ]Firmware[ ]is:[\n][ ][*][	]Derived[ ]from[ ]proprietary[^/]*notice[ ]is[ ]accompanying[ ]it\.[\n][ ][*][/]' drivers/net/tg3.c
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blob '\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*\(static[ ]const[ ]u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\|#if[ ]0\([ ][/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?[\n]\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;][\n]#endif\)\)*' drivers/net/tg3.c
-
-    blob 'static[ ]const[ ]u8[ ]typhoon_firmware_image\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/typhoon-firmware.h
-
-    blobna 'licensed[^\n]*strictly[ ]for[ ]use[^\n]*[\n]*[^\n]*COPS[ ]LocalTalk' 'drivers/net/appletalk/cops_\(ff\|lt\)drv\.h'
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]ffdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ffdrv.h
-    blob 'static[ ]const[ ]unsgined[ ]char[ ]ltdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ltdrv.h
-    blob '#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/net/appletalk/cops.c
-
-    blob 'static[ ]unsigned[ ]char[ ]bits_1200\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam1200.h
-    blob 'static[ ]unsigned[ ]char[ ]bits_9600\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam9600.h
-    blob '#include[ ]["]yam\(96\|12\)00\.h["]\([\n][\n]*#include[ ]["]yam\(96\|12\)00\.h["]\)*' drivers/net/hamradio/yam.c
-
-    blobna 'static[ ]const[ ]u_char[ ]__Xilinx7OD\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/pcmcia/ositech.h
-    blob '#include[ ]["]ositech\.h["]' drivers/net/pcmcia/smc91c92_cs.c
-    blobna '\([/][*][ ]Download[ ]the[ ]Seven[ ]of[ ]Diamonds[ ]firmware[^/]*[*][/][\n	 ]*\)\?for[ ]*[(][^\n]*__Xilinx7OD[^{}]*[{][\n][	 ]*outb[ ]*[(]__Xilinx7OD[^}]*[}]' drivers/net/pcmcia/smc91c92_cs.c
-
-    blob 'static[ ]const[ ]u8[ ]microcode\[\][ ]=[ ][{][^}]*[}][ ]*[;]' drivers/net/tokenring/3c359_microcode.h
-    blob '#include[ ]["]3c359_microcode\.h["]' drivers/net/tokenring/3c359.c
-    blobna 'start[ ]=[ ][(]0xFFFF[ ]-[ ][(]mc_size[)][^;]*[;][\n 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n 	]*printk[(]KERN_INFO[ ]["]3C359:[ ]Uploading[ ]Microcode:[ ]["][)][;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\([\n][ 	]*printk[^\n]*[;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\)*' drivers/net/tokenring/3c359.c
-
-    blobname 'tr_smctr\.bin' drivers/net/tokenring/smctr.c
-
-    blobname 'kaweth[/]\(new\|trigger\)_code\(_fix\)\?\.bin' drivers/net/usb/kaweth.c
-
-
-    blobname '\(agere\|prism\)_\(sta\|ap\)_fw\.bin' 'drivers/net/wireless/\(orinico/\)\?\(orinoco\|fw\)\.c'
-    blobname 'symbol_sp24t_\(prim\|sec\)_fw' 'drivers/net/wireless/\(\(orinico/\)\?orinoco\.c\|spectrum_cs\.c\)'
-
-    blob 'unsigned[ ]short[ ]sbus_risc_code01\[\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]' drivers/scsi/qlogicpti_asm.c
-    blob '#include[ ]["]qlogicpti_asm\.c["]' drivers/scsi/qlogicpti.c
-
-    blob '\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/scsi/advansys.c
-
-    blob '\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc\|fw12\(80e\|160\)i\)_code01\[\][ ]=[ ][{]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code01\[\][ ]=[ ][{][\n]#endif[\n]\)\?[^}]*[}][;]\([\n][\n]*\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc_code\|fw12\(80e\|160\)i\)_length01[ ]=[ ][^;]*[;]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code_length01[ ]=[ ][^;]*[;][\n]#endif\)\?\)\?' 'drivers/scsi/ql1\(04\|2\(8\|16\)\)0_fw\.h'
-
-    blobname 'emi26[/]\(bitstream\|firmware\|loader\)\.fw' drivers/usb/misc/emi26.c
-
-    blobname 'emi62[/]\(bitstream\|midi\|spdif\|loader\)\.fw' drivers/usb/misc/emi62.c
-
-    blobname 'keyspan[/]\(mpr\|usa\(18x\|19\(q[iw]\|w\)\?\|28\(x\(a\|b\)\?\)\?\|49w\(lc\)\?\)\)\.fw' drivers/usb/serial/keyspan.c
-
-    accept '[	][	]fw_name[ ]=[ ]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][;]' drivers/usb/serial/keyspan_pda.c
-    blobna 'fw_name[ ]=[ ][^\n]*\([\n]\+[^\n}][^\n]*\)*\([/][*]KEYSPAN_PDA[*][/]\)\?request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-
-    blobname 'edgeport[/]\(boot\|down\)2\?\.fw' drivers/usb/serial/io_edgeport.c
-    blobname 'edgeport[/]down3\.bin' drivers/usb/serial/io_ti.c
-
-    blobname 'ti_\(usb-\)\?\(%d\|3410\|5052\)\.\(fw\|bin\)' drivers/usb/serial/ti_usb_3410_5052.c
-
-    blobname 'whiteheat\(_loader\(_debug\)\?\)\?\.fw' drivers/usb/serial/whiteheat.c
-
-    blob 'static[ ]struct[ ]BA1struct[ ]BA1Struct[ ]=[ ][{][^;]*[}][;]' sound/pci/cs46xx/cs46xx_image.h
-
-    blob 'static[ ]u32[ ]cwc\(4630\|async\|snoop\)_\(code\|parameter\)\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(4630\|async\|snoop\)\.h'
-    # cwcbinhack appears to have been created by hand.
-    # cwcdma has sources (not verified) in cwcdma.asp.
-    accept 'static[ ]u32[ ]cwc\(binhack\|dma\)_code\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(binhack\|dma\)\.h'
-    blob '#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\([\n][\n]*#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\)*' sound/pci/cs46xx/cs46xx_lib.c
-
-    blobname 'korg[/]k1212\.dsp' sound/pci/korg1212/korg1212.c
-
-    blobname 'ess[/]maestro3_assp_\(kernel\|minisrc\)\.fw' sound/pci/maestro3.c
-
-    blobname 'yamaha[/]ds1e\?_\(ctrl\|dsp\)\.fw' sound/pci/ymfpci/ymfpci_main.c
-
-    blobname 'sb16[/]\(\(a\|mu\)law_main\|ima_adpcm_\(init\|capture\|playback\)\)\.csp' sound/isa/sb/sb16_dsp.c
-
-    blob 'static[ ]const[ ]struct[ ][{][^}]*[}][ ]yss225_registers\[\][ ]__devinitdata[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/yss225.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    blobna 'firmware[ ]=[ ][&]yss225_registers_firmware[;]' sound/isa/wavefront/wavefront_fx.c
-    blob 'static[ ]const[ ]struct[ ]firmware[ ]yss225_registers_firmware[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/wavefront_fx.c
-    blobna '\(ospath[	 ]*-[ ]Pathname[^\n]*ICS2115[^-]*wavefront\.os\|Note:[ ]the[ ]firmware[ ]file[ ]["]wavefront\.os["]\)[^-]*[/]lib[/]firmware\.\([^.]*after[ ]upgrading[ ]the[ ]kernel\)\?' Documentation/sound/alsa/ALSA-Configuration.txt
-    blobname 'wavefront\.os' sound/isa/wavefront/wavefront_synth.c
-
-    blobna 'and[\n]require[ ]the[ ]use[ ]of[^\n]*propr\?ietary[^:]*' Documentation/arm/IXP4xx
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-
-    blobname 'xc\(%d\|[0-9]*\)\.bin' arch/arm/mach-netx/include/mach/xc.h
-    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 'iop_fw_load_[sm]pu' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'int[ ]iop_fw_load_[sm]pu[(]' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept '[	]retval[ ]=[ ]request_firmware[^;]*[&]iop_[sm]pu_device' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'EXPORT_SYMBOL[(]iop_fw_load_[sm]pu[)][;]' arch/cris/arch-v32/drivers/iop_fw_load.c
-
-    accept '[/][*][ ]fake[ ]device[ ]for[ ]request_firmware[ ][*][/]' arch/x86/kernel/microcode_core.c
-
-    blobname 'amd-ucode[/]microcode_amd\.bin' arch/x86/kernel/microcode_amd.c
-
-    blobname 'intel-ucode[/]\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)' 'arch/x86/kernel/microcode\(_intel\)\?\.c'
-
-    blobname 'BCM2033-\(MD\.hex\|FW\.bin\)' drivers/bluetooth/bcm203x.c
-
-    blobname 'bfubase\.frm' drivers/bluetooth/bfusb.c
-
-    blobname 'BT3CPCC\.bin' drivers/bluetooth/bt3c_cs.c
-
-    blobname 'cyzfirm\.bin' drivers/char/cyclades.c
-
-    accept 'MODULE_FIRMWARE[(]["]dsp56k[/]bootstrap\.bin["][)][;]' drivers/char/dsp56k.c
-    blobna 'const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-    accept '[	]const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-
-    blobname 'isi\(6\(08\|\(08\|16\)em\)\|46\(08\|16\)\)\.bin' drivers/char/isicom.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
-    # only issues a firmware request if specifically told to.  It
-    # doesn't require any non-Free firwmare to function, and it
-    # doesn't actually recommend users to perform updates, so I'm
-    # leaving it in.
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    accept '[	]*["]dell_rbu:%s[ ]request_firmware_nowait["]' drivers/firmware/dell_rbu.c
-
-    blobname 'xc3028-v27\.fw' drivers/media/common/tuners/tuner-xc2028.h
-    blobname 'xc3028L-v36\.fw' drivers/media/common/tuners/tuner-xc2028.h
-
-    blobname 'dvb-fe-xc5000-1\.1\.fw' drivers/media/common/tuners/xc5000.c
-
-    blobname '4210\(100[12]\|%4X\)\.sb' drivers/net/irda/irda-usb.c
-    blobna '[/][*][ 	\n*]*[ ]Known[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]*\(STIR421x\|4210\(100[12]\|%4X\)\.sb\)[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/irda/irda-usb.c
-
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobna 'If[ ]the[ ]driver[ ]can[ ]neither[ ]enable[ ]ECRC[^*]*\([*]\+[^/*][^*]*\)*[*]*myri10ge_\(rss_\)\?ethp\?_z8e\.dat[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/myri10ge.c
-
-    blobname 'spider_fw\.bin' drivers/net/spider_net.h
-
-    blobname 'tms380tr\.bin' drivers/net/tokenring/tms380tr.c
-
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    accept '[	]*priv->firmware[ ]=[ ]\(NULL\|new_firmware\)[;]' drivers/net/wireless/atmel.c
-
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname 'pcm5\.fw' drivers/net/wireless/b43/main.c
-    blobna 'b43legacyerr[(][^;]*must[ ]go[ ]to[ ]http[^;]*b43#devicefirmware[^;]*[)][;]' drivers/net/wireless/b43legacy/main.c
-    blobna 'You[ ]must[ ]go[ ]to[^;]*b43#devicefirmware[^;]*[^";)]' drivers/net/wireless/b43/main.c
-    blobna 'http:[/][/]wireless[^ ";)]*b43#devicefirmware' drivers/net/wireless/b43/main.c
-
-    blob '#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\([\n][\n]*#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname 'ipw2100-\(["]\([^"\n]\|[\\][\n]\)*["]\([^"]\|[\\]["]\)*\)\+' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '__stringify[(]IPW2100_FW_MINOR_VERSION[)]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[ ]*Portions[ ]of[ ]ipw2100_\(do_\)\?mod_firmware_load[, 	]*\(ipw2100_\(do_\)\?mod_firmware_load[, 	and\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]ipw2100_mod_firmware_load[(]fw[)][;]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobna 'if[ ][(]IPW2100_FW_MAJOR[^{]*[{][^}]*[	][}]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '["]["][ ]x[ ]["]\.fw["]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-
-    accept '[/][*][ ]Call[ ]this[ ]function[ ]from[ ]process[ ]context[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    blobname 'ipw2200-\(i\?bss\|sniffer\)\.fw' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    accept '[	][	]IPW_ERROR[(]["]%s[ ]request_firmware[ ]failed' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname 'iwlwifi-3945-' drivers/net/iwlwifi/iwl-3945.h
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    accept '#define\([ ]_\?IWL3945_MODULE_FIRMWARE[(]api[)]\)\+' drivers/net/iwlwifi/iwl-3945.h
-    accept '[	][ ][*][ ]request_firmware[(][)][ ]is[ ]synchronous' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\)\.c'
-    blobname 'iwlwifi-4965-' drivers/net/iwlwifi/iwl-4965.c
-    blobname 'iwlwifi-5\(00\|15\)0-' drivers/net/iwlwifi/iwl-5000.c
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\|idx\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'usb8388\(-5\.126\.0\.p5\)\?\.bin' drivers/net/wireless/libertas/if_usb.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*usb8388\(-5\.126\.0\.p5\)\?\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]lbs_pr_err[(]["]request_firmware\([(][)]\)\?[ ]failed' 'drivers/net/wireless/if_\(spi\|usb\)\.c'
-    blobna 'o\.[ ]Copy[ ]the[ ]firmware[ ]image[^\n]*usb8388\([^\n]\|[\n][ 	]*[^ 	\n]\)*' drivers/net/wireless/libertas/README
-    blobna '\[fw_name=usb8388[^]]*\]' drivers/net/wireless/libertas/README
-
-    blobname 'usb8388\.bin' drivers/base/Kconfig
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-
-    blobname 'lbtf_usb\.bin' drivers/net/wireless/libertas_tf/if_usb.c
-
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' '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 'rt2[56]61s\?\.bin' drivers/net/wireless/rt2x00/rt61pci.h
-    blobname 'rt73\.bin' drivers/net/wireless/rt2x00/rt73usb.h
-
-    blobname 'zd1201\(-ap\)\?\.fw' drivers/net/wireless/zd1201.c
-
-    blobname 'zd1211[/]zd1211b\?_\(u\([rb]\|phr\)\?\)\?' drivers/net/wireless/zd1211/zd_usb.c
-
-    # ??? gotta introduce some means to match false-positives
-    # including post context containing blobs, so that the macro name
-    # is not flagged or deblobbed, but the blob name is.
-    # blobna 'PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)'
-    # accept '[	]    PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(][^)]*, ["][/][*][(]DEBLOBBED[)][*][/]["][)]'
-    # accept '#define PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(]' include/pcmcia/device_id.h
-
-    # These are not software; they're Free, but GPLed without in-tree sources.
-    # blobname '\(cis[/]\)\?3CCFEM556\.cis' drivers/net/pcmcia/3c574_cs.c
-    # blobname '\(cis[/]\)\?3CXEM556\.cis' drivers/net/pcmcia/3c589_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis' drivers/net/pcmcia/pcnet_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\)\.cis' drivers/serial/serial_cs.c
-    # These are not software; they're Free, but GPLed without textual sources.
-    # It is safe to assume that these binaries *are* sources, since they
-    # can be trivially converted back to a textual form, without loss.
-    # blobname '\(cis[/]\)\?SW_\([78]xx\|555\)_SER\.cis' drivers/serial/serial_cs.c
-
-    accept '[	]\(ds_\)\?\(dev_\)\?dbg[(]\(1[,][ ]\)\?\([&]dev->dev,[ ]\)\?["]trying[ ]to[ ]load[ ]\(CIS[ ]file\|firmware\)[ ]%s[\\]n["],[ ]filename[)][;][\n]*[	]if[ ][(]\(strlen[(]filename[)][^\n]*\([{][^}]*[	][}]\|[)][\n][	]*return[^\n]*[;]\)[\n]*[	]snprintf[(]path,[ ]\(20\|sizeof[(]path[)]\),[^\n]*,[ ]filename[)][;][\n]*[	]if[ ][(]request_firmware[(][&]fw,[ ]path\|request_firmware[(][&]fw,[ ]filename\),[ ][&]dev->dev[)][^\n]*[)][ ][{][\n][	]*if[ ][(]fw->size[ ]>=[ ]CISTPL_MAX_CIS_SIZE[)]' drivers/pcmcia/ds.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\)*' drivers/net/pcnet_cs.c
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]err[ ]=[ ]request_firmware[(][&]asd_ha->bios_image,[\n 	]*filename_ptr,[\n 	]*[&]asd_ha->pcidev->dev[)][;]' drivers/scsi/aic94xx/aic94xx_init.c
-    blobname 'aic94xx-seq\.fw' drivers/scsi/aic94xx/aic94xx_seq.h
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-
-    accept '[	]res[ ]=[ ]request_firmware[(]&fw,[ ]["]sas_addr["],[ ]&shost->shost_gendev[)][;]' drivers/scsi/libsas/sas_scsi_host.c
-
-    blobname 'ql\(2\([12345]00\|322\)\|8[12]00\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]' drivers/scsi/qla2xxx/Kconfig
-
-    blobname 'icom_\(asc\|res_dce\|call_setup\)\.bin' drivers/serial/icom.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\|net/wireless\)/at76_usb/at76_usb\.c\|at76c50x-usb\.c\)'
-
-    accept 'static[ ]struct[ ]go7007_usb_board[ ]board_\(matrix_\(ii\|reload\|revolution\)\|star_trek\|px_tv402u\|xmen\|lifeview_lr192\|endura\|adlink_mpg24\|sensoray_2250\)[ ]=[ ][{][\n]\([	]\.flags[ 	]*=[ ][^",]*,[\n]*\)*[	]\.main_info[ 	]*=[ ][{][\n][	][	]\.firmware[ 	]*=[ ]' drivers/staging/go7007/go7007-usb.c
-    accept 'static[ ]struct[ ]go7007_board_info[ ]board_voyager[ ]=[ ][{][\n][	]\.firmware[	 ]*=[ ]' drivers/staging/go7007/saa7134-go7007.c
-    blobname 'go7007\(fw\|tv\)\.bin' 'drivers/staging/go7007/\(go7007-\(driver\|usb\)\|saa7134-go7007\)\.c'
-
-    blobname 'cxacru-\(%s\|fw\|bp\|cf\)\.bin' drivers/usb/atm/cxacru.c
-
-    blobname 'speedtch-\(%d\|[0-9]*\)\.bin\(\.\(%x\|\(0x\)\?[0-9a-fA-F]*\)\(\.\(%02x\|[0-9a-fA-F][0-9a-fA-F]\)\)\?\)\?' drivers/usb/atm/speedtch.c
-
-    blobname 'ueagle-atm[/]' drivers/usb/atm/ueagle-atm.c
-    blobname '\(adi930\|eagle\(I*\|IV\)\)\.fw' drivers/usb/atm/ueagle-atm.c
-    blobname 'DSP[49e][ip]\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname '930-fpga\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-
-    blobname 'isight\.fw' drivers/usb/misc/isight_firwmare.c
-
-    blobname '\(i1480-\(pre-phy\|usb\|phy\)\|ptc\)-0\.0\.bin' drivers/uwb/i1480/dfu/usb.c
-
-    accept '[	]retval[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]metronome\.wbf["],[ ][&]dev->dev[)][;]' drivers/video/metronomefb.c
-
-    blobname '\(vx[/]\)\?\(bx_1_v\(xp\|p4\)\.b56\|x1_\(1_v\(x[2p]\|p4\)\|2_v22\)\.xlx\|bd56\(002\|3v2\|3s3\)\.boot\|l_1_v\(x[2p]\|p4\|22\)\.d56\)' sound/drivers/vx/vx_hwdep.c
-
-    blobname '\(ea[/]\)\?darla20_dsp\.fw' sound/pci/echoaudio/darla20.c
-    blobname '\(ea[/]\)\?darla24_dsp\.fw' sound/pci/echoaudio/darla24.c
-    blobname '\(ea[/]\)\?\(\(loader\|echo3g\)_dsp\|3g_asic\)\.fw' sound/pci/echoaudio/echo3g.c
-    blobname '\(ea[/]\)\?gina20_dsp\.fw' sound/pci/echoaudio/gina20.c
-    blobname '\(ea[/]\)\?\(\(loader\|gina24_3[06]1\)_dsp\|gina24_3[06]1_asic\)\.fw' sound/pci/echoaudio/gina24.c
-    blobname '\(ea[/]\)\?\(loader\|indigo\)_dsp\.fw' sound/pci/echoaudio/indigo.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_dj\)_dsp\.fw' sound/pci/echoaudio/indigodj.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_io\)_dsp\.fw' sound/pci/echoaudio/indigoio.c
-    blobname '\(ea[/]\)\?layla20_\(dsp\|asic\)\.fw' sound/pci/echoaudio/layla20.c
-    blobname '\(ea[/]\)\?\(\(loader\|layla24\)_dsp\|layla24_\(1\|2[AS]\)_asic\)\.fw' sound/pci/echoaudio/layla24.c
-    blobname '\(ea[/]\)\?\(loader\|mia\)_dsp\.fw' sound/pci/echoaudio/mia.c
-    blobname '\(ea[/]\)\?\(\(loader\|mona_3[06]1\)_dsp\|mona_3[06]1\(_1\)\?_asic_\(48\|96\)\|mona_2_asic\)\.fw' sound/pci/echoaudio/gina24.mona
-    blobname 'ea[/]%s' sound/pci/echoaudio/echoaudio.c
-
-    blobname 'emu[/]\(hana\|\(audio\|micro\)_dock\|emu\(0404\|1010\(b\|_notebook\)\)\)\.fw' sound/pci/emu10k1/emu10k1_main.c
-
-    blobname '\(mixart[/]\)\?miXart8\(AES\)\?\.\(xlx\|elf\)' sound/pci/mixart/mixart_hwdep.c
-
-    blobname '\(pcxhr[/]\)\?\(x[ic]_1_882\|[ebd]321_512\|xlxint\|\(xlxc\|dsp[ebd]\)\(882\|1\?222\|924\)\(e\|hr\)\?\)\(\.dat\|\.[ebd]56\)' sound/pci/pcxhr/pcxhr_hwdep.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
-    blobna 'chip->firmware[ ]=[ ]firmware[;]' sound/pci/riptide/riptide.c
-
-    blobname '\(multi\|digi\)face_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-
-    blobname 'aica_firmware\.bin' sound/sh/aica.c
-
-    accept '[ ][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Caution:[ ]This[ ]API[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware.' sound/sound_firmware.c
-    accept 'static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'int[ ]mod_firmware_load[(]' sound/sound_firmware.c
-    accept '[	]r[ ]=[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'EXPORT_SYMBOL[(]mod_firmware_load[)][;]' sound/sound_firmware.c
-    accept 'extern[ ]int[ ]mod_firmware_load[(]' sound/oss/sound_firmware.h
-
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]PERMCODESIZE[ ]=[ ]mod_firmware_load[(]PERMCODEFILE,[ ][&]PERMCODE[)][;]' sound/oss/msnd_pinnacle.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?pndsp\(ini\|erm\)\.bin' '\(sound/oss/msnd_pinnacle.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' '\(sound/oss/msnd_classic.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobna '\(Important[ ]Notes[ ]-[ ]Read[ ]Before[ ]Using\|Obtaining[ ]and[ ]Creating[ ]Firmware[ ]Files\)[\n]#[ ][ ]~*\([^\n]\|[\n]#[ ]*\([\n]#[ ]*\([\n]#[ ]*For[ ]the[^\n]*[\n]#[ ]*~*[\n]\)\?\)\?[^\n ]\)*\.' Documentation/sound/oss/MultiSound
-
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    blobname '[/]sndscape[/]\(scope\.cod\|sndscape\.co\([?dx01234]\|%d\)\)' sound/oss/sscape.c
-
-    accept '[	][	]trix_boot_len[ ]=[ ]mod_firmware_load[(]' sound/oss/trix.c
-    blobname '\([/]etc[/]sound[/]\)\?trxpro\.bin' sound/oss/trix.c
-
-    accept '[	][	]smw_ucodeLen[ ]=[ ]mod_firmware_load[(]' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\)\?midi0001\.bin' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' sound/oss/Kconfig
-
-    blob 'When[ ]the[ ]module[ ]is[ ]loaded[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]*\)*' Documentation/sound/oss/PSS
-    blob 'pss_firmware[ \n	]*This[ ]parameter[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]\+\)*' Documentation/sound/oss/PSS-updates
-    accept '[	][	]pss_synthLen[ ]=[ ]mod_firmware_load[(]pss_firmware,[ ][(]void[ ][*][)][ ][&]pss_synth[)][;]' sound/oss/pss.c
-    accept '[	]*if[ ]\?[(]\(!\|fw_load[ ][&][&][ ]\)\?pss_synth' sound/oss/pss.c
-    accept '[	]*if[ ][(]!pss_download_boot[(]devc,[ ]pss_synth,[ ]pss_synthLen,' sound/oss/pss.c
-    accept '[	]*vfree[(]pss_synth[)][;]' sound/oss/pss.c
-    blobna 'to[ ]allow[ ]the[ ]user[ ][^/"]*fir[em]ware[ ]file[^/"]*["][^"*]*["]' sound/oss/pss.c
-    blobname '\([/]etc[/]sound[/]\)\?pss_synth' sound/oss/pss.c
-    accept '[	][$][(]obj[)][/]bin2hex[ ]pss_synth' sound/oss/Makefile
-    accept '[	][ ]*echo[ ][\'"'"']static[ ]\(unsigned[ ]char[ ][*][ ]*\|int[ ]\)pss_synth\(Len\)\?[ ]=[ ]\(NULL\|0\)[;]' sound/oss/Makefile
-
-    accept '[	]\.request_firmware[ ]=[ ]NULL,' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept '[	 ]*["]request_firmware[ ]\(fatal[ ]error\|unable[ ]to[ ]locate\|:[ ]Failed[ ]to[ ]find\)' drivers/media/video/pvrusb2/pvrusb2-hdw.c
-    accept '[ ][*][ ]NOTE[ ]:[ ]the[ ]pointer[ ]to[ ]the[ ]firmware[ ]data[ ]given[ ]by[ ]request_firmware[(][)]' drivers/media/video/pvrusb2-hdw.c
-
-    blobname 'dvb-usb-\(dw\(210[124]\|3101\)\|s630\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]gp8psk_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-gp8psk-0[12]\.fw' drivers/media/dvb/dvb-usb/gp8psk.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]opera1_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-opera-\(fpga-\)\?-01\.fw' drivers/media/dvb/dvb-usb/opera1.c
-
-    blobname 'dvb-fe-af9013\.fw' drivers/media/dvb/frontends/af9013_priv.h
-
-    blobname 'dvb-fe-bcm3510-01\.fw' drivers/media/dvb/frontends/bcm3510.c
-
-    blobname 'dvb-fe-cx24116\.fw' drivers/media/dvb/frontends/cx24116.c
-
-    blobname 'dvb-fe-nxt2002\.fw' drivers/media/dvb/frontends/nxt200x.c
-
-    blob '[/][*][\n][ ][*][ ]This[ ]driver[ ]needs[ ]two[ ]external[ ]firmware[ ]files[^*]*\([*]\+[^/*][^*]*\)*[*]*dvb-fe-or51132-\(vsb\|qam\)\.fw[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/dvb/frontends/or51132.c
-    blobname 'dvb-fe-or51132-\(vsb\|qam\)\.fw' drivers/media/dvb/frontends/or51132.c
-
-    blobname 'dvb-fe-or51211\.fw' drivers/media/dvb/frontends/or51211.c
-
-    blobname 'dvb-fe-sp887x\.fw' drivers/media/dvb/frontends/sp887x.c
-
-    blobname 'dvb-fe-tda10048-1\.0\.fw' drivers/media/dvb/frontends/tda10048.c
-
-    blobname '\(\(dvb\|tdmb\|isdbt\)_nova\|cmmb_vega\)_12mhz\(_b0\)\?\.inp' drivers/media/dvb/siano/smscoreapi.c
-
-    blobname '\(dvb[th]\(_bda\)\?\|tdmb\)_stellar_usb\.inp' drivers/media/dvb/siano/smsusb.c
-
-    blobname 'dvb-ttusb-dec-\(2000t\|2540t\|3000s\)\.fw' drivers/media/dvb/ttusb-dec/ttusb_dec.c
-
-    blob 'For[ ]the[ ]WinTV[/]PVR[^:]*firmware[^:]*:[\n]hcwamc\.rbf[^\n]*\([\n][^\n][^\n]*\)*' Documentation/video4linux/bttv/README
-    blobname 'hcwamc\.rbf' drivers/media/video/bt8xx/bttv-cards.c
-    blobna 'The[ ]hcwamc\.rbf[ ]firmware[ ]file[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/bt8xx/bttv-cards.c
-
-    blobname 'v4l-cx23418-dig\.fw' drivers/media/video/cx18/cx18-av-firmware.c
-    blobname 'v4l-cx23418-[ac]pu\.fw' drivers/media/video/cx18/cx18-firwmare.c
-
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-
-    blobname 'v4l-\(cx23\(885\|1xx\)-avcore-01\|cx25840\)\.fw' drivers/media/video/cx25840/cx25840-firmware.c
-
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-
-    blobname 'v4l-cx2341x-init\.mpg' drivers/media/video/ivtv/ivtv-firwmare.c
-
-    blobname 'v4l-pvrusb2-\(2[49]\|73\)xxx-01\.fw' drivers/media/video/pvrusb2/pvrusb2-devattr.c
-
-    blobname 'f2255usb\.bin' drivers/media/video/s2255drv.c
-
-    blobname 'drx397xD\.\(A2\|B1\)\.fw' drivers/media/dvb/frontends/drx397xD_fw.h
-
-    accept '#define[ ]DIB0700_DEFAULT_DEVICE_PROPERTIES[ ]\\[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^\n",]*,[ ]\\[\n]\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-dib0700-1\.[12]0\.fw' 'drivers/media/dvb/dvb-usb/dib0700_\(devices\|core\)\.c'
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]nova_t_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-nova-t-usb2-02\.fw' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]umt_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/umt-010.c
-    blobname 'dvb-usb-umt-010-02\.fw' drivers/media/dvb/dvb-usb/umt-010.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]ttusb2_properties\(_s2400\)\?[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/ttusb2.c
-    blobname 'dvb-usb-\(pctv-400e\|tt-s2400\)-01\.fw' drivers/media/dvb/dvb-usb/ttusb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]cxusb_bluebird_\(lgh064f\|dee1601\|lgz201\|dtt7579\|nano2_needsfirmware\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/cxusb.c
-    blobname 'dvb-usb-bluebird-0[12]\.fw' drivers/media/dvb/dvb-usb/cxusb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dtt200u\|wt220u\(_\(fc\|zl0353\|miglia\)\)\?\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dtt200u.c
-    blobname 'dvb-usb-\(dtt200u-01\|wt220u-\(02\|fc03\|\(zl0353\|miglia\)-01\)\)\.fw' drivers/media/dvb/dvb-usb/dtt200u.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    blobname 'dvb-usb-vp7045-01\.fw' drivers/media/dvb/dvb-usb/vp7045.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dibusb\(1_1\(_an2235\)\?\|2_0b\)\|artec_t1_usb2\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mb.c
-    blobname 'dvb-usb-\(dibusb-\(5\.0\.0\.11\|an2235-01\|6\.0\.0\.8\)\|adstech-usb2-02\)\.fw' drivers/media/dvb/dvb-usb/dibusb-mb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]a800_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/a800.c
-    blobname 'dvb-usb-avertv-a800-02\.fw' drivers/media/dvb/dvb-usb/a800.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]af9005_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9005.c
-    blobname 'af9005\.fw' drivers/media/dvb/dvb-usb/af9005.c
-
-    accept '[	][	]\.download_firmware[ ]=[ ]af9015_download_firmware,[\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    blobname 'dvb-usb-af9015\.fw' drivers/media/dvb/dvb-usb/af9015.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]dibusb_mc_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mc.c
-    blobname 'dvb-usb-dibusb-6\.0\.0\.8\.fw' drivers/media/dvb/dvb-usb/dibusb-mc.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp702x_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp702x.c
-    blobname 'dvb-usb-vp702x-02\.fw' drivers/media/dvb/dvb-usb/vp702x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]digitv_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/digitv.c
-    blobname 'dvb-usb-digitv-02\.fw' drivers/media/dvb/dvb-usb/digitv.c
-
-    blob 'Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\([\n][\n]--*[\n][\n]\?Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\)*' firmware/WHENCE
-
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-
-    accept '[ ][ ][ ][ ]mv[ ]["][$]ofile["][ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$]objbin[/]mktree[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[	]rm[ ]-f[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$][{]CROSS[}]objcopy[ ]-O[ ]binary[ ]["][$]ofile["][ ]["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]odir=["][$][(]dirname[ ]["][$]ofile\.bin["][)]["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]gzip[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-
-    blobname 'di\(\(dn\|pr\)load\|diva\(pp\)\?\|hscx\|v110\|modem\|fax\|_etsi\|_\(1tr6\|belg\|franc\|atel\|ni\|5ess\|japan\|swed\)\|dspdld\)\.\(bin\|s[xyqm]\|p\)' drivers/isdn/hardware/eicon/cardtype.h
-    blobname 'dsp\(dload\|dqsig\|dvmdm\|dvfax\)\.bin' drivers/isdn/hardware/eicon/dsp_defs.h
-
-    blobname 'vicam[/]firmware\.fw' drivers/media/video/usbvideo/vicam.c
-
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-
-    # New in 2.6.29
-    blobname 'acenic[/]tg[12]\.bin' drivers/net/acenic.c
-    blobname 'adaptec[/]starfire_[rt]x\.bin' drivers/net/starfire.c
-    blobname 'e100[/]d10\(1[ms]\|2e\)_ucode\.bin' drivers/net/e100.c
-    blobname 'tigon[/]tg3\(_tso5\?\)\?\.bin' drivers/net/tg3.c
-    blobname '\(ti_usb-v\(%04x\|[0-9a-f]*\)-p\(%04x\|[0-9a-f]*\)\|mts_\(cdma\|gsm\|edge\)\)\.\(bin\|fw\)' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'iw\?\(2400\|6050\)m\?-fw-\(sdio\|usb\)-\(\(["][ ]I2400M_FW_VERSION[ ]["]\|[0-9.]*\)\.sbcf\|[^". \n]*\)' 'drivers/net/wimax/i2400m/\(sdio\|usb\)\.c'
-    blob '3\.[ ]Installing[ ]the[ ]firmware[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*[\n]*[$][^\n]*i2400m-fw[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*' Documentation/wimax/README.i2400m
-    blob '6\.1\.[ ]Driver[ ]complains[^\n]*i2400m-fw[^\n]*\([\n][\n]*\([ ][ ][ ]\|i2400m_usb\)[^\n]*\)*' Documentation/wimax/README.i2400m
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    accept '\(div_table_\(clz\|inv\|ix\)\|zero_l\):\([\n][	]\.\(byte[	]-\?[0-9]*\|long[	]0x[0-9A-F]*\)\)*' arch/sh/lib/udivsi3_i4i.S
-    defsnc 'const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    accept '[	][ ][ ]every[ ]driver[ ]which[ ]uses[ ]request_firmware[(][)][ ]and[ ]ships[ ]its' drivers/base/Kconfig
-    defsnc 'static[ ]const[ ]u32[ ]filter_table\[\][ ]=' drivers/gpu/drm/i915/intel_tv.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]u32[ ]channel_tbl\[15\]\[9\][ ]=' drivers/staging/agnx/rf.c
-    defsnc 'static[ ]const[ ]u32[\n]gain_table\[\][ ]=' drivers/staging/agnx/rf.c
-    accept '<[frs]:[0-9]*x[0-9]*>[\n][01 \n]*' 'drivers/staging/asus_oled/\(linux\(_fr\?\)\?\|tux\(_r2\?\)\?\|zig\).txt'
-    defsnc 'static[ ]unsigned[ ]char[ ]\(aud\|vid\)_regs\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    defsnc 'static[ ]u16[ ]vid_regs_fp\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    blobname 's2250\(_loader\)\?\.fw' drivers/staging/go7007/s2250-loader.c
-    blobna 'me_xilinx_download' 'drivers/staging/meilhaus/.*'
-    accept 'int[ ]me_xilinx_download[(]' 'drivers/staging/meilhaus/mefirmware\.[ch]'
-    blobname 'me46[01]0\(_bosch\)\?\.bin' drivers/staging/meilhaus/me4600_device.c
-    accept '\([	]if[ ][(]me4600_device->base\.info\.pci\.device_id[ ]==[ ]PCI_DEVICE_ID_MEILHAUS_ME4610[)][ ][{][	][/][/]Jekyll[ ]<=>[ ]me4610\|#ifdef[ ]BOSCH\|#else[ ][/][/]~BOSCH\)[\n][	][	]err[ ]=[\n][	][	][ ][ ][ ][ ]me_xilinx_download[(]me4600_device' drivers/staging/meilhaus/me4600_device.c
-    blobname 'me6000\.bin' drivers/staging/meilhaus/me6000_device.c
-    accept '[	][/][*][ ]Download[ ]the[ ]xilinx[ ]firmware[ ][*][/][\n][	]err[ ]=[ ]me_xilinx_download[(]me6000_device' drivers/staging/meilhaus/me6000_device.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\([\n][\n]*const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\)*' 'drivers/staging/otus/hal/hp.*fwu.*\.c'
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    blob '\(UCHAR\|u8\)[ ]FirmwareImage\(_\(2870\|30[79]0\)\)\?[ ]\[\][ ]=[ ][{][^;]*[}][ ][;]' 'drivers/staging/rt\(28[67]\|30[79]\)0/common/firmware\(_3070\)\?\.h'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname 'rate\.bin' drivers/staging/rt2870/rtmp_init.c
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT\(28[67]\|307\)0STA[/]\)\?\(RT\(28[67]\|307\)0STA\|rt28[67]0\)\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT28[67]0STA[/]\)\?e2p\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_ate\.[hc]'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'u\(8\|16\|32\)[ ]rtl8225\(\(a\|bcd\?\)_rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\[\]=' drivers/staging/rtl8187se/r8180_rtl8225.c
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc 'static[ ]short[ ]rtl8255_agc\[\]=' drivers/staging/rtl8187se/r8180_rtl8255.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    blobname '\(\(oasis\|gb\)_rcv\|slic_\(oasis\|mojave\)\)\.bin' drivers/staging/slicoss/slicoss.c
-
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\([\n][\n]*#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\)*' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-    blob '#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\([\n][\n]*#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'instruction[ ]=[ ][^;]*\(Oasis\|GB\|Mojave\)\(Rcv\)\?UCode[^:}]*[;]' drivers/staging/slicoss/slicoss.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'numsects[ ]=[ ][OM]NumSections[;][\n][	]*for[ ][(][^;]*[;][^;]*[;][^;{]*[)][ ][{][\n][^}]*[\n][	][	][}]' drivers/staging/slicoss/slicoss.c
-
-    # post 2.6.29 patches
-    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov\(7[27]2x\|965x\(_2\)\?\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-
-    # This looks suspicious, but it pretty much just sets stuff to zero.
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-
-    # quite suspicious
-    # arch/parisc/kernel/perf_images.h
-    initc 'static[ ]uint32_t[ ]onyx_images\[\]\[PCXU_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-    initc 'static[ ]uint32_t[ ]cuda_images\[\]\[PCXW_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-
-    # These are regarded as ok
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-
-    # too lax?
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirZeros[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirOnes[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirSatTest[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirDImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_ItdDline_t[ ]A3dItdDlineZeros[ ]=[ ][{]'
-    initnc 'static[ ]auxxEqCoeffSet_t[ ]asEqCoefsNormal[ ]=[ ][{]'
-    defsnc 'static[ ]xtalk_dline_t[ ]const[ ]alXtalkDline\(Test\|Zeros\)[ ]=' sound/pci/au88x0/au88x0_xtalk.c
-    initnc 'static[ ]struct[ ]nand_ecclayout[ ]rtc_from4_nand_oobinfo[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]s16[ ]tempLUT\[\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    initnc 'static[ ]struct[ ][{][ ]int[ ]xres,[ ]yres,[ ]left,[ ]right,[ ]upper,[ ]lower,[ ]hslen,[ ]vslen,[ ]vfreq[;][ ][}][ ]timmings\[\][ ]__initdata[ ]=[ ][{]'
-    initnc 'static[ ]struct[ ]platinum_regvals[ ]platinum_reg_init_[0-9]*[ ]=[ ][{]'
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    initnc 'static[ ]u32[ ]LABELPATCHES\[\][ ]__attribute[(][(]unused[)][)][ ]='
-
-    initnc 'static[ ]dbdev_tab_t[ ]dbdev_tab\[\][ ]='
-    accept '\(EXP\|LOG\|ATAN\)TBL:'"$sepx$blobpat*"
-    initnc 'static[ ]char[ ]fm_volume_table\[128\][ ]='
-    initnc 'unsigned[ ]int[ ]snd_gf1_scale_table\[SNDRV_GF1_SCALE_TABLE_SIZE\][ ]='
-    # remaining after original deblob_2_6_24, not fully checked
-
-    oprepline '#define[ ]OV51[18]_\(Y\|UV\)QUANTABLE[ ][{]'
-    initnc '[	][	]static[ ]unsigned[ ]char[ ]const[ ]data_bit\[64\][ ]='
-    initnc '[	][	]static[ ]const[ ]u8[ ]data_sbit\[32\][ ]='
-    initnc '[	]\.RightCoefs[ ]='
-    initnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]'
-    initnc '[	]SetRate44100\[\][ ]='
-    initnc '[	]const[ ]short[ ]period\[32\][ ]='
-    defsnc '[	]\(const[ ]static\|static[ ]const\)[ ]int[ ]desc_idx_table\[\][ ]=' 'arch/arm/include/asm/hardware/iop3xx-adma.h|include/asm-arm/hardware/iop3xx-adma.h'
-    initnc '[	]int[ ]prop_bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]char[ ]logSlopeTable\[128\][ ]='
-    initnc '[	]static[ ]const[ ]int[ ]uc_\(dup\|word\)_table\[\]\[2\][ ]='
-    initnc '[	]static[ ]const[ ]struct[ ]mc7_timing_params[ ]mc7_timings\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs170\[7[ ][*][ ]8\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs3[13]a\[8[ ][*][ ]4\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]dramsr13\[12[ ][*][ ]5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]sdramtype\[13\]\[5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    initnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]short[ ]ac97_defaults\[\][ ]='
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]='
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    initnc '[	]static[ ]u32[ ]logMagTable\[128\][ ]='
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    initnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable1\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable2\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]default_colors\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]log_scale\[101\][ ]=' sound/oss/pss.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]msg\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    initnc '[	]uint8_t[ ]tx\[\][ ]='
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc '[	]unsigned[ ]char[ ]sas_pcd_m_pg\[\][ ]='
-    initnc '[	][}][ ]modedb\[5\][ ]='
-    defsnc '[	][}][ ]reg_tbl\[\][ ]=' drivers/net/bnx2.c
-    initnc '[	][}][ ]vals\[\][ ]='
-    initnc '[	][}][ ]vm_devices\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]distfix\[32\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]lenfix\[512\][ ]='
-    defsnc '[ ][ ]int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    initnc '[ ][ ][}][ ]cards_ds\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]unsigned[ ]short[ ]d\(base\|ext\)\[32\][ ]='
-    initnc '#define[ ]OV511_QUANTABLESIZE[	]64'
-    initnc 'BYTE[ ]BtCard::SRAMTable_\(NTSC\|PAL\)\[\][ ]='
-    initnc 'BYTE[ ]SRAMTable\[\]\[[ ]60[ ]\][ ]='
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" 'arch/arm/inlcude/asm/hardware/entry-macro-iomd.S|include/asm-arm/hardware/entry-macro-iomd.S'
-    initc '__u8[ ]_ascebc\[256\][ ]='
-    initc '__u8[ ]_ebc_tolower\[256\][ ]='
-    initc '__u8[ ]_ebc_toupper\[256\][ ]='
-    initnc 'adapter_tag_info_t[ ]aic7[9x]xx_tag_info\[\][ ]='
-    initnc 'char[ ]dmasound_alaw2dma8\[\][ ]='
-    initnc 'char[ ]dmasound_ulaw2dma8\[\][ ]='
-    initnc 'const[ ]struct[ ]aper_size_info_16[ ]agp3_generic_sizes\[AGP_GENERIC_SIZES_ENTRIES\][ ]='
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]byte_rev_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]crc7_syndrome_table\[256\][ ]='
-    initnc 'int[ ]snd_sf_vol_table\[128\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siubit\[\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siureg\[\][ ]='
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    initnc 'static[ ]__const__[ ]__u16[ ]gx_coeff\[256\][ ]='
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    initnc 'static[ ]char[ ]coefficients\[NM_TOTAL_COEFF_COUNT[ ][*][ ]4\][ ]='
-    initnc 'static[ ]char[ ]ecc_syndrome_table\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_alaw_to_ulaw\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_ulaw_to_alaw\[\][ ]='
-    initnc 'static[ ]char[ ]mix_cvt\[101\][ ]='
-    initnc 'static[ ]char[ ]opl3_volume_table\[128\][ ]='
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]='
-    initnc 'static[ ]const[ ]__u32[ ]crc_c\[256\][ ]='
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    initnc 'static[ ]const[ ]int[ ]init_seq\[\][ ]='
-    initnc 'static[ ]const[ ]int[ ]mobile_vid_table\[32\][ ]='
-    initnc 'static[ ]const[ ]s16[ ]snd_opl4_pitch_map\[0x600\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]budtab\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]aper_size_info_8[ ]via_generic_sizes\[9\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]color[ ]clut_vga16\[16\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]mobilevrm_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]vrm85_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]struct[ ]menelaus_vtg_value[ ]vcore_values\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]opl4_region[ ]regions_[0-9a-frums]*\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]regval[ ]regval_table\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    initnc 'static[ ]const[ ]u32[ ]SS[0-3]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]S[1-8]\[64\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]T[0-5]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    initnc 'static[ ]const[ ]u32[ ]bass_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    initnc 'static[ ]const[ ]u32[ ]db_table\[101\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]m8xx_size_to_gray\[M8XX_SIZES_NO\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]mds\[4\]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]pc2\[1024\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    initnc 'static[ ]const[ ]u32[ ]tfrc_calc_x_lookup\[TFRC_CALC_X_ARRSIZE\]\[2\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]treble_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u64[ ][CT][0-7]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sbox[1-4]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    initnc 'static[ ]const[ ]u8[ ]aes_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]calc_sb_tbl\[512\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]exp_to_poly\[492\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]legal_ansi_char_array\[0x40\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]parity\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]pc1\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]poly_to_exp\[255\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]q[01]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u8[ ]rs\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225_\(agc\|tx_\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siubit\[\][ ]='
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siureg\[\][ ]='
-    initnc 'static[ ]const[ ]uint8_t[ ]parity\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]\(UV\|Y\)_QUANTABLE\[64\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_mobilevrm\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]barco_p1\[2\]\[9\]\[7\]\[3\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]blue\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]chktab[hl]\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]comet_miireg2offset\[32\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]euc2sjisibm_g3upper_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]green\[256\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=' drivers/hid/hid-input.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]mts_direction\[256[/]8\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]red\[256\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]sjisibm2euc_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]vol_cvt_datt\[128\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]crctab32\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]crc_flex_table\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]wd7000_iobase\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    initnc 'static[ ]const[ ]unsigned[ ]table\[\][ ]='
-    initnc 'static[ ]int[ ]MV300_reg_8bit\[256\][ ]\?=' drivers/video/atafb.c
-    defsnc 'static[ ]int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    initnc 'static[ ]int[ ]initial_lfsr\[\][ ]='
-    initnc 'static[ ]int[ ]log_tbl\[129\][ ]='
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]register_size\[\][ ]='
-    initnc 'static[ ]int[ ]reserve_list\[MAX_RES_ARGS\][ ]='
-    initnc 'static[ ]int[ ]reverse6\[64\][ ]='
-    initnc 'static[ ]short[ ]attack_time_tbl\[128\][ ]='
-    defsnc 'static[ ]short[ ]beep_wform\[256\][ ]=' 'sound/ppc/beep.c|sound/oss/dmasound/dmasound_awacs.c|arch/ppc/8xx_io/cs4218_tdm.c'
-    initnc 'static[ ]short[ ]decay_time_tbl\[128\][ ]='
-    initnc 'static[ ]short[ ]isdn_audio_[ua]law_to_s16\[\][ ]='
-    defsnc 'static[ ]struct[ ]iw\?l\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IW\?L_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    initnc 'static[ ]struct[ ]ovcamchip_regvals[ ]regvals_init_\(76be\|7[16]20\|7x10\)\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    initnc 'static[ ]struct[ ]s_c2[ ]SetRate48000\[\][ ]='
-    initnc 'static[ ]struct[ ]tea6420_multiplex[ ]TEA6420_line\[MXB_AUDIOS[+]1\]\[2\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_133\[\][ ]='
-    initnc 'static[ ]struct[ ][{][ ]struct[ ]fb_bitfield[ ]red,[ ]green,[ ]blue,[ ]transp[;][ ]int[ ]bits_per_pixel[;][ ][}][ ]colors\[\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsPipes\[64\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsZeros\[50\][ ]='
-    initnc 'static[ ]u16[ ]asEqOutStateZeros\[48\][ ]='
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    initnc 'static[ ]u16[ ]eq_levels\[64\][ ]='
-    initnc 'static[ ]u32[ ][ ]crc32tab\[\][ ]__attribute__[ ][(][(]aligned[(]8[)][)][)][ ]='
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]u32[ ]adwDecim8\[33\][ ]='
-    initnc 'static[ ]u32[ ]h_prescale\[64\][ ]='
-    initnc 'static[ ]u32[ ]v_gain\[64\][ ]='
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]bnx2_570[68]_stats_len_arr\[BNX2_NUM_STATS\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]u8[ ]flit_desc_map\[\][ ]='
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]u8[ ]mac_reader\[\][ ]=' drivers/net/wireless/atmel.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/dvb/frontends/mt2131.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/dvb/frontends/mt2266.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc 'static[ ]u_long[ ]ident_map\[32\][ ]='
-    initnc 'static[ ]u_short[ ]alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]altgr_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]u_short[ ]shift_ctrl_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]shift_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]uchar[ ]perm1\[56\][ ]='
-    initnc 'static[ ]uchar[ ]perm2\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm3\[64\][ ]='
-    initnc 'static[ ]uchar[ ]perm4\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm5\[32\][ ]='
-    initnc 'static[ ]uchar[ ]perm6\[64\][ ]='
-    initnc 'static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]='
-    initnc 'static[ ]uint16_t[ ]crc_table\[256\][ ]='
-    initnc 'static[ ]uint8_t[ ]lpfcAlpaArray\[\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?uint8_t[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OffMatrix_9600\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OnMatrix_9600\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set3_keycode\[512\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_unxlate_table\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/superh/microdev/led.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8260\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8280\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]caseorder\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]crystal_key\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]dsp_ulaw\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]expressiontab\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    initnc 'static[ ]unsigned[ ]char[ ]hidp_keycode\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]nkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]pan_volumes\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]parm_block\[32\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]raw3270_ebcgraf\[64\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rfcomm_crc_table\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rwa_unlock\[\][ ]__initdata[ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]snd_opl4_volume_table\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]sunkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_8fpb\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_other\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ulaw_dsp\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    initnc 'static[ ]unsigned[ ]char[ ]voltab[12]\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]vpd89_data\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]xtkbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]bass_volume_table\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]isa_dma_port\[8\]\[7\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]master_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]mixer_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]pan_table\[63\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_bass_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]valid_mem\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]arthur_to_linux_signals\[32\][ ]='
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]unsigned[ ]nv\([34]\|10\)TableP\(FIFO\|GRAPH\|RAMIN\)\[\]\[2\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]fcstab\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ][/][*]__devinitdata[*][/][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]log_table\[LOG_TABLE_SIZE[*]2\][ ]='
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    initnc 'static[ ]unsigned[ ]short[ ]treble_parm\[12\]\[9\][ ]='
-    initnc 'struct[ ]RGBColors[ ]TextCLUT\[256\][ ]='
-    initnc 'struct[ ]VgaRegs[ ]GenVgaTextRegs\[NREGS[+]1\][ ]='
-    defsnc 'struct[ ]battery_thresh[ ][ ]*\(spitz\|sharpsl\)_battery_levels_\(noac\|acin\)\[\][ ]=' arch/arm/mach-pxa/sharpsl_pm.c
-    initnc 'struct[ ]fb_bitfield[ ]rgb_bitfields\[\]\[4\][ ]='
-    initnc 'struct[ ]mode_registers[ ]std_modes\[\][ ]='
-    initnc 'struct[ ]vmode_attr[ ]vmode_attrs\[VMODE_MAX\][ ]='
-    initnc 'u16[ ]const[ ]crc16_table\[256\][ ]='
-    initnc 'u16[ ]const[ ]crc_ccitt_table\[256\][ ]='
-    initnc 'u16[ ]hfsplus_compose_table\[\][ ]='
-    initnc 'u16[ ]hfsplus_decompose_table\[\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '[}][ ]euc2sjisibm_jisx0212_map\[\][ ]='
-    initnc '[}][ ]freq\[\][ ]='
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]maven_gamma\[\][ ]='
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]sil_port\[\][ ]='
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-
-    # new in 2.6.30
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]sync\[\][ ]=' Documentation/networking/timestamping/timestamping.c
-    blob 'The[ ]driver[ ]requires[ ]firmware[ ]files[ ]["]turtlebeach\([^\n]*[^\n.][\n]\)*directory.' Documentation/sound/alsa/ALSA-Configuration.txt
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    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-\(\(db-\)\?FPGA\|Firmware\)\.bin' drivers/atm/solos-pci.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\)\[\][ ]\(__devinitconst[ ]\)\?=' drivers/i2c/busses/i2c-mpc.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nand_oob_128[ ]=' drivers/mtd/nand/nand_base.c
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    accept 'static[ ]void[\n]load_rv2p_fw[(][^{)]*const[ ]struct[ ]bnx2_mips_fw_file_entry' drivers/net/bnx2.c
-    accept 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{][\n][	]const[ ]struct[ ]bnx2_mips_fw_file'
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blobname 'myricom[/]lanai\.bin' drivers/net/myri_sbus.c
-    blobname '3com[/]3C359\.bin' drivers/net/tokenring/3c359.c
-    blobname '3com[/]typhoon\.bin' drivers/net/typhoon.c
-    defsnc 'static[ ]struct[ ]ar9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]struct[ ]ar9170_rf_init[ ]ar9170_rf_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]ar9170_phy_freq_entry[ ]ar9170_phy_freq_params\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'sxg[/]sahara\(dbg\)\?downloadB\.sys' drivers/staging/sxg/sxg.c
-    blobname 'qlogic[/]isp1000\.bin' drivers/scsi/qlogicpti.c
-    blobname 'advansys[/]\(3550\|38C\(08\|16\)00\|mcode\)\.bin' drivers/scsi/advansys.c
-    blobname 'qlogic[/]\(1040\|1280\|12160\)\.bin' drivers/scsi/qla1280.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]rf\([52]413\|2425\)_ini_common_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-1000-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-60[05]0-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]gspi\(%d\|[0-9]\+\)\(_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c
-    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\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname 'usbdux\(fast\)\?_firmware\.\(hex\|bin\)' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c'
-    blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
-    defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
-    accept '[	][	]stlc45xx_error[(]["]request_firmware[(][)][ ]failed' drivers/staging/stlc45xx/stlc45xx.c
-    blob 'static[ ]struct[ ]phy_ucode[	]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode-1.2.h
-    accept 'device[ ]drivers[ ]which[ ]predate[ ]the[ ]common[ ]use[ ]of[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    accept 'As[ ]we[ ]update[ ]those[ ]drivers[ ]to[ ]use[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*\(infradead\.org\|decadent\.org\.uk\)>' firmware/README.AddingFirmware
-    blobna 'linux-firmware\.git' firmware/README.AddingFirmware
-    blobname '\(ea[/]\)\?\(loader\|indigo_djx\)_dsp\.fw' sound/pci/echoaudio/indigodjx.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_iox\)_dsp\.fw' sound/pci/echoaudio/indigoiox.c
-    # blobname 'cis[/]LA-PCM\.cis' drivers/net/pcmcia/pcnet_cs.c
-    blobname 'ositech[/]Xilinx7OD\.bin' drivers/net/pcmcia/smc91c92_cs.c
-    blobname 'tehuti[/]\(firmware\|bdx\)\.bin' drivers/net/tehuti.c
-    accept '[ 	]*["]b43-open%s[/]%s\.fw["]' drivers/net/wireless/b43/main.c
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-
-    # New in 2.6.31
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    defsnc '\([	]static[ ]const[ ]u8[ ]snum_init\[\][ ]=[ ][{]\|static[ ]void[ ]qe_snums_init[(]void[)]\)[\n][	][	]0x04,[ ]0x05,' arch/powerpc/sysdev/qe_lib/qe.c
-    accept '[.]LgoS4:[\n][	][.]word[	][.]LmtoS4-\.LgoS4\([\n][	]\.\(long\|word\|byte\)[	][01]\(,0\)*\)*' arch/s390/kernel/sclp.S
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    accept '[ ][*][ ]*1[ ]1\([ ]0\)*[ ]1\([ ]0\)*' arch/x86/lguest/boot.c
-    defsnc 'struct[ ]scrubrate[ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]unsigned[ ]r\([35]\|s6\)00_reg_safe_bm\[[0-9]*\][ ]=' 'drivers/gpu/drm/radeon/r\(300\|v515\|s600\)\.c'
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    blobname 'dvb-cx18-mpc718-mt352\.fw' drivers/media/video/cx18/cx18-dvb.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]onenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' 'drivers/net/wireless/\(prism54/islpci_dev\.c\|rt2x00/rt2800usb\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    blobname 'iwmc3200wifi-\([ul]mac\|calib\)-sdio\.bin' drivers/net/wireless/iwmc3200wifi/sdio.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)ArrayDTM\[\(Boot\|Main\|Data\)ArrayLengthDTM\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192su/r8192S_FwImgDTM.h
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8192PciE\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\(DTM\)\?\[\(\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?Length\(DTM\)\?\)\?\][ ]=' drivers/staging/rtl8192su/rtl8192S_FwImgDTM.h
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    blobname 'RTL8192U[/]\(boot\|main\|data\)\.img' 'drivers/staging/rtl8192s\?u/r819xU_firmware\.c'
-    blob 'u8[ ]rtl8190_fw\(boot\|main\|data\)_array\[\][ ]=[ ]\?[{][^}]*[}][;]' 'drivers/staging/rtl8192s\?u/r8192xU_firmware_img\.c'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'BYTE[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc '\(BYTE\|unsigned[ ]char\)[ ]byVT3253\(InitTab\|B0\(_AGC4\?\)\?\)_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\[CB_VT3253\(B0\(_AGC4\?\)\?\)\?\(\(_INIT\)\?_FOR_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\)\?\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'SCountryTable[ ]ChannelRuleTab\[CCODE_MAX[+]1\][ ]=' drivers/staging/vt6655/card.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    defsnc 'static[ ]const[ ]\(DWORD\|unsigned[ ]long\)[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6655/tcrc.c
-    defsnc 'const[ ]\(BYTE\|unsigned[ ]char\)[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6655/tkip.c
-    blobname 'prism2_ru\.\(hex\|fw\)' drivers/staging/wlan-ng/prism2fw.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    blob '#include[ ]["]me4\(00\|61\)0_firmware\.h["]\([\n][\n]*#include[ ]["]me4\(00\|61\)0_firmware\.h["]\)*' drivers/staging/me4000/me4000.c
-    blobna 'firm[ ]=[ ][^;]*xilinx_firm[^;]*[;]' drivers/staging/me4000/me4000.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\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|%s\)_\(pfp\|rlc\|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
-
-    # New in or modified for 2.6.32
-    blobname '\(cxgb3[/]\)\?ael20\(05_\(opt\|twx\)\|20_twx\)_edc\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc 'static[ ]const[ ]struct[ ]aper_size_info_32[ ]u3_sizes\[8\?\][ ]=' drivers/char/agp/uninorth-agp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[\(512\|ATKBD_KEYMAP_SIZE\)\][ ]=' drivers/input/keyboard/atkbd.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    accept '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_1\[\][ ]=[ ][{][^;]*0x8300[^;]*[}][;]' drivers/net/r8169.c
-    blob 'static[ ]void[ ]rtl8168d_[12]_hw_phy_config[(]void[ ]__iomem[ ][*]ioaddr[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/r8169.c
-    blobna 'rtl8168d_[12]_hw_phy_config[(]ioaddr[)][;]' drivers/net/r8169.c
-    blobna 'static[ ]\(const[ ]\)\?struct[ ]phy_reg_init_[12]\[\][ ]=[ ][{][\n 	{}0-9a-fx]*0x06,[ ]0xf8f9[\n 	{}0-9a-fx]*[}][;]' drivers/net/r8169.c
-    # This loads firmware to be flashed from filename provided through ethtool.
-    accept 'int[ ]be_load_fw[(]struct[ ]be_adapter[ ][^\n;{]*[)][ \n][{]\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/net/benet/be_main.c
-    defsnc '[	]u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9287\(Common\|Modes\(_\([tr]x_gain\)\)\?\)_9287_1_[01]\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271\(_1_0\)\?\[\]\[[26]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u8[ ]lpphy_min_sig_sq_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u16[ ]lpphy_\(rev\(01\|2plus\)_noise_scale\|crs_gain_nft\|iqlo_cal\|rev[01]_ofdm_cck_gain\|\(a0_\)\?gain\|sw_control\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u32[ ]lpphy_\(\(rev01_ps\|tx_power\)_control\|\(a0_\)\?gain_\(idx\|value\)\|papd_\(eps\|mult\)\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    blobname 'v4l-saa7164-1\.0\.[23]\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]long[ ]limiter_times\[\][ ]=' drivers/media/radio/si4713-i2c.c
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    defsnc '[}][ ]csc_table\[\][ ]=' drivers/video/msm/mdp_csc_table.h
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    accept '[	]isar->firmware[ ]=[ ][&]load_firmware[;]' drivers/isdn/hardware/mISDN/mISDNisar.c
-    blobname 'isdn[/]ISAR\.BIN' drivers/isdn/hardware/mISDN/speedfax.c
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'RTL8192E[/]\(boot\|main\|data\)\.img' drivers/staging/rtl8192e/r819xE_firmware.c
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    accept '[ ][*][ ]File:[ ]main_usb\.c\([\n][ ][*]\([^\n/]*\|[^*\n/][/]*\)*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob 'const[ ]BYTE[ ]abyFirmware\[\][ ]=[ ][{][^;]*[}][;]' drivers/staging/vt6656/firmware.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(static[ ]\)\?struct[ ]register_address_value_pair[\n]\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    blobname '\([/]tmp[/]\)\?RT30xxEEPROM\.bin' 'drivers/staging/rt3090/\(common/ee_efuse\.c\|rtmp_def\.h\)'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\([\n][\n]*#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\)' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'FIRMWAREIMAGE_LENGTH[ ]==' drivers/staging/rt3090/common/rtmp_mcu.c
-    defsnc 'int[ ]wm831x_isinkv_values\[WM831X_ISINK_MAX_ISEL[ ][+][ ][1]\][ ]=' drivers/mfd/wm831x-core.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]__initconst[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8974_reg\[WM8974_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8974.c
-    defsnc 'static[ ]const[ ]u\(8\|16\)[ ]ak464[28]_reg\[\(AK4642_CACHEREGNUM\)\?\][ ]=' sound/soc/codecs/ak4642.c
-    accept 'int[ ]snd_hda_load_patch[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*hda_codec[^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' sound/pci/hda/hda_hwdep.c
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    blob 'SD8688[ ]firmware:[\n]*\([/]lib[/]firmware[^\n]*[\n]*\)*The[ ]images[^:]*:[\n]*[^\n]*[/]linux-firmware[^\n]*' Documentation/btmrvl.txt
-    defsnc 'static[ ]u8[ ]ibm405ex_fbdv_multi_bits\[\][ ]=' arch/powerpc/boot/4xx.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]struct[ ]ad714x_platf\(or\|ro\)m_data[ ]ad714[27]_\(\(spi\|i2c\)_\)\?platf\(or\|ro\)m_data[ ]=' arch/blackfin/mach-bf537/boards/stamp.c
-    blob 'static[ ]const[ ]u8[ ]lgs8g75_initdat\[\][ ]=[ ][{][^;]*[}][;]' drivers/media/dvb/frontends/lgs8gxx.c
-    blob 'static[ ]int[ ]lgs8g75_init_data[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*lgs8g75_initdat[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/media/dvb/frontends/lgs8gxx.c
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    accept '[<][<]\([/]Subtype[/]Type1\)\?[/]BaseFont[^ ]*[/]FontDescriptor[ ][0-9][0-9]*[ ]0[ ]R\([/]Type[/]Font\)\?[\n]\?[/]FirstChar[ ][0-9][0-9]*[/]LastChar[ ][0-9][0-9]*[/]Widths\[[\n][0-9 \n]*\]' 'Documentation/DocBook/v4l/.*\.pdf'
-
-    # New in 2.6.33
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blob '#define[ ]FW_VERSION\([ 	]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ 	]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3\(02\)\?x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u16[ ]bios_to_linux_keycode\[256\][ ]\(__initconst[ ]\)\?=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blob 'The[ ]ssinit[ ]program.*nsoniq.*sndscape.*sound[ ]weird\.' Documentation/sound/oss/README.OSS
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname '\(sndscape\|soundscape\)\.co\([?dx01234]\|%d\)' 'sound/isa/\(Kconfig\|sscape\.c\)\|Documentation/sound/oss/README\.OSS'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    blobname 'nouveau[/]nv\([0-9a-f][0-9a-f]\|%02x\)\.ctx\(prog\|vals\)' 'drivers/gpu/drm/nouveau/\(nv50_graph\|nouveau_grctx\)\.c'
-
-    # New in 2.6.34
-    blobname 'mts_mt9234\(mu\|zba\)\.fw' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '\(#[ ]\)\?\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl8192sfw\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-
-    # New in 2.6.35
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/char/n_gsm.c
-    defsnc 'static[ ]u8[ ]\(reset_atetm\|atetm_[12]port\|portsel_\(port[12]\|2port\)\)\[BIT2BYTE[(]LEN_\(ETM\|PORT_SEL\)[)]\][ ]=' drivers/infiniband/hw/qib/qib_iba7322.c
-    blobname 'qlogic[/]sd7220[.]fw' drivers/infiniband/hw/qib/qib_sd7220.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    blobname 'orinoco_ezusb_fw' drivers/net/wireless/orinoco/orinoco_usb.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    blobname 'ar9271[.]fw' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]BUCK[123]_\(suspend_\)\?table\[\][ ]=' drivers/regulator/88pm8607.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]XGI\(fb_vrate\|_TV_filter\)\[\][ ]=' drivers/staging/xgifb/XGI_main.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330\(New\)\?_SR15\(_1\)\?\[8\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_cr40_1\[15\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_TVDataStruct[ ][ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525[ip]\|750p\)\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(750p\|525[ip]\)\)Timing\[\][ ][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_HiTVGroup3\(Data\|Simu\|Text\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_Ren\(525\|750\)pGroup3\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_PanelDelayTblStruct[ ]XGI330_PanelDelayTbl\[\]' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_LVDSCRT1DataStruct[ ][ ]XGI_CHTVCRT1[UO]\(NTSC\|PAL\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    # qseed_table2 is kind of suspicious, but there's some regularity
-    # to it that makes me think it's just data.
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    blobname 'xc3028L\?-v[0-9]\+\.fw' drivers/staging/tm6000/tm6000-cards.c
-    defsnc 'static[ ]const[ ]struct[ ]chs_entry[ ]chs_table\[\][ ]=' drivers/mtd/sm_ftl.c
-    blobname 'asihpi[/]dsp\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.bin' sound/pci/asihpi/hpidspcd.c
-    defsnc 'static[ ]unsigned[ ]long[ ]ident_map\[32\][ ]=' kernel/exec_domain.c
-    defsnc 'static[ ]uint[ ]patch_2000\[\][ ]__initdata[ ]=' arch/powerpc/sysdev/micropatch
-    # Are these ucode patches really data?!?  They were taken as such
-    # since gNewSense started cleaning up Linux, but they look awfully
-    # suspicious to me.
-    defsnc '\(static[ ]\)\?uint[ ]patch_2[0ef]00\[\][ ]\(__initdata[ ]\)\?=' arch/powerpc/sysdev/micropatch.c
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[4\][ ]=' arch/arm/mach-s5pc100/clock.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*[(]f2255usb\.bin[)][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/s2255drv.c
-
-    # New in 2.6.36:
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    blobname 'ar7010\(_1_1\)\?[.]fw' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-
-    # New in 2.6.37, up to -rc5.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)\?-0[-0-9]*\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/README'
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/README'
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/wl_iw\.c'
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/phy/wlc_phy_cmn\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array[^\n]*\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|[mc][ec]\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\?\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-
-    # New in 2.6.39
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    blobname 'vntwusb\.fw' drivers/staging/vt6656/firmware.c
-    # New in 3.0.
-    accept 'resume[/]restore[,][ ]but[ ]they[ ]cannot[ ]do[ ]it[ ]by[ ]calling[ ]request_firmware[(][)]' Documentation/power/notifiers.txt
-    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	][	][	][	]0xe[0-7][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/p1022ds.dts
-    accept '[ ][ ][ ][ ]gzip[ ]-n[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]struct[ ]nvc0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.h
-    defsnc 'static[ ]const[ ]u8[ ]sht15_crc8_table\[\][ ]=' drivers/hwmon/sht15.c
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    blobname 'drxd-a2-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blobname 'drxd-b1-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blob '[/][*][	]if[ ][(]\(reject\|request\)_firmware[(][&]state->fw[,][ ]["]drxd\.fw["][,][ ]state->dev[)]<0[)][ ][*][/]'
-    blobname 'drxd\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    blobna 'www\.elandigitalsys[^\n]*download' drivers/mmc/host/Kconfig
-    blobname 'vub_\(default\.bin\|%04X%04X\)' drivers/mmc/host/vub300.c
-    blobna 'snprintf[(]vub300->vub_name[ ][+][^\n]*[,][ ]["]\.bin["][)][;]' drivers/mmc/host/vub300.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flexonenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(low\(est\)\?\|high\|mixed\)_ob_db\|high_power\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(radio\|baseband\|mac\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]u16[ ]mwifiex_data_rates\[MWIFIEX_SUPPORTED_RATES_EXT\][ ]=' drivers/net/wireless/mwifiex/cfp.c
-    accept '[	]\.helper[	][	]=[ ]NULL[,][\n][	]*\.firmware' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8787_uapsta\(_w1\)\?\.bin' drivers/net/wireless/mwifiex/main.h
-    blobname 'sd8787\.bin' drivers/net/wireless/mwifiex/sdio.c
-    blobna 'Copy[ ]sd8787\.bin[ ]to[^.]*[.]' drivers/net/wireless/mwifiex/README
-    blobname 'rtlwifi[/]rtl8192sefw\.bin' drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-    defsnc 'u32[ ]rtl8192sephy_reg_2t2rarray\[PHY_REG_2T2RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_changeto_1t[12]rarray\[PHY_CHANGETO_1T[12]RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_reg_array_pg\[PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seradioa_1t_array\[RADIOA_1T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192semac_2t_array\[MAC_2T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seagctab_array\[AGCTAB_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    accept 'Place[ ]isci_firmware\.bin[ ]in' drivers/scsi/isci/firmware/README
-    # This is not a code blob, it is just small data structures described in create_fw.[ch].
-    accept 'static[ ]const[ ]char[ ]blob_name\[\][ ]=[ ]["]isci_firmware\.bin["]' drivers/scsi/isci/create_fw.h
-    accept '[	][	]orom[ ]=[ ]isci_request_firmware' drivers/scsi/isci/init.c
-    accept 'MODULE_FIRMWARE[(]ISCI_FW_NAME[)][;]' drivers/scsi/isci/init.c
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    accept '[	]if[ ][(]request_firmware[(][&]fw[,][ ]ISCI_FW_NAME[,]' drivers/scsi/isci/probe_roms.c
-    accept '#define[ ]ISCI_FW_NAME[	][	]["]isci[/]isci_firmware\.bin["]' drivers/scsi/isci/probe_roms.h
-    defsnc 'static[ ]struct[ ]pll_limit[ ]\(cle266\|k800\|cx700\|vx855\)_pll_limits\[\][ ]=' drivers/video/via/hw.c
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    blobname 'wm8958_\(enh_eq\|mbc\(_vss\)\?\)\.wfw' sound/soc/codecs/wm8958-dsp2.c
-    blobname 'htc_\(7010\|9271\)\.fw' drivers/net/wireless/ath/ath9k/hif_usb.c
-    blobname 'rtl_nic[/]rtl8168e-[12]\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e\[\][ ]=' drivers/net/r8169.c
-    blobname 'ti-connectivity[/]wl128x-fw\(-ap\)\?\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    defsnc 'static[ ]const[ ]u8[ ]tg3_tso_header\[\][ ]=' drivers/net/tg3.c
-    blobname 'ath6k[/]AR6003[/]hw2\.1\.1[/]\(otp\|athwlan\|athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    accept '[	]nvc0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*nvc0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    blobname 'nouveau[/]\(nv%02x_\)\?%s' 'drivers/gpu/drm/nouveau/nv[ce]0_graph\.c'
-    blobname 'radeon[/]SUMO2\?_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
-    blobname 'iwlwifi-\(105\|20[03]\?0\)-' drivers/net/iwlwifi/iwl-2000.c
-    blobname '__stringify[(]api[)][ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[1256]000\)\.c\)'
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    # New in 3.2
-    blobname 'ath6k[/]AR600[0-9.]*[/]hw[0-9.]*[/][^/"]*\.\(bin\|z77\)' drivers/net/wireless/ath/ath6kl/core.h
-    accept 'userspace[,][ ]using[ ]the[ ]request_firmware[(][)][ ]function' Documentation/power/suspend-and-cpuhotplug.txt
-    defsnc 'static[ ]struct[ ]sh_keysc_info[ ]keysc_platdata[ ]=[ ]' arch/arm/mach-shmobile/board-kota2.c
-    defsnc 'static[ ]const[ ]u32[ ]rir_offset\[MAX_RIR_RANGES\]\[MAX_RIR_WAY\][ ]=' drivers/edac/sb_edac.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]s32[ ]wmi_rate_tbl\[\]\[2\][ ]=' drivers/net/wireless/ath/ath6kl/wmi.c
-    defsnc '[	]struct[ ]lcn_tx_iir_filter[ ]tx_iir_filters_\(cck\|ofdm\)\[\][ ]=' drivers/net/wireless/b43/phy_lcn.c
-    defsnc 'const[ ]u32[ ]b43_httab_0x1a_0xc0_late\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_lcntab_0x[01][0-9a-f]\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc '[	]b43_lcntab_tx_gain_tbl_2ghz_ext_pa_rev0\[B43_LCNTAB_TX_GAIN_SIZE\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]struct[ ]channel_list[ ]ChannelPlan\[\][ ]=' drivers/staging/rtl8192e/dot11d.c
-    defsnc 'u32[ ]Rtl8192PciE\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)Array\[\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)ArrayLengthPciE\][ ]=' drivers/staging/rtl8192e/r8192E_hwimg.c
-    defsnc 'static[ ]u8[ 	]CCKSwingTable_\(Ch1_Ch13\|Ch14\)\[CCK_Table_length\]\[8\][ ]=' drivers/staging/rtl8192e/rtl_dm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(power\|emif[01]\)_pins\[\][ ]=' drivers/pinctrl/pinmux-u300.c
-    defsnc 'static[ ]const[ ]struct[ ]pll_div[ ]codec_\(master\|slave\)_pll_div\[\][ ]=' sound/soc/codecs/rt5631.c
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]\.download_firmware[ ]=[ ]it913x_download_firmware[,][\n][	]\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-it9137-01\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    blobname '%s[/]bdata\.%s\.bin' drivers/net/wireless/ath/ath6kl/init.c
-    blobna 'Used[ ][(]for[ ]now[)][^*]*\([*]\+[^/*][^*]*\)*[*]*["]bdata\.bin["][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/ath/ath6kl/init.c
-    blobname 'mrvl[/]pcie8766_uapsta\.bin' 'drivers/net/wireless/mwifiex/pcie\.[ch]'
-    blobname 'usbduxsigma_firmware\.bin' drivers/staging/comedi/drivers/usbduxsigma.c
-    blobname 'as102_data[12]_[sd]t\.hex' drivers/staging/media/as102/as102_fw.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)Array\[\(Boot\|Main\|Data\)ArrayLengthPciE\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192e/r8192E_hwimg.c
-    blobna '\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\)*' drivers/staging/rtl8192e/r8192E_firmware.c
-    blobname 'imx[/]sdma[/]sdma-imx5[13]\.bin' 'arch/arm/boot/dts/imx5[13]-\(babbage\|ard\|evk\|qsb\|smd\)\.dts'
-    blobname 'libertas[/]usb8388_olpc\.bin' drivers/net/wireless/libertas/if_usb.c
-    blobname 'rtlwifi[/]rtl8192cfwU\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-3\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'pcxhr[/]%s' sound/pci/pcxhr/pcxhr_hwdep.c
-    blobname 'mrvl[/]sd8797_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    blobname 's5p-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'rtl_nic[/]rtl8168f-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-
-    blobna '[/][*][\n][ ][*][ ]AMD[ ]microcode[ ]firmware[ ]naming[ ]convention[^*]*\([*]\+[^/*][^*]*\)*[*]*amd-ucode[/][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' arch/x86/kernel/microcode_amd.c
-    blobname 'amd-ucode[/]microcode_amd_fam\(%\.2x\|[0-9a-f]*\)h\.bin' arch/x86/kernel/microcode_amd.c
-
-    # New in 3.3.
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl2g_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_\(workaround\[2\]\[4\]\|wa_phy6_radio11_ghz2\)[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]da9052_chg_current_lim\[2\]\[DA9052_CHG_LIM_COLS\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]u32[ ]const[ ]vc_tbl\[3\]\[68\]\[2\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]const[ ]int[ ]PIO2_CHANNEL_BANK\[32\][ ]=' drivers/staging/vme/devices/vme_pio2.h
-    defsnc 'static[ ]const[ ]struct[ ]sirfsoc_baudrate_to_regv[ ]baudrate_to_regv\[\][ ]=' drivers/tty/serial/sirfsoc_uart.c
-    defsnc 'static[ ]const[ ]struct[ ]dispc_coef[ ]coef[35]_M\(1[123469]\|2[26]\|32\)\[8\][ ]=' drivers/video/omap2/dss/dispc_coefs.c
-    defsnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]=' lib/clz_tab.c
-    defsnc 'static[ ]struct[ ]cs42l73_mclk_div[ ]cs42l73_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs42l73.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
-    defsnc 'static[ ]int[ ]_process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' sound/soc/codecs/sigmadsp.c
-    defsnc 'int[ ]process_sigma_firmware\(_regmap\)\?[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*_process_sigma_firmware' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware_regmap[)]' sound/soc/codecs/sigmadsp.c
-    accept 'extern[ ]int[ ]process_sigma_firmware_regmap[(][^)]*[)][;]' sound/soc/codecs/sigmadsp.h
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
-    # These appear to be identifiers within the device itself,
-    # used to get information from it.
-    accept '#define[ ]LANCER_\(FW_DUMP\|VPD_[PV]F\)_FILE[	]*["][/]\(dbg[/]dump\.bin\|vpd[/]ntr_[pv]f\.vpd\)["]' drivers/net/ethernet/emulex/benet/be_cmds.h
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-it9135-0[12]\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-hauppauge-hvr930c-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'brcm[/]brcmfmac\.\(bin\|txt\)' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-
-    # New in 3.4
-    blobname 'dvb-fe-xc5000-1\.6\.114\.fw' drivers/media/common/tuners/xc5000.c
-    blobname 'dvb-fe-xc5000c-41\.024\.5\.fw' drivers/media/common/tuners/xc5000.c
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.SD31\|\.DB132\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-    ;;
-
-  */*freedo*.patch | */*logo*.patch)
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm
-    ;;
-
-  */patch-3.7*)
-    # Removed chunks matched by entries that don't appear in the patch context.
-    initnc '[	]0x019806b8[,][\n][	]0x1427f116[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0xf1160198[,][\n][	]0xb6041427[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    # Present in 3.7 and removed in the patch (for --reverse-patch).
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    # Chunks matched by other entries that don't appear in the patch context.
-    initnc '[	][{][ ]19200000[,][ ]216000000[,]' arch/arm/mach-tegra/tegra20_clocks_data.c
-    initnc '[	]0x16019806[,][\n][	]0x041427f1[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0x98069221[,][\n][	]0x27f11601[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '[	][{]0x0000a284\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    initnc '[	][{]0x0000a574\([,][ ]0x9c1fff0b\)*\([,][ ]0x5e001eeb\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a580[,][ ]0x00000000[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a584\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a0b4\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000982c\([,][ ]0x05eea6d4\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    initnc '[	][{][ ]184[,][ ]0x00[ ][}][,]' sound/soc/codecs/lm49453.c
-    # Already present in 3.7.
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-    ;;
-
-  */patch-3.6*)
-    # Present in patch for 3.6.4.
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # Present in patch for 3.6.5.
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    # Specific to the 3.7 patch
-    accept '[	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]7[)],[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][ ]request_firmware[(][)][ ]returns[ ]non-zero' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(]firmware_p[)][;]' drivers/base/firmware_class.c
-    accept '[ ][*][	]Asynchronous[ ]variant[ ]of[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware\(_nowait\)\?[(]' include/linux/firmware.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    accept '[	][{]0x00009e1c,[ ]0x0001cf9c,[ ]0x[0-9a-fx{},\n	 ]*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '[;][/][*]@@[ ]-391,17[ ][+]407,17[ ]@@[*][/][;][\n]\([ ]*[123],\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*1,\)*' scripts/dtc/dtc-lexer.lex.c_shipped
-    accept '[;][/][*]@@[ ]-395,16[ ][+]423,16[ ]@@[*][/][;][\n][ ]*0,\([ ]*2,\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*2,\)*' scripts/dtc/dtc-parser.tab.c_shipped
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[ 12][0-9],\)*[\n]\)*\([ ]*[12][0-9],\)*[ ]*24' scripts/dtc/dtc-parser.tab.c_shipped
-    
-    # Already in 3.6, but changed or moved thus present in patch to 3.7:
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    # Present in 3.6 but removed in the patch:
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    # Specific for the 3.7-to-3.6 reverse patch:
-    accept '[	]err[ ]=[ ]request_firmware[(]&fw,[ ]patch,[ ]dev[)][;]' sound/pci/hda/hda_hwdep.c
-    defsnc '\(static[ ]const[ ]struct[ ]\(stk1160\|saa7113\)config\|[}]\)[ ]\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    accept '[ ]kernel[(]driver[)]:[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[1-4],\)*[\n]\)*\([ ]*[ 1][0-9],\)*[ ]*12' scripts/dtc/dtc-parser.tab.c_shipped
-    ;;
-
-  */patch-3.5*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    # Present in 3.5 and in patch to 3.6:
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(high\|low\|mixed\)_\(power\|ob_db\)\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_wo_xlna_rx_gain\)\?_1_1\(_\(baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_1_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed[^\n]*[\n][	]*complete_all[(][&]rproc->firmware_loading_complete' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '[	][{]\(0x0000a288[,][ ]0x00000220\|0x0000a430[,][ ]0x1ce739ce\|0x0000a540[,][ ]0x\(49005e72\|4e02246c\)\|0x0000a5f4[,][ ]0x\(6f82bf16\|778a308c\)\|0x0000a50c[,][ ]0x10000023\|0x00009e04[,][ ]0x001c2020\|0x00009e44[,][ ]0x62321e27\)\([,][ ]0x[0-9a-f]*\)*[}][,]\([\n][	][{]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*[}][,]\)*' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    # For reversal of 3.5-to-3.6 patch only.
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc 'uint32_t[ ]nva3_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    initnc 'uint32_t[ ]nvc0_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc 'const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-    ;;
-
-  */patch-3.4*gnu*3.5*)
-    # This is far too general for deblobbing, but ok for patch checking.
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[*][/][;][\n][	][{]0x0000\(9830\|a288\|a0b4\|a138\)[,][ ]0x00000[0-9a-f]*[}]\?[,]' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    # Already present in 3.4, but moved or changed in 3.5:
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.SD31\|\.DB132\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-    # Required for reverse patch only:
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    ;;
-
-  */patch-3.3*gnu*)
-    # These patterns are *way* too broad for general use, but they're fine
-    # for patches between deblob-checked releases.
-    accept 'static[ ]\(int\|void\)[ ]_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware[(]const' drivers/base/firmware_class.c
-    accept '[	]*ret[ ]=[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]*_request_firmware_cleanup' drivers/base/firmware_class.c
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	]0x43[,][ ]11[,][	]0x00[,][0-9xa-f, 	\n]*' drivers/media/video/gspca/pac7302.c
-    accept '\([ 	][{][ ]0x[12][02][,][ ]0x[0-9a-f][0-9a-f][,][ ]0x[0-9a-f][0-9a-f][ ][}][,][\n]\?\)\+[	][{][ ]0[ ][}][ ][/][*][ ]TERMINATING[ ]ENTRY[ ][*][/]' sound/usb/6fire/control.c
-    # Some of the above were present before, but not covered by these
-    # specific patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # New in 3.4.
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-    # Removed in 3.4, for --reverse-patch only.
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    accept '-3[,]-2[,]-2[,]-1[,]-1[,]0[,][0-9,\n]*[}][;]' drivers/hwmon/via686a.c
-    accept '[	][{]0xa1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,]\([\n][	][{]0x[ac]1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,][}][,]\)*' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */3.4.1-stable-queue.patch* | */patch-3.4*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43legacy_request_firmware[(]s[^\n]*[*][/][;]' drivers/net/wireless/b43legacy/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    ;;
-
-  */atl1c_net_next_update-3.[34].patch)
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    ;;
-
-  */drivers-media-update.patch)
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    accept '[	]0x43,[ ]11,[	][0-9a-fx, 	\n]*' drivers/media/video/gspca/pac7302.c
-    # Entries above are in 3.3; below are for 3.4.
-    blobname 'dvb-usb-terratec-h7-drxk\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-terratec-h7-az6007\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-fe-xc5000\(-1\.6\.114\|c-41\.024\.5-31875\)\.fw' drivers/media/common/tuners/xc5000.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6007.c
-    accept '[	]*\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	]*\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/af9035.c
-    ;;
-
-  */brcm80211.patch)
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    ;;
-
-  */patch*-3.1.*)
-    defsnc 'static[ ]const[ ]u8[ ]ak4642_reg\[AK4642_CACHEREGNUM\][ ]=' sound/soc/codecs/ak4642.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */media-DiBcom*.patch)
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-3.1-rc*)
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/staging/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    defsnc '[ ][ ]static[ ]\(const[ ]\)\?unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=[ ][{][*][/][;]' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]config[ ]FIRMWARE_IN_KERNEL[*][/][;].*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/ov9740.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    # for reverse patch
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,]' drivers/firmware/sigma.c
-    accept '[	][	]pr_debug[(]["]%s:[ ]request_firmware[(][)][ ]failed' drivers/firmware/sigma.c
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    # this was a bug in an earlier deblob
-    accept '#define[ ]WL_4329_NVRAM_FILE[ ]["][^"]*["]' drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' drivers/staging/brcm80211/brcmfmac/bcmchip.h
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'static[ ]struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'u16[]LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057_rev5[ ]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'struct[ ]radio_\(20xx_\)\?regs[ ]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    ;;
-
-  */patch*-3.0-rc*)
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    ;;
-
-  */patch*-2.6.39-rc*)
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sn9c20x.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKDataStruct[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    # The above match the reversed patch
-    defsnc 'static[ ]unsigned[ ]char[ ]bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]\(firmware_p\|fw\),' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware_nowait[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    # New in 2.6.39 below, present in earlier versions above
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    ;;
-
-  */rtl8180*.patch)
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    ;;
-
-  */patch*-2.6.38-rc*)
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_asm.S
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|m[ec]\)\.bin' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_\(wo_xlna_\)\?rx_gain\)\?_1_0\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_\(high\|low\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # Above is for patterns new in 2.6.38, below is for older patterns.
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?const[ ]u32[ ]b43_ntab_framestruct\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/b43/tables_nphy.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]tones\[2048\][ ]=\([ ][{][*][/][;]\)\?' drivers/staging/easycap/easycap_testcard.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc '\(static[ ]\)\?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\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225\(z2\)\?_\(agc\|ofdm\|\(tx_\)\?\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    ;;
-
-  */patch*-2.6.38*)
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    ;;
-
-  */patch*-2.6.37-rc*) # up to -rc8-git3
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]const[ ]A_INT32[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)-0[-0-9]*\.fw' drivers/staging/brcm80211/README
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.bin' drivers/staging/brcm80211/brcmfmac/README
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-    # Above is for patterns new in 2.6.37, below is for older patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[pxm]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]int[ ]be_load_fw[(][^\n;{]*[)][*][/][;][\n][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware' drivers/net/benet/be_main.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([ ][{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    defsnc '\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    accept '[*][ ]drivers[/]staging[/]ft1000[/]ft1000-\(pcmcia\|usb\)[/]ft[13]000\.img:[ ]Removed\.' 'patch-libre.*'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    ;;
-
-  */patch*-2.6.36.*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    ;;
-
-  */patch*-2.6.36-rc*)
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?const[ ]u32[ ]r[67]xx_default_state\[\][ ]=\([*][/][;]\)\?' drivers/gpu/drm/radeon/r600_blit_shaders.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]void[ ]get_regs[(]struct[ ]net_device[ ][*]dev,\([^\n]*[*][/][;]\)\?' drivers/net/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    blobname 'ar9271[.]fw' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]__devinit[ ]bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h 
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{]\([*][/][;]\)\?[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-    # New in 2.6.36-rc3:
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[px]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    blobname 'ar7010\(_1_1\)\?[.]fw' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ][{][^}]*[}][ ]\(stk1160\|saa7113\)config\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    ;;
-
-  */hid-support*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-    ;;
-
-  */sched*)
-    accept 'CPU[ ]\+before[ ]\+after[\n]\([\n][01][0-9][ ]\+:[ ][0-9]\+[ ]\+:[ ][67]\)*'
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    accept '\(All[ ]CPUS[ ]idle[ ]for[ ]10[ ]seconds[ ][(]HZ=1000[)]\|One[ ]CPU[ ]busy[ ]rest[ ]idle[ ]for[ ]10[ ]seconds\|All[ ]CPUs[ ]busy[ ]for[ ]10[ ]seconds\)[\n][0-9 \n]*'
-    accept 'domainstats:[ ]*domain0[\n][ ]*cpu[ ]*cnt[ ]*bln[ ]*fld[ ]*imb[ ]*gain[ ]*hgain[ ]*nobusyq[ ]*nobusyg[\n 0-9:]*'    
-    ;;
-
-  */*-loongson.patch)
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]rtl8225bcd_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_agc\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'static[ ]u32[ ]MAC_REG_TABLE\[\]\[3\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]ZEBRA2_CCK_OFDM_GAIN_SETTING\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u16[ ]rtl8225z2_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]rtl8225z2_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    ;;
-
-  */patch*-2.6.34-rc*)
-    # New in 2.6.34, should be duplicated in the main pattern set.
-    blobname 'cxgb4[/]t4fw\.bin' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '#[ ]\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    # Pattern present prior to 2.6.34, or already adjusted for 2.6.34 in
-    # the main pattern set.
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blob 'sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|cx\(23\(1xx\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    accept '\([/][*][*][\n]\)\?[ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[ ]of[ ]request_firmware' drivers/base/firmware_class.c
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sunplus.c
-    # above is in -rc1, below in -rc2
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    blobname '%s%[du]%s["],[\n 	]*name_pre,[ ]\(priv->fw_\)\?index,[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    ;;
-
-  */patch*-2.6.33-rc*)
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\([\n]\+[}]\)\?' include/linux/firmware.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    defsnc 'struct[ ]nv17_tv_norm_params[ ]nv17_tv_norms\[NUM_TV_NORMS\][ ]=' drivers/gpu/drm/nouveau/nv17_tv_modes.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' drivers/net/wireless/prism54/islpci_dev.c
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func[(]void[ ][*]arg[)][*][/][;][\n]\([^\n]*[\n]\)\+\([	]ret[ ]=[ ]_request_firmware[(]\|request_firmware_nowait[(]\)\?' drivers/base/firmware_class.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ]af9015_properties\(\[\]\)\?[ ]=[ ][{][*][/][;][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]bridge_start_ov965x\[\]\[2\][ ]=[ ][{][*][/][;][\n]' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_init\[\]\[8\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271_1_0\[\]\[[26]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?int[ ]request_firmware\(_nowait\)\?[(]\(const[ ]struct[ ]firmware[ ][*][*]\|[\n][	]struct[ ]module[ ][*]\)' include/linux/firmware.h
-    blobname 'isl38\(77\|86\|90\)' drivers/net/wireless/prism54/islpci_dev.c
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    accept '#include[ ]["]rf\.h["][\n]#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt30[79]0[/]\)\?\)\?firmware\.h["]' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-    # The above are covered by the main Linux patterns.  The patterns
-    # below are to be kept in sync in the 2.6.33 block within the main
-    # Linux patterns, until 2.6.33 is released.
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'const[ ]static[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_largepage[ ]=' drivers/mtd/nand/mxc_nand.c
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' drivers/net/bnx2x_main.c
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' drivers/net/bnx2x_main.c
-    blob '#define[ ]FW_VERSION\([ ]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ ]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_302x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]u16[ ]bios_to_linux_keycode\[256\][ ]=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname 'sndscape\.co\([?dx01234]\|%d\)' 'sound/\(isa/\(Kconfig\|sscape\.c\)\|oss/README\.OSS\)'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    ;;
-
-  */patch*-2.6.27*|*/patch*-2.6.31.*)
-    accept '[	]request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-2.6.30*)
-    initnc '[}][ ]bclk_divs\[\][ ]=[ ][{]' sound/soc/codecs/wm8903.c
-    ;;
-
-  */patch*-2.6.28-rc*)
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]UINT32[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]snr_table[ ]\(qpsk\|qam\(16\|64\)\)_snr_table\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    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
-
-    # Non-Free license in entire file.
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]saharadbgdownload\.h["]' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-
-    # ok from earlier releases
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix.txt|Documentation/serial/specialix.txt'
-    defsnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/pci/delkin_cb\.c\|drivers/ide/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-
-    # These are removed in 2.6.28, they're here so --reverse-patch tests pass.
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    initc '[	]static[ ]const[ ]__u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov7630_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */patch*-2.6.27-rc* | */patch*-2.6.26-git* | */git-linus.diff)
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]des3_ede_cbc_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF[\n]' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    initnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    initnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    initnc 'static[ ]const[ ]__u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]spca561_init_data\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    initnc 'static[ ]const[ ]__u16[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[MAX_[A-Z]*\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]__u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(mi13[12]0\|po3130\|hv7131r\|ov76[67]0\)_\(\(soc\)\?initQ\?VGA_\(JPG\|data\)\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    initnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' 'Documentation/bt8xxgpio.txt'
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]=[*][/][;]' scripts/genksyms/parse.c_shipped
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" arch/arm/inlcude/asm/hardware/entry-macro-iomd.S
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\(60\|48\)\)_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    ;;
-
-  */linux-2.6-gspca-git.patch)
-    # Probably for 2.6.28 or .29.
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    # Already in 2.6.27.
-    initnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc '[	][/][*][ ]Some[ ]more[ ]unknown[ ]stuff[ ][*][/]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]ov7648_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # No merge needed
-    defsnc '#if[ ]0[\n][	][{]0x30,[ ]0x0154,[ ]0x0008[}],' drivers/media/video/gspca/sunplus.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
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    ;;
-
-  */patch*-2.6.26-rc*)
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    initnc 'static[ ]struct[ ]hash_testvec[ ]\(hmac_sha\(224\|256\)\|aes_xcbc128\|crc32c\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]\(bf_cbc\|serpent\|tnepres\|aes\(_\(cbc\|ctr\|xts\)\)\?\|x\?tea\|anubis\(_cbc\)\?\|xeta\|camellia_cbc\|cts_mode\)_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{"]' crypto/tcrypt.h
-    initnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' drivers/ide/legacy/umc8672.c
-    initnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]\(ini\|act\|rco\)_time_value\[\]\[8\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c
-    initnc 'u16[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    oprepline '#define[ ]AR5K_RATES_11[ABG][ ]' drivers/net/wireless/ath5k/ath5k.h
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]1000,[ ]2,[ ]139,[ ]1[ ][}],[	]' drivers/net/wireless/ath5k/ath5k.h
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    # new in 2.6.26
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]=' drivers/media/video/cx18/cx18-av-vbi.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    blob 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\)[ ]=[ ]'"$sepx$blobpat*$sepx[;]" drivers/s390/net/qeth_core_mpc.c # from drivers/s390/net/qeth_mpc.c in 2.6.25
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    accept "[ ][ ][{][ ]0x00014284,[ ][ ]19688[ ][}],[\n][ ][ ][{][ ]0x00011104,[ ][ ]20400[ ][}],[\n][ ][ ][{][ ]$blobpat*[ ][}]," drivers/video/geode/lxfb_ops.c # won't be necessary in rc3
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_blackfin_clut224.ppm
-    ;;
-  */patch*-2.6.25-rc*)
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]=[ ][{][*][/][;]'
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]='
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^[]*\[\][ ]='
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{]'
-    initnc 'static[ ]struct[ ][^\n]*_testvec[ ][^\n]*_tv_template\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]='
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11\([ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    accept '[ ][ ][ ][ ][ ]\([ ]49,\)*[\n]\([ 0-9,]*[\n]\)*[ ][ ][ ][ ][ ]\([ ]49,\)*$'
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]='
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$'
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    accept '[	]24[ ]=>[ ]\[[\n]\([^\n]*[\n]\)*[	]\]\(,[ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    accept '[	][	]'"[']"'0x[^\n]*[\n]\([^\n]*[\n]\)*[	]\]\([,][ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    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 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.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
-    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
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv1[07]_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-
-    # drm-upgrayedd.patch
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-
-    # Although the developers of the drivers are not trying to stop
-    # anyone from modifying it or understanding it, they acknowledge
-    # 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.
-
-    # initnc 'static[ ]uint32_t[ ]nv\(4[013467ace]\|49_4b\|8[46]\)_ctx_\(voodoo\|prog\)\[\][ ]=' 'drivers/char/drm/nv40_graph.c|.*'
-    ;;
-  */linux-2.6*-lirc.patch | */lirc-*.patch)
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    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
-    ;;
-  */v4l1*.patch)
-    accept '[(]at[ ]which[ ]point[ ]it[ ]should[ ]use[ ]request_firmware'
-    ;;
-  */linux-2.6-v4l-dvb*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-  # post 2.6.37 fixes start here
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_p1g_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.identify_state[ ]*=[ ]technisat_usb2_identify_state,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    # present in 2.6.37
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    # post 2.6.35 fixes start here
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxxx.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ][*][/][;][\n][	]\.firmware[ ]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["],[\n][	]\.download_firmware[ ]=[ ]m920x_firmware_download' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    blobname 'v4l-cx23885-enc\.fw' drivers/media/video/cx23885/cx23885-417.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]brit_7660\[\]\[7\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]contrast_7660\[\]\[31\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]colors_7660\[\]\[6\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    # removed bits
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    # post 2.6.33 fixes start here
-    defsnc 'static[ ]struct[ ]i2c_reg_u8[ ]ov9655_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # rebase-gspca-to-latest 2.6.33ish starts here
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov6650_sensor_init\[\]\[8\][ ]=[*][/][;]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]hv7131r_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]po1030_sensor_param1\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    # rebase-gspca-to-latest ends here
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u16[ ]spca508_vista_init_data\[\]\[3\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/spca508.c
-    defsc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]mi1310_socinitVGA_JPG\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/vc032x.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    ;;
-  */linux-2.6-modsign-mpilib.patch)
-    initnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]='
-    ;;
-  */linux-2.6-netdev*.patch | \
-  */linux-2.6.27-net-r8169-2.6.28.patch)
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    ;;
-  */linux-2.6-wireless*.patch | */linux-2.6-ath5k.patch | \
-  */git-wireless-dev.patch | */linux-2.6-zd1211rw-mac80211.patch)
-    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\)\[\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]='
-    initnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11A[ ]'
-    oprepline '#define[ ]AR5K_RATES_11B[ ]'
-    oprepline '#define[ ]AR5K_RATES_11G[ ]'
-    oprepline '#define[ ]AR5K_RATES_TURBO[ ]'
-    oprepline '#define[ ]AR5K_RATES_XR[ ]'
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c # ?
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-
-    # git logs
-    accept '[ ][ ][ ]sudo[ ]modprobe[ ]ath5k[ ]debug=0x00000400[\n][ 	]*[\n]\([ 	]*Band[^\n]*[\n]\([ 	]*\(\(channels\|rates\):\|[- 	0-9a-f]*\|\[\.\.\.[ ]etc[ ]\]\)[\n]\)\+\)\+[ ][ ][ ][ ][ ][ ][ ]540[ ]000c[ ]0000[ ]0000'
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]3000,[ ]1,[ ]150,[ ]3[ ][}],'
-
-    # Fedora 8ish kernel-xen builds
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5211_ini_mode\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5212_rf511[12]_ini_mode\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_gain_cck_ofdm\[\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]rf_vals_abg_5222\[\][ ]='
-    ;;
-
-  */linux-2.6-netdev-e1000e*.patch)
-    initnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    ;;
-
-  */deblob-check-testsuite/*)
-    accept 'accept[(][^)]*[)]'
-    blobname 'blob[(][^)]*[)]'
-    blobname 'blobeol[^\n]*[\n]'
-    ;;
-  esac
-}
-
-# Regular expression that matches a literal constant.
-constx="[0-9][0-9a-fA-FxX]*"
-# Regular expression that matches a separator between consecutive
-# literal constants.
-sepx="\\([ 	\\n]*\\(\\([ 	\\n]\\|[,:{}LlUu\"\'\\\\][,:{} 	\\nLlUu\"\'\\\\]*\\)[xX\$]\\?\\|[.][a-zA-Z][a-zA-Z0-9]*[ 	][ 	]*[\$]\\?\\)\\)"
-
-# Regular expression that matches a continuation of a blob, after an
-# initial constant.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobcont="\\($sepx$constx\\)"
-
-# Regular expression that matches the initial constant of a blob plus
-# its continuation.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobpat="$constx$blobcont"
-
-# Regular expression that matches a blob with at least the number of
-# constants specified as sensitivity.
-blobseq="$blobpat\\{$sens,\\}"
-
-# Regular expression that matches the beginning of the pattern or a
-# line break.  It must be \(\)ed, such that it can be named in
-# replacement patterns.
-bol="\\(^\\|[\\n]\\)"
-
-# Regular expression that matches the end of the pattern or a line
-# break.  It must be \(\)ed, such that it can be named in replacement
-# patterns.
-eol="\\([\\n]\\|\$\\)"
-
-# Regular expression that matches a C-style comment.
-comment="\\([/][*][^*]*\\([*]\\+[^*/][^*]*\\)*[*]\\+[/]\\|[/][/][^\\n]*[\\n]\\)"
-
-# Regular expression that matches comments typically used in assembly.
-asmcomment="\\($comment\\|[;#][^\\n]*[\\n]\\)"
-
-# Regular expression that matches a braced initializer containing at
-# least one blob.
-initblob="[^\\n=]*=\\([ 	\\n\\\\]\\|$comment\\)*[{]\\([^;]\\|$comment\\)*$blobseq\\([^;]\\|$comment\\)*[}]\\?\\([ 	\\n\\\\]*\\|$comment\\)[;]\\?"
-
-# Regular expression that matches a C (possibly multi-line) #define
-# that contains a blob.
-defineblob='[ 	]*#[ 	]*define[ 	][^\n]*\([\\][\n][^\n]*\)*'"$blobseq"'\([^\n]*\\[\n]\)*'
-
-# Regular expression that matches an assembly label followed by a blob
-# without any intervening label.
-asmblob="[a-zA-Z_.][^\\n:;#/ 	]*:\\([^:{}]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
-
-# Set up the sed script that will go through the (processed) input,
-# looking for sequences of blobs and printing whatever was requested.
-# It accepts 3 arguments.
-
-# $1 is the action in case blobs were found in the input.
-
-# $2 is the action in case no blobs were found, not even false positives.
-
-# $3 is the action in case false positives were located.
-
-# $4 is the action for every complete input pattern.
-
-set_sed_main () {
-  falsepos=`${SED-sed} -n 's,^[+]\^*,,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-  blobs=`${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-
-  # Regular expression that matches one or more blobs without
-  # intervening line breaks.
-  sblobctx="\\(\\([^\\n]\\|[/][*](DEBLOB-\\nBED)[*][/]\\)*$blobs\\)\\+"
-
-  # Regular expression that matches the context for a long blob match.
-  lblobctx="\\($initblob\\|$defineblob\\|$asmblob\\|$sblobctx\\)"
-
-  if test "X$falsepos" != X; then
-    check_false_positives="$v:???falsepos
-/$bol$falsepos/!b blob
-$v:+++falsepos
-h
-s/$bol$falsepos/\\1;\/**\/;/g
-# See if, after removing all matches, we end up without any blobs.
-$v:???blobs
-/$blobs/!{
-  g
-  b falsepos
-}
-g
-"
-  else
-    falsepos="$.^"
-    check_false_positives=
-  fi
-
-  $echo "#! /bin/sed -nf
-
-/^$/N
-/^[\\n]\\?;[/][*]\\(end .*\\)\\?[*][/];$/{
-  $4
-  d
-}
-# /^;[/][*]begin /!{
-#   : internal_error
-#   $v:internal_error
-#   s,.*,Internal error at\\n&[\\n]/*(DEBLOB-\\nERROR)*/,;
-#   q 2
-# }
-$v:reading file in
-h
-n
-: read_more
-/^;[/][*]end [^\\n]*[*][/];$/! {
-  H
-  n
-  b read_more
-}
-H
-g
-$4
-$v:read all
-s/^\\(;[/][*]begin [^\\n]*[\\n]\\)*//
-s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//
-$v:???!blobs
-/$blobs/!b clean
-$check_false_positives
-# Fall through.
-: blob
-$v:blob
-$1
-d
-: clean
-$v:clean
-$2
-d
-: falsepos
-$v:falsepos
-$3
-d
-
-: print_matches
-$v:print_matches
-/^$falsepos/! {
-  $v:delete unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  : print_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_matches_nomatch_loop
-  }
-  x
-  b print_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/ {
-  i\\
-::: $file :::
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_matches
-
-: print_marked_matches
-$v:print_marked_matches
-/^$falsepos/! {
-  h
-  s/[\\n]$falsepos.*//
-  : print_marked_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_matches_nomatch_loop
-  }
-  x
-  b print_marked_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  i\\
-::: $file :::
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_marked_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_matches
-
-: print_blobs
-$v:print_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_blobs_match_loop
-    }
-    G
-    b print_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_blobs_nomatch_loop
-  }
-  x
-  b print_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_blobs
-
-: print_marked_blobs
-$v:print_marked_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_blobs_match_loop
-    }
-    G
-    b print_marked_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^falsepos//
-    b print_marked_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_marked_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_blobs_nomatch_loop
-  }
-  x
-  b print_marked_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_marked_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_blobs
-
-: print_cblobs
-$v:print_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_cblobs_match_loop
-    }
-    G
-    b print_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_cblobs_nomatch_loop
-  }
-  x
-  b print_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_cblobs
-
-: print_marked_cblobs
-$v:print_marked_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_cblobs_match_loop
-    }
-    G
-    b print_marked_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_marked_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_marked_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_cblobs_nomatch_loop
-  }
-  x
-  b print_marked_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_marked_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_cblobs
-
-: print_both
-$v:print_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_both_nomatch_loop
-  }
-  x
-  b print_both_delete_to_eol
-}
-h
-i\\
-::: $file :::
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: print_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_both
-
-: list_matches
-$v:list_matches
-/^$falsepos/! {
-  $v:print unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  p
-  : list_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_matches_nomatch_loop
-  }
-  x
-  b list_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-}
-p
-g
-s/^\\($falsepos[^\\n]*\\)//
-: list_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_matches
-
-: list_blobs
-$v:list_blobs
-/^$falsepos/ {
-  $v:print false positive
-  # This is tricky.  We don't want to deblob the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:print false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1\\n/
-    : list_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      P
-      s/^[^\\n]*[\\n]//
-      x
-      b list_blobs_match_loop
-    }
-    G
-    b list_blobs_delete_to_eol
-  }
-  h
-  s/^\\($falsepos[^\\n]*\\)[\\n].*/\\1/
-  p
-  g
-  s/^\\($falsepos[^\\n]*\\)//
-  b list_blobs_delete_to_eol
-}
-/^[^\\n]*$blobs/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_blobs_nomatch_loop
-  }
-  x
-  b list_blobs_delete_to_eol
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: list_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_blobs
-
-: list_both
-$v:list_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_both_nomatch_loop
-  }
-  x
-  b list_both_delete_to_eol
-}
-h
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: list_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_both
-
-" > "$scriptname"
-
-  scriptcmd='${SED-sed} -n -f "$scriptname"'
-
-  case $vp in
-  [01]) xv= ;;
-  2) xv='# ';;
-  esac
-
-  sedunbreak='
-: restart
-/[/][*](DEBLOB-$/ {
-  N
-  /[/][*](DEBLOB-[\n]ERROR)[*][/]/{q 1;}'"
-$xv"'s,[/][*](DEBLOB-[\n]BED)[*][/],,
-  b restart
-}
-p
-'
-  scriptcmd2='${SED-sed} -n -e "$sedunbreak"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_python_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  cat >> "$scriptname" <<EOF
-#! /usr/bin/python
-
-import sys
-import re
-
-# Should we replace blobs and false positives with replacement?
-replace_blob = 0
-replace_falsepos = 0
-replacement = '/*(DEBLOBBED)*/'
-
-# Should we print lines containing blobs, false positives, and neither?
-print_blob = 0
-with_context = 0
-print_falsepos = 0
-print_nomatch = 0
-
-# Should we print the input stack if we find blobs or false positives?
-list_blob = 0
-list_falsepos = 0
-
-# Should we forget everything we know about false positives?
-falsepos = None
-no_falsepos = 0
-
-verbose = $vp
-
-# Which of the defaults above should we override?
-$@ = 1
-
-EOF
-
-  if test "X$DEBLOB_CHECK_PYTHON_REGEX" = Xdebug; then
-    ${SED-sed} -e 's,^[+-],,' -e "$adjust_rx" \
-	-e "s,.*,re.compile (r'&'),g" \
-	< "$regex_name" >> "$scriptname"
-  fi
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,falsepos = r'(?P<falsepos>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,blob = r'(?P<blob>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,cblob = r'(?P<cblob>\\1)'," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-if no_falsepos or falsepos is None:
-    falsepos = r'(?!)'
-
-rx = '^%s|%s' % (falsepos, blob)
-
-if with_context:
-    rx += '|^' + cblob
-
-rxc = re.compile('(?<=.)(?:%s)' % rx, re.M | re.S)
-
-filenames = None
-
-s = '\n'
-
-for line in sys.stdin:
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if line[:3] == ';/*' and line[-4:] == '*/;\n':
-        if line[3:9] == 'begin ':
-            nextfilenames = (line[9:-4], filenames)
-            if s == '\n':
-                filenames = nextfilenames
-                del nextfilenames
-                continue
-        elif line[3:7] == 'end ':
-	    #if print_blob and not print_nomatch:
-	    # from time import time
-	    # sys.stderr.write('%i %i %s\n' % (time(), len(s), filenames[0]))
-            assert line[7:-4] == filenames[0]
-            nextfilenames = filenames[1]
-        else:
-            assert filenames != None
-            s += line
-            continue
-    else:
-        assert filenames != None
-        s += line
-        continue
-
-    if verbose:
-            print('looking for matches')
-            sfilenames = filenames
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print(filenames[0] + ' within')
-                filenames = filenames[1]
-            filenames = sfilenames
-
-    if s[-1] == '\n':
-        s = s[:-1]
-
-    pp = 1
-    p = pend = 0
-    match = rxc.search (s, p)
-    while match != None:
-        firstmatch = match
-        blobs = falses = 0
-        while 1:
-            if verbose:
-                print('found match')
-            what = match.lastgroup
-
-            if what == 'cblob':
-                if verbose: print('match is a blob context')
-                pend = s.find ('\n', match.end()) + 1
-                if pend == 0:
-                    pend = len(s)
-                p = match.start() + 1
-                blob_p = 2
-            else:
-                blob_p = what == 'blob'
-                assert blob_p or what == 'falsepos'
-
-                if blob_p:
-                    if verbose: print('match is a blob')
-                    blobs += 1
-                else:
-                    if verbose: print('match is a false positive')
-                    falses += 1
-
-                if blob_p and replace_blob or not blob_p and replace_falsepos:
-                    s = s[:match.start(what)] + replacement + s[match.end(what):]
-                    p = match.start(what) + len(replacement)
-                    if pend > match.start(what):
-                        pend += p - match.end(what)
-                else:
-                    p = match.end(what)
-
-                if p > pend:
-                    pend = s.find ('\n', p) + 1
-                    if (pend == 0):
-                        pend = len(s)
-
-            match = rxc.search (s, p)
-            if match is None or match.start () >= pend or \
-	       (blob_p and not print_blob and not falses) or \
-	       (not blob_p and not print_falsepos and not blobs):
-                break
-
-        if print_nomatch:
-            sys.stdout.write (s[pp:firstmatch.start() + 1])
-            pp = firstmatch.start() + 1
-        else:
-            pp = s.rfind ('\n', 0, firstmatch.start () + 1) + 1
-
-        if print_blob and blobs or print_falsepos and falses:
-            if not print_nomatch:
-                sfilenames = filenames
-                while filenames != None:
-                    print('::: ' + filenames[0] + ' :::')
-                    filenames = filenames[1]
-                filenames = sfilenames
-            sys.stdout.write (s[pp:pend])
-            pp = pend
-
-        if list_blob and blobs or list_falsepos and falses:
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print (filenames[0] + ' within')
-                filenames = filenames[1]
-            exit (1)
-
-    if print_nomatch:
-        sys.stdout.write(s[pp:])
-
-    if verbose:
-        print('no further matches')
-
-    s = '\n'
-    filenames = nextfilenames
-    del nextfilenames
-
-assert filenames is None
-
-exit (0)
-EOF
-
-  scriptcmd="${PYTHON-python} "'"$scriptname"'
-}
-
-set_perl_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  # Add $ before arguments
-  set `echo "$@" | sed 's,\(^\|= *\),&$,g'`
-
-  cat >> "$scriptname" <<\EOF
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-# Should we replace blobs and false positives with replacement?
-my $replace_blob = 0;
-my $replace_falsepos = 0;
-my $replacement = '/*(DEBLOBBED)*/';
-
-# Should we print lines containing blobs, false positives, and neither?
-my $print_blob = 0;
-my $with_context = 0;
-my $print_falsepos = 0;
-my $print_nomatch = 0;
-
-# Should we print the input stack and exit if we find blobs or false positives?
-my $list_blob = 0;
-my $list_falsepos = 0;
-
-# Should we forget everything we know about false positives?
-my $falsepos;
-my $no_falsepos = 0;
-
-EOF
-
-  cat >> "$scriptname" <<EOF
-my \$verbose = $vp;
-
-# Which of the defaults above should we override?
-$@ = 1;
-
-EOF
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,\$falsepos = qr'(?<falsepos>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,my \$blob = qr'(?<blob>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,my \$cblob = qr'(?<cblob>\\1)'ms if \$with_context;," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-$falsepos = qr/(?<falsepos>(?!))/ if $no_falsepos || ! defined $falsepos;
-
-my $rx = qr/^$falsepos|$blob/ms;
-
-$rx = qr/$rx|^$cblob/ms if $with_context;
-
-my @filenames;
-my $nfilenames = 0;
-my $nextnfilenames;
-
-my $s = '';
-
-while (<STDIN>) {
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if (m:^[;][/][*](begin|end) (.*)[*][/][;]$:) {
-	if ($1 eq 'begin') {
-	    print "entering $2\n" if $verbose;
-	    $filenames[$nfilenames] = $2;
-	    $nextnfilenames = $nfilenames + 1;
-	    if ($s eq '') {
-		$nfilenames = $nextnfilenames;
-		next;
-	    }
-	} else {
-	    $nextnfilenames = $nfilenames - 1;
-	    print "processing $filenames[$nextnfilenames]\n" if $verbose;
-	}
-    } else {
-	$s .= $_;
-	next;
-    }
-
-    if ($verbose) {
-	print "looking for matches in\n";
-	for (my $i = $nfilenames; --$i > 0; ) {
-	    print $filenames[$i], " within\n";
-	}
-	print $filenames[0], "\n";
-    }
-
-    $s =~ s/[\n]$//;
-
-    my $pp = my $p = 0;
-
-    my $matchfound = substr ($s, $p) =~ /$rx/o;
-    while ($matchfound) {
-	print "found first match\n" if $verbose;
-	my $firstmatchstart = $-[0] + $p;
-	my $blobs = my $falses = 0;
-	my $matchstart = $-[0] + $p;
-	my $pend = -1;
-	my $blob_p;
-	do {{
-	    my $matchend = $+[0] + $p;
-	    print "found match $matchstart..$matchend\n" if $verbose;
-	    print "$&" if $verbose > 1;
-
-	    if (defined $+{'cblob'}) {
-		print "match is a blob context\n" if ($verbose);
-		$pend = index ($s, "\n", $matchend) + 1;
-		$pend = length $s if !$pend;
-	    }
-
-	    if (defined $+{'falsepos'}) {
-		print "match is a false positive\n" if ($verbose);
-		# $matchend -= $+[0] - $+[1];
-		$blob_p = 0;
-		$falses++;
-	    } elsif (defined $+{'blob'}) {
-		$blob_p = 1;
-		$blobs++;
-		print "match is a blob at $matchstart\n" if ($verbose);
-	    } else {
-		$blob_p = 2;
-		$p = $matchstart;
-		print "searching up to $pend\n" if $verbose;
-		next;
-	    }
-
-	    if ($blob_p ? $replace_blob : $replace_falsepos) {
-		substr ($s, $matchstart, $matchend - $matchstart,
-			$replacement);
-		$p = $matchstart + length $replacement;
-		$pend += $p - $matchend if $pend >= $matchstart;
-	    } else {
-		$p = $matchend;
-	    }
-
-	    $pend = index ($s, "\n", $p) + 1 if $p >= $pend;
-	    $pend = length $s if !$pend;
-	    print "searching up to $pend\n" if $verbose;
-	    $p--;
-	}} while (($matchfound = (substr ($s, $p) =~ /(?<=.)$rx/mso))
-		  && ($matchstart = $-[0] + $p) < $pend
-		  && !($blob_p
-		       ? (!$print_blob && !$falses)
-		       : (!$print_falsepos && !$blobs)));
-
-	print "last match before $pend\n" if $verbose;
-
-	if ($print_nomatch) {
-	    print substr ($s, $pp, $firstmatchstart - $pp);
-	    $pp = $firstmatchstart;
-	} elsif (($print_blob || $print_falsepos) && $firstmatchstart > 0) {
-	    $pp = rindex ($s, "\n", $firstmatchstart - 1) + 1;
-	}
-
-	if (($print_blob && $blobs) || ($print_falsepos && $falses)) {
-	    if (!$print_nomatch) {
-		for (my $i = $nfilenames; $i-- > 0;) {
-		    print "::: ", $filenames[$i], " :::\n";
-		}
-	    }
-
-	    print substr ($s, $pp, $pend - $pp);
-	    $pp = $pend;
-	}
-
-	if (($list_blob && $blobs) || ($list_falsepos && $falses)) {
-	    for (my $i = $nfilenames; --$i > 0;) {
-		print $filenames[$i], " within ";
-	    }
-	    print $filenames[0], "\n";
-	    exit (1);
-	}
-    }
-
-    print substr ($s, $pp) if $print_nomatch;
-
-    print "no further matches\n" if $verbose;
-
-    $s = '';
-    $nfilenames = $nextnfilenames;
-}
-
-exit (0);
-EOF
-
-  scriptcmd="${PERL-perl} "'"$scriptname"'
-}
-
-set_awk_main () {
-  adjust_rx='
-s,[$]$,([\\n]|$),;
-s,\[^\],[^\\],g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  case " = $@ = " in
-  *" = no_falsepos = "*) falsepos='$.^';;
-  *) falsepos=`
-    ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'
-    `
-     case $falsepos in "") falsepos='$.^';; esac;;
-  esac
-
-  blob=`
-    ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'`
-
-  case " = $@ = " in
-  *" = with_context = "*) cblob=`
-    $echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx"
-   `;;
-  *) cblob='$.^';;
-  esac
-
-  xrs= nrs="# " eor="RT" eormatch='RT ~ ' eornl='[\n]' eornlsz=1
-  # Uncomment the line below to disable the use of a regular
-  # expression for the awk Record Separator, a GNU awk extension.
-  # Using this extension appears to save a lot of memory for long
-  # deblob-check runs.
-  # xrs="# " nrs= eor='$0' eormatch='' eornl= eornlsz=0
-
-  cat >> "$scriptname" <<EOF
-#! /bin/gawk --re-interval -f
-
-BEGIN {
-    # Should we replace blobs and false positives with replacement?
-    replace_blob = 0;
-    replace_falsepos = 0;
-    replacement = "/*(DEBLOBBED)*/";
-
-    # Should we print lines containing blobs, false positives, and neither?
-    print_blob = 0;
-    with_context = 0;
-    print_falsepos = 0;
-    print_nomatch = 0;
-
-    # Should we print the input stack and exit if we find blobs or
-    # false positives?
-    list_blob = 0;
-    list_falsepos = 0;
-
-    # Should we forget everything we know about false positives?
-    no_falsepos = 0;
-
-    verbose = $vp;
-
-    nfilenames = 0;
-    s = "\n";
-
-    # Which of the defaults above should we override?
-    $@ = 1;
-
-    # requires GNU awk RS extension:
-$xrs	RS = "[;][/][*](begin|end) [^\n]*[*][/][;][\n]";
-}
-# requires GNU awk RS extension:
-$xrs { s = s \$0; }
-# does not require GNU awk RS extension:
-$nrs !/^[;][/][*].*[*][/][;]$/ {
-$nrs	 s = s \$0 "\n";
-$nrs	 next;
-$nrs }
-$eormatch /^[;][/][*]begin .*[*][/][;]$eornl$/ {
-    filenames[nfilenames] = substr($eor, 10, length ($eor) - 12 - $eornlsz);
-    if (verbose) print "entering " nfilenames ": " filenames[nfilenames];
-    nextnfilenames = nfilenames + 1;
-    if (s == "\n") {
-	nfilenames = nextnfilenames;
-	next;
-    }
-}
-$eormatch /^[;][/][*]end .*[*][/][;]$eornl$/ {
-    nextnfilenames = nfilenames - 1;
-    if (verbose)
-	print "got to the end of " nextnfilenames ": " filenames[nextnfilenames];
-}
-{
-    if (verbose) {
-	print "looking for matches";
-	for (i = nfilenames; --i > 0;)
-	    print filenames[i] " within";
-	print filenames[0]
-    }
-
-    s = substr (s, 1, length (s) - 1)
-
-    pp = 2;
-    p = pend = 1;
-    if (verbose > 1) print "searching starting at", substr (s, p, 10)
-    matchfound = match (substr (s, p),
-			/[\n]($falsepos)|[\n]($cblob)|.($blob)/);
-    while (matchfound) {
-	blobs = falses = 0;
-	firstmatchstart = RSTART + p;
-	for (;;) {
-	    matchstart = RSTART + p - 1;
-	    matchlen = RLENGTH;
-	    if (verbose) {
-		print "found match", matchstart, matchlen;
-		if (verbose > 1)
-		    print substr (s, matchstart + 1, matchlen - 1);
-	    }
-
-	    if (match (substr (s, matchstart, matchlen), /^[\n]($falsepos)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a false positive of length", matchlen;
-		blob_p = 0;
-		falses++;
-	    } else if (match (substr (s, matchstart, matchlen), /^.($blob)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a blob of length", matchlen;
-		blob_p = 1;
-		blobs++;
-	    } else if (match (substr (s, matchstart, matchlen), /^[\n]($cblob)$/) == 1) {
-		if (verbose) print "match is a blob context";
-		pend = index (substr (s, matchstart + matchlen), "\n");
-		if (pend)
-		    pend += matchstart + matchlen;
-		else
-		    pend = length (s);
-		p = matchstart + 1;
-		blob_p = 2;
-		if (verbose > 1) print "range is:", substr (s, p, pend - p);
-	    }
-
-	    if (blob_p < 2) {
-		if (blob_p ? replace_blob : replace_falsepos) {
-		    s = substr (s, 1, matchstart)		\\
-			replacement				\\
-			substr (s, matchstart + matchlen);
-		    p = matchstart + length (replacement) - 1;
-		    pend += (p + 1 - matchstart - matchlen);
-		} else
-		    p = matchstart + matchlen - 1;
-
-		if (p >= pend) {
-		    i = index (substr (s, p + 1), "\n");
-		    if (i)
-			pend = p + 1 + i;
-		    else
-			pend = length (s)
-		}
-	    }
-
-	    if (verbose) print "search until", pend;
-
-	    if (!(matchfound = match (substr (s, p),
-				      /[\n]($falsepos)|[\n]($cblob)|.($blob)/)) ||
-		p + RSTART >= pend ||
-		(blob_p ?
-		 (!print_blob && !falses) :
-		 (!print_falsepos && !blobs)))
-		break;
-	}
-
-	if (print_nomatch)
-	    printf "%s", substr (s, pp, firstmatchstart - pp);
-	else if (print_blob || print_falsepos) {
-	    lastline = substr (s, pp, firstmatchstart - pp);
-	    sub (/.*[\n]/, "", lastline);
-	    if (verbose) print "lastline: " lastline "\\\\n"
-	    firstmatchstart -= length (lastline);
-	}
-	pp = firstmatchstart;
-
-	if (verbose) print "match set range:", pp, pend
-
-	if ((print_blob && blobs) || (print_falsepos && falses)) {
-	    if (!print_nomatch)
-		for (i = nfilenames; i-- > 0;)
-		    print "::: " filenames[i] " :::";
-	    printf "%s", substr (s, pp, pend - pp);
-	    pp = pend;
-	}
-
-	if ((list_blob && blobs) || (list_falsepos && falses)) {
-	    for (i = nfilenames; --i > 0;)
-		print filenames[i] " within";
-	    print filenames[0];
-	    exit (1);
-	}
-    }
-
-    if (print_nomatch)
-	printf "%s", substr (s, pp)
-
-    if (verbose)
-	print "no further matches";
-
-    s = "\n";
-    nfilenames = nextnfilenames;
-    next;
-}
-EOF
-
-  scriptcmd="${AWK-gawk} --re-interval -f "'"$scriptname"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_save_script_input_main () {
-  savename=`mktemp -t deblob-check-input-XXXXXX`
-  scriptcmd="{ echo saving input in $savename && cat > $savename && echo done; }"
-}
-
-# Process an input file named in $1 and run it through the blob
-# recognizer.  Functions set_except and set_sed_cmd provide additional
-# arguments on a per-file and per-action basis.
-
-check () {
-  case "$#" in 1) ;; *) echo ICE >&2; exit 1;; esac
-
-  input=$1
-
-  # Add $1 to falsepos.  Its usage makes it implicitly anchored to the
-  # beginning of the line.  $2, if present, will some day narrow the
-  # falsepos matches to files that match it.
-  addx () {
-    $echo "+^$1" >> $regex_name
-  }
-
-  # Add $1 to falseneg.  Unlike addx, it is NOT implicitly anchored to
-  # the beginning of the line.  $2, if present, will some day narrow
-  # the falseneg matches to files that match it.
-  badx () {
-    $echo "-$1" >> $regex_name
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';'.  $2 may optionally name the files in which this
-  # match is to be disregarded as a potential blob.
-  initnc () {
-    addx "$1[^;]*[;]\\?" $2
-  }
-
-  # Same as initnc, but require the terminating semicolon.
-  defsnc () {
-    addx "$1[^;]*[;]" $2
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';' that's not within comments.
-  initc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]\\?" $2
-  }
-
-  # Same as initc, but require the terminating semicolon.
-  defsc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]" $2
-  }
-
-  # Accept as a non-blob an expression $1 that would have otherwise
-  # triggered blob detection.  The expression must end in a way that
-  # would trigger the blob detection machinery.
-  accept () {
-    addx "$1" $2
-  }
-
-  # Match up to the end a comment started in $1.
-  ocomment () {
-    addx "$1[/]*\\([*]*[^*/][/]*\\)*[*]\+[/]" $2
-  }
-
-  # Match $1 followed by backslash-terminated lines and a last
-  # non-backslash-terminated line.
-  oprepline () {
-    addx "$1\\([^\\\\\\n]*[\\\\][\\n]\\)*[^\\\\\\n]*$" $2
-  }
-
-  # Match $1 in $2 as a blob.  Not anchored.
-  blobna () {
-    badx "$1" $2
-  }
-
-  # Match $1 as a blob anywhere.  $2 is just for documentation purposes.
-  blobname () {
-    badx "$1"
-  }
-
-  # Match $1 in $2 as a blob.  The expectation is a match in the
-  # beginning of line, but we don't do anchoring of blob patterns ATM.
-  blob () {
-    badx "$1" $2
-  }
-
-  regex_name=`mktemp -t deblob-check-regex-XXXXXX`
-  tempfiles="$regex_name"
-
-  set_except "$input"
-
-  # Check that all regular expressions match our requirements.
-  ${SED-sed} -n '
-s,^\(-\^\?\|[+]\^\),,
-h
-s,[$]$,,
-s,\([^\\]\|^\)\(\(\\\\\)*\)\(\[^\?[]]\?[^]]\+\]\([*]\|\\[+?]\)\?\(\\\\\)*\)\+,\1\2,g
-/\([^\\]\|^\)\(\\\\\)*\([{(|)}?+^$"'"'"'; 	]\)\|^$/{
-  g
-  i\
-BAD regular expression:
-  p
-  q 1
-}' $regex_name >&2 || exit 1
-
-  scriptname=`mktemp -t deblob-check-script-XXXXXX`
-  tempfiles="$tempfiles $scriptname"
-
-  scriptcmd=false
-  scriptcmd2=
-
-  $set_cmd "$input"
-
-  for f in $tempfiles; do
-    case $f in "$scriptname") ;;
-    *) rm -f "$f" ;;
-    esac
-  done
-  tempfiles="$scriptname"
-
-  # Choose the input source...
-  case $input in
-  -) in= ;;
-  *) in='< "$input"' ;;
-  esac
-
-  set fnord # shifted out below
-
-  # Decompress as needed...
-  case $input in
-  *.bz2) cmd='bunzip2' ;;
-  *.xz) cmd='unxz' ;;
-  *.lz) cmd='lzip -d' ;;
-  *.gz | *.tgz) cmd='gunzip' ;;
-  *) cmd= ;;
-  esac
-  if test -n "$cmd"; then
-    set "$@" "$cmd"
-  fi
-
-  # Extract or otherwise munge...
-  case /$input in
-  *.tar*)
-    cmd="tar -xf - --to-command='echo \";/*begin \$TAR_FILENAME*/;\"; cat; echo; echo \";/*end \$TAR_FILENAME*/;\"'"
-    ;;
-  *.patch | *.patch.*z* | */patch-* | *.diff | *.diff.*z*)
-    if $reverse_patch; then
-      s=- r=+
-    else
-      s=+ r=-
-    fi
-    sedpatch="
-      /^[$r]/b testlastline;
-      # /^[*!]/ {
-      # 	s,^,context diffs are not properly supported\\n,;
-      # 	W /dev/stderr
-      # 	d;
-      # }
-      /^\\(@@ \\|$s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^\\($s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^$s$s$s / {
-	H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	s,^$s$s$s \\(.*\\)$,;/*begin \\1*/;,;
-	p;
-	d;
-      }
-      /^@@ / {
-        H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	# A number of patterns for patches depend on the ;/*@@ lines for
-	# context.
-	s,^.*$,;/*begin &*/;\\n;/*&*/;,;
-	p;
-	d;
-      }
-      s,^[ !$s],,
-      p;
-      :testlastline
-      $ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      d;"
-    cmd='${SED-sed} "$sedpatch"'
-    ;;
-  *)
-    cmd='cat'
-    ;;
-  esac
-  cmd="{ echo \";/*begin $input*/;\"; $cmd; echo; echo \";/*end $input*/;\"; }"
-  set "$@" "$cmd"
-
-  case $input in
-  *.tar*)
-    cmd="{ cat; cat > /dev/null; }"
-    set "$@" "$cmd"
-    ;;
-  esac
-
-  # Then run through the selected action.
-  set "$@" "$scriptcmd"
-
-  case $scriptcmd2 in "" | cat) ;;
-  *) set "$@" "$scriptcmd2"
-  esac
-
-  # test $# = 1 || set "$@" "cat"
-
-  shift # fnord goes out here
-
-  pipe=
-  for cmd
-  do
-    if test -z "$pipe"; then
-      pipe="$cmd $in"
-    else
-      pipe="$pipe | $cmd"
-    fi
-  done
-
-  eval "$pipe"
-  status=$?
-
-  $rm $tempfiles
-  tempfiles=
-
-  (exit $status)
-}
-
-# If no input given, use stdin.
-case $# in
-0)
-  test -t 0 && echo reading from standard input >&2
-  set fnord -
-  shift
-  ;;
-esac
-
-# The lines below commented out out #list: can be used to get a list
-# of matching inputs.  ATM this is useless, so we just use a shell
-# boolean.
-
-#list: n=$#
-pass=:
-
-tempfiles=
-trap "status=$?; test -z \"$tempfiles\" || rm -f $tempfiles; (exit $status); exit" 0 1 2 15
-
-process_arg=
-
-# Go through each of the input files in the command line.
-for file
-do
-  case $process_arg in
-  "") ;;
-  --implied-prefix | --prefix | -i)
-    prefix=$file
-    case $prefix in
-    /*/) ;;
-    */) prefix=/$prefix ;;
-    /*) prefix=$prefix/ ;;
-    *) prefix=/$prefix/ ;;
-    esac
-    process_arg=
-    continue
-    ;;
-  *)
-    echo Internal error with process_arg=$process_arg >&2
-    exit 1
-    ;;
-  esac
-
-  case $sawdashdash$file in
-  --implied-prefix | --prefix | -i)
-    process_arg=$file
-    continue
-    ;;
-  esac
-
-  # If we print anything whatsoever (even a blank line) while
-  # processing it, we've failed.
-  if check "$file"; then
-    :
-  else
-    pass=false
-    #list: set fnord "$@" "$file"
-    #list: shift
-  fi
-done
-
-case $process_arg in
-"") ;;
-*)
-  echo Missing argument to $process_arg >&2
-  exit 1
-  ;;
-esac
-
-#list: shift $n
-
-#list: exec test $# = 0
-$pass
-exit
diff --git a/helpers/DATA/linux-lts-quantal/megaraid.patch b/helpers/DATA/linux-lts-quantal/megaraid.patch
deleted file mode 100644
index 8b74efa2e..000000000
--- a/helpers/DATA/linux-lts-quantal/megaraid.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -ru linux-2.6.35.orig/drivers/scsi/megaraid.c linux-2.6.35/drivers/scsi/megaraid.c
---- linux-2.6.35.orig/drivers/scsi/megaraid.c	2010-08-01 22:11:14.000000000 +0000
-+++ linux-2.6.35/drivers/scsi/megaraid.c	2011-05-02 20:30:39.000000000 +0000
-@@ -4995,9 +4995,14 @@
- 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
- 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
- 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-+        {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
-+                HP_SUBSYS_VID, HP_NETRAID1M_SUBSYS_DID, 0, 0, 0},
-+        {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
-+                HP_SUBSYS_VID, HP_NETRAID2M_SUBSYS_DID, 0, 0, 0},
- 	{0,}
- };
- MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
-+#define HBA_SIGNATURE 0x3344
- 
- static struct pci_driver megaraid_pci_driver = {
- 	.name		= "megaraid_legacy",
-diff -ru linux-2.6.35.orig/drivers/scsi/megaraid.h linux-2.6.35/drivers/scsi/megaraid.h
---- linux-2.6.35.orig/drivers/scsi/megaraid.h	2010-08-01 22:11:14.000000000 +0000
-+++ linux-2.6.35/drivers/scsi/megaraid.h	2011-05-02 20:31:01.000000000 +0000
-@@ -84,6 +84,9 @@
- #define LSI_SUBSYS_VID			0x1000
- #define INTEL_SUBSYS_VID		0x8086
- 
-+#define HP_NETRAID1M_SUBSYS_DID 0x60E7
-+#define HP_NETRAID2M_SUBSYS_DID 0x60E8
-+
- #define HBA_SIGNATURE	      		0x3344
- #define HBA_SIGNATURE_471	  	0xCCCC
- #define HBA_SIGNATURE_64BIT		0x0299
diff --git a/helpers/DATA/linux-lts-saucy/check.sh b/helpers/DATA/linux-lts-saucy/check.sh
deleted file mode 100644
index ea1f2c704..000000000
--- a/helpers/DATA/linux-lts-saucy/check.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-files=`find -type f`
-while read -r line
-do
-    ./deblob-check $line
-done <<< "$files"
diff --git a/helpers/DATA/linux-lts-saucy/deblob-3.11 b/helpers/DATA/linux-lts-saucy/deblob-3.11
deleted file mode 100755
index aaf33cff2..000000000
--- a/helpers/DATA/linux-lts-saucy/deblob-3.11
+++ /dev/null
@@ -1,2774 +0,0 @@
-#!/bin/sh
-
-#    Copyright (C) 2008-2013 Alexandre Oliva <lxoliva@fsfla.org>
-#    Copyright (C) 2008 Jeff Moe
-#    Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
-#
-#    This program is part of GNU Linux-libre, a GNU project that
-#    publishes scripts to clean up Linux so as to make it suitable for
-#    use in the GNU Project and in Free System Distributions.
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-
-# deblob - remove non-free blobs from the vanilla linux kernel
-
-# http://www.fsfla.org/svn/fsfla/software/linux-libre
-
-
-# This script, suited for the kernel version named below, in kver,
-# attempts to remove only non-Free Software bits, without removing
-# Free Software that happens to be in the same file.
-
-# Drivers that currently require non-Free firmware are retained, but
-# firmware included in GPLed sources is replaced with /*(DEBLOBBED)*/
-# if the deblob-check script, that knows how to do this, is present.
-# -lxoliva
-
-
-# See also:
-# http://wiki.debian.org/KernelFirmwareLicensing
-# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
-# http://wiki.gnewsense.org/Builder gen-kernel
-
-# Thanks to Brian Brazil @ gnewsense
-
-
-# For each kver release, start extra with an empty string, then count
-# from 1 if changes are needed that require rebuilding the tarball.
-kver=3.11 extra=
-
-case $1 in
---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
-if [ ! -f $check ] ; then
-  if $forced; then
-    die deblob-check script missing, will remove entire files
-  else
-    die deblob-check script missing
-  fi
-  have_check=false
-else
-  have_check=:
-  [ -x $check ] || check="/bin/sh $check"
-fi
-
-filetest () {
-  if [ ! -f $1 ]; then
-    die $1 does not exist, something is wrong && return 1
-  fi
-}
-
-announce () {
-  echo
-  echo "$@"
-}
-
-clean_file () {
-  #$1 = filename
-  filetest $1 || return
-  rm $1
-  echo $1: removed
-}
-
-check_changed () {
-  #$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
-  filetest $1 || return
-  if $have_check; then
-    name=$1
-    set fnord "$@" -d
-    shift 2
-    if $check "$@" -i linux-$kver $name > $name.deblob; then
-      if [ ! -s $name.deblob ]; then
-	die got an empty file after removing blobs from $name
-      fi
-    else
-      die failed removing blobs from $name
-    fi
-    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 && 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
-  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
-  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
-  filetest $1 || return
-  sed "/^config \\($2\\)\$/{p;i\
-	depends on NONFREE
-d;}" $1 > $1.deblob
-  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
-  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
-  filetest $2 || return
-  sed -e "$1" "$2" > "$2".deblob || {
-    die $2: failed: ${3-applied sed script $1} && return 1; }
-  check_changed $2 && echo $2: ${3-applied sed script $1}
-}
-
-reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g
-' "$1" 'disabled non-Free firmware-loading machinery'
-}
-
-maybe_reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request_\(ihex_\)\?firmware\(_nowait\)\?,maybe_reject_\1firmware\2,g
-' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
-}
-
-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
-  undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
-    "disabled non-Free firmware" "$@"
-}
-
-# First, check that files that contain firmwares and their
-# corresponding sources are present.
-
-for f in \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/com.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpc.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc \
-  drivers/net/wan/wanxlfw.inc_shipped \
-    drivers/net/wan/wanxlfw.S \
-  drivers/net/wireless/atmel.c \
-    drivers/net/wireless/atmel.c \
-  drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic79xx.seq \
-  drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic7xxx.seq \
-  drivers/scsi/aic7xxx_old/aic7xxx_seq.c \
-    drivers/scsi/aic7xxx_old/aic7xxx.seq \
-  drivers/scsi/53c700_d.h_shipped \
-    drivers/scsi/53c700.scr \
-  drivers/scsi/sym53c8xx_2/sym_fw1.h \
-    drivers/scsi/sym53c8xx_2/sym_fw1.h \
-  drivers/scsi/sym53c8xx_2/sym_fw2.h \
-    drivers/scsi/sym53c8xx_2/sym_fw2.h \
-  firmware/dsp56k/bootstrap.bin.ihex \
-    firmware/dsp56k/bootstrap.asm \
-  firmware/keyspan_pda/keyspan_pda.HEX \
-    firmware/keyspan_pda/keyspan_pda.S \
-  firmware/keyspan_pda/xircom_pgs.HEX \
-    firmware/keyspan_pda/xircom_pgs.S \
-  sound/pci/cs46xx/imgs/cwcdma.h \
-    sound/pci/cs46xx/imgs/cwcdma.asp \
-; do
-  filetest $f
-done
-
-# Identify the tarball.
-grep -q 'EXTRAVERSION.*-gnu' Makefile ||
-clean_sed "s,^EXTRAVERSION.*,&-gnu$extra,
-" Makefile 'added -gnu to EXTRAVERSION'
-
-grep -q Linux-libre README ||
-clean_sed '
-1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>,
-2,5 s,Linux version [0-9.]*,GNU Linux-libre,
-1,20 s,\(operating system \)\?Unix,Unix kernel,
-/WHAT IS LINUX/i\
-WHAT IS GNU Linux-libre?\
-\
-  GNU Linux-libre is a Free version of the kernel Linux (see below),\
-  suitable for use with the GNU Operating System in 100% Free\
-  GNU/Linux-libre System Distributions.\
-  http://www.gnu.org/distros/\
-\
-  It removes non-Free components from Linux, that are disguised as\
-  source code or distributed in separate files.  It also disables\
-  run-time requests for non-Free components, shipped separately or as\
-  part of Linux, and documentation pointing to them, so as to avoid\
-  (Free-)baiting users into the trap of non-Free Software.\
-  http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\
-\
-  Linux-libre started within the gNewSense GNU/Linux distribution.\
-  It was later adopted by Jeff Moe, who coined its name, and in 2008\
-  it became a project maintained by FSF Latin America.  In 2012, it\
-  became part of the GNU Project.\
-\
-  The GNU Linux-libre project takes a minimal-changes approach to\
-  cleaning up Linux, making no effort to substitute components that\
-  need to be removed with functionally equivalent Free ones.\
-  Nevertheless, we encourage and support efforts towards doing so.\
-  http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\
-\
-  Our mascot is Freedo, a light-blue penguin that has just come out\
-  of the shower.  Although we like penguins, GNU is a much greater\
-  contribution to the entire system, so its mascot deserves more\
-  promotion.  See our web page for their images.\
-  http://linux-libre.fsfla.org/\
-
-' README 'added blurb about GNU Linux-libre'
-
-# Add reject_firmware and maybe_reject_firmware
-grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_FIRMWARE_H\
-#define _LINUX_LIBRE_FIRMWARE_H\
-\
-#include <linux/device.h>\
-\
-#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\
-\
-static inline int\
-report_missing_free_firmware(const char *name, const char *what)\
-{\
-	printk(KERN_ERR "%s: Missing Free %s\\n", name,\
-	       what ? what : "firmware");\
-	return -EINVAL;\
-}\
-static inline int\
-reject_firmware(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware(const struct firmware **fw,\
-		      const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_firmware(fw, name, device);\
-}\
-static inline void\
-discard_rejected_firmware(const struct firmware *fw, void *context)\
-{\
-	release_firmware(fw);\
-}\
-static inline int\
-reject_firmware_nowait(struct module *module, int uevent,\
-		       const char *name, struct device *device,\
-		       gfp_t gfp, void *context,\
-		       void (*cont)(const struct firmware *fw,\
-				    void *context))\
-{\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\
-					 device, gfp, NULL,\
-					 discard_rejected_firmware);\
-	if (retval)\
-		return retval;\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware_nowait(struct module *module, int uevent,\
-			     const char *name, struct device *device,\
-			     gfp_t gfp, void *context,\
-			     void (*cont)(const struct firmware *fw,\
-					  void *context))\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware_nowait(module, uevent, name,\
-					      device, gfp, context, cont);\
-	else\
-		return request_firmware_nowait(module, uevent, name,\
-					       device, gfp, context, cont);\
-}\
-\
-#endif /* _LINUX_LIBRE_FIRMWARE_H */\
-' include/linux/firmware.h 'added non-Free firmware notification support'
-
-grep -q _LINUX_LIBRE_IHEX_FIRMWARE_H include/linux/ihex.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_IHEX_H\
-#define _LINUX_LIBRE_IHEX_H\
-\
-static inline int\
-maybe_reject_ihex_firmware(const struct firmware **fw,\
-			   const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_ihex_firmware(fw, name, device);\
-}\
-\
-#endif /* _LINUX_LIBRE_IHEX_H */\
-' include/linux/ihex.h 'added non-Free ihex firmware notification support'
-
-########
-# Arch #
-########
-
-# x86
-
-announce MICROCODE_AMD - "AMD microcode patch loading support"
-reject_firmware arch/x86/kernel/microcode_amd.c
-clean_blob arch/x86/kernel/microcode_amd.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD'
-clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/Makefile
-
-announce MICROCODE_AMD_EARLY - "Early load AMD microcode"
-clean_blob arch/x86/kernel/microcode_amd_early.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD_EARLY'
-clean_mk CONFIG_MICROCODE_AMD_EARLY arch/x86/kernel/Makefile
-
-announce MICROCODE_INTEL - "Intel microcode patch loading support"
-reject_firmware arch/x86/kernel/microcode_intel.c
-clean_blob arch/x86/kernel/microcode_intel.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL'
-clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/Makefile
-
-announce MICROCODE_INTEL_EARLY - "Early load Intel microcode"
-clean_blob arch/x86/kernel/microcode_intel_early.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL_EARLY'
-clean_mk CONFIG_MICROCODE_INTEL_EARLY arch/x86/kernel/Makefile
-
-announce MICROCODE_EARLY - "Early load microcode"
-clean_blob Documentation/x86/early-microcode.txt
-clean_kconfig arch/x86/Kconfig 'MICROCODE_EARLY'
-
-# arm
-
-announce IXP4XX_NPE - "IXP4xx Network Processor Engine support"
-reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob Documentation/arm/IXP4xx
-clean_kconfig arch/arm/mach-ixp4xx/Kconfig 'ARCH_IXP4XX'
-clean_mk CONFIG_IXP4XX_NPE arch/arm/mach-ixp4xx/Makefile
-
-announce ARCH_NETX - "Hilscher NetX based"
-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_blob drivers/net/ethernet/netx-eth.c
-clean_kconfig arch/arm/Kconfig 'ARCH_NETX'
-clean_mk CONFIG_ARCH_NETX arch/arm/Makefile
-
-# mips
-
-# I couldn't figure out where the firmware name actually comes from.
-# If it's from some user-set property, we could reenable it.  -lxo
-announce XRX200_PHY_FW - "XRX200 PHY firmware loader"
-reject_firmware arch/mips/lantiq/xway/xrx200_phy_fw.c
-clean_kconfig arch/mips/lantiq/Kconfig 'XRX200_PHY_FW'
-clean_mk CONFIG_XRX200_PHY_FW arch/mips/lantiq/xway/Makefile
-
-#######
-# ATM #
-#######
-
-announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server"
-reject_firmware drivers/atm/ambassador.c
-clean_blob drivers/atm/ambassador.c
-clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw
-clean_kconfig drivers/atm/Kconfig 'ATM_AMBASSADOR'
-clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile
-
-announce ATM_FORE200E - "FORE Systems 200E-series"
-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 ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver"
-reject_firmware drivers/atm/solos-pci.c
-clean_blob drivers/atm/solos-pci.c
-clean_kconfig drivers/atm/Kconfig 'ATM_SOLOS'
-clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile
-
-########
-# tty #
-########
-
-announce CYCLADES - "Cyclades async mux support"
-reject_firmware drivers/tty/cyclades.c
-clean_blob drivers/tty/cyclades.c
-clean_kconfig drivers/tty/Kconfig 'CYCLADES'
-clean_mk CONFIG_CYCLADES drivers/tty/Makefile
-
-announce ISI - "Multi-Tech multiport card support"
-reject_firmware drivers/tty/isicom.c
-clean_blob drivers/tty/isicom.c
-clean_kconfig drivers/tty/Kconfig 'ISI'
-clean_mk CONFIG_ISI drivers/tty/Makefile
-
-announce MOXA_INTELLIO - "Moxa Intellio support"
-reject_firmware drivers/tty/moxa.c
-clean_blob drivers/tty/moxa.c
-clean_kconfig drivers/tty/Kconfig 'MOXA_INTELLIO'
-clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile
-
-# gpu drm
-
-announce DRM_NOUVEAU - "Nouveau (nVidia) cards"
-reject_firmware drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/falcon.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/falcon.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_kconfig drivers/gpu/drm/nouveau/Kconfig 'DRM_NOUVEAU'
-clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile
-
-announce DRM_MGA - "Matrox g200/g400"
-drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw
-drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw
-reject_firmware drivers/gpu/drm/mga/mga_warp.c
-clean_blob drivers/gpu/drm/mga/mga_warp.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA'
-clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
-
-announce DRM_R128 - "ATI Rage 128"
-drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin
-reject_firmware drivers/gpu/drm/r128/r128_cce.c
-clean_blob drivers/gpu/drm/r128/r128_cce.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128'
-clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile
-
-announce DRM_RADEON - "ATI Radeon"
-drop_fw_file firmware/radeon/R100_cp.bin.ihex firmware/radeon/R100_cp.bin
-drop_fw_file firmware/radeon/R200_cp.bin.ihex firmware/radeon/R200_cp.bin
-drop_fw_file firmware/radeon/R300_cp.bin.ihex firmware/radeon/R300_cp.bin
-drop_fw_file firmware/radeon/R420_cp.bin.ihex firmware/radeon/R420_cp.bin
-drop_fw_file firmware/radeon/R520_cp.bin.ihex firmware/radeon/R520_cp.bin
-drop_fw_file firmware/radeon/R600_me.bin.ihex firmware/radeon/R600_me.bin
-drop_fw_file firmware/radeon/R600_pfp.bin.ihex firmware/radeon/R600_pfp.bin
-drop_fw_file firmware/radeon/RS600_cp.bin.ihex firmware/radeon/RS600_cp.bin
-drop_fw_file firmware/radeon/RS690_cp.bin.ihex firmware/radeon/RS690_cp.bin
-drop_fw_file firmware/radeon/RS780_me.bin.ihex firmware/radeon/RS780_me.bin
-drop_fw_file firmware/radeon/RS780_pfp.bin.ihex firmware/radeon/RS780_pfp.bin
-drop_fw_file firmware/radeon/RV610_me.bin.ihex firmware/radeon/RV610_me.bin
-drop_fw_file firmware/radeon/RV610_pfp.bin.ihex firmware/radeon/RV610_pfp.bin
-drop_fw_file firmware/radeon/RV620_me.bin.ihex firmware/radeon/RV620_me.bin
-drop_fw_file firmware/radeon/RV620_pfp.bin.ihex firmware/radeon/RV620_pfp.bin
-drop_fw_file firmware/radeon/RV630_me.bin.ihex firmware/radeon/RV630_me.bin
-drop_fw_file firmware/radeon/RV630_pfp.bin.ihex firmware/radeon/RV630_pfp.bin
-drop_fw_file firmware/radeon/RV635_me.bin.ihex firmware/radeon/RV635_me.bin
-drop_fw_file firmware/radeon/RV635_pfp.bin.ihex firmware/radeon/RV635_pfp.bin
-drop_fw_file firmware/radeon/RV670_me.bin.ihex firmware/radeon/RV670_me.bin
-drop_fw_file firmware/radeon/RV670_pfp.bin.ihex firmware/radeon/RV670_pfp.bin
-drop_fw_file firmware/radeon/RV710_me.bin.ihex firmware/radeon/RV710_me.bin
-drop_fw_file firmware/radeon/RV710_pfp.bin.ihex firmware/radeon/RV710_pfp.bin
-drop_fw_file firmware/radeon/RV730_me.bin.ihex firmware/radeon/RV730_me.bin
-drop_fw_file firmware/radeon/RV730_pfp.bin.ihex firmware/radeon/RV730_pfp.bin
-drop_fw_file firmware/radeon/RV770_me.bin.ihex firmware/radeon/RV770_me.bin
-drop_fw_file firmware/radeon/RV770_pfp.bin.ihex firmware/radeon/RV770_pfp.bin
-reject_firmware drivers/gpu/drm/radeon/radeon_cp.c
-clean_blob drivers/gpu/drm/radeon/radeon_cp.c
-reject_firmware drivers/gpu/drm/radeon/r100.c
-clean_blob drivers/gpu/drm/radeon/r100.c
-reject_firmware drivers/gpu/drm/radeon/r600.c
-clean_blob drivers/gpu/drm/radeon/r600.c
-reject_firmware drivers/gpu/drm/radeon/r600_cp.c
-clean_blob drivers/gpu/drm/radeon/r600_cp.c
-reject_firmware drivers/gpu/drm/radeon/ni.c
-clean_blob drivers/gpu/drm/radeon/ni.c
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
-reject_firmware drivers/gpu/drm/radeon/cik.c
-clean_blob drivers/gpu/drm/radeon/cik.c
-reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c
-clean_blob drivers/gpu/drm/radeon/radeon_uvd.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON'
-clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile
-
-#######
-# dma #
-#######
-
-announce IMX_SDMA - "i.MX SDMA support"
-reject_firmware drivers/dma/imx-sdma.c
-clean_blob arch/arm/mach-imx/mm-imx25.c
-clean_blob arch/arm/mach-imx/mm-imx3.c
-clean_blob arch/arm/mach-imx/mm-imx5.c
-clean_blob arch/arm/boot/dts/imx51.dtsi
-clean_blob arch/arm/boot/dts/imx53.dtsi
-clean_blob arch/arm/boot/dts/imx6qdl.dtsi
-clean_blob arch/arm/boot/dts/imx6sl.dtsi
-clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
-clean_kconfig drivers/dma/Kconfig 'IMX_SDMA'
-clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile
-
-#########
-# Media #
-#########
-
-# media/tuner
-
-announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners"
-undefault_firmware 'XC\(2028\|3028L\)' \
-  drivers/media/tuners/tuner-xc2028.h \
-  drivers/media/pci/saa7134/saa7134-cards.c \
-  drivers/media/pci/ivtv/ivtv-driver.c \
-  drivers/media/pci/cx18/cx18-driver.c \
-  drivers/media/pci/cx18/cx18-dvb.c \
-  drivers/media/pci/cx23885/cx23885-dvb.c \
-  drivers/media/pci/cx23885/cx23885-video.c \
-  drivers/media/pci/cx88/cx88-dvb.c \
-  drivers/media/pci/cx88/cx88-cards.c \
-  drivers/media/usb/em28xx/em28xx-cards.c \
-  drivers/media/usb/dvb-usb/dib0700_devices.c \
-  drivers/media/usb/dvb-usb/cxusb.c
-reject_firmware drivers/media/tuners/tuner-xc2028.c
-clean_blob drivers/media/tuners/tuner-xc2028.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC2028'
-clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/tuners/Makefile
-
-announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards"
-clean_blob drivers/media/usb/tm6000/tm6000-cards.c
-clean_kconfig drivers/media/usb/tm6000/Kconfig 'VIDEO_TM6000_DVB'
-clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/usb/tm6000/Makefile
-
-announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner"
-undefault_firmware 'XC4000' drivers/media/tuners/xc4000.c
-maybe_reject_firmware drivers/media/tuners/xc4000.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC4000'
-clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/tuners/Makefile
-
-announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner"
-undefault_firmware 'XC5000' \
-  drivers/media/usb/cx231xx/cx231xx-cards.c
-reject_firmware drivers/media/tuners/xc5000.c
-clean_blob drivers/media/tuners/xc5000.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC5000'
-clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/tuners/Makefile
-
-announce DVB_USB - "Support for various USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dvb-usb-firmware.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB'
-clean_mk CONFIG_DVB_USB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_V2 - "Support for various USB DVB devices v2"
-reject_firmware drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_V2'
-clean_mk CONFIG_DVB_USB_V2 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
-reject_firmware drivers/media/common/b2c2/flexcop-fe-tuner.c
-
-announce DVB_BT8XX - "BT8xx based PCI cards"
-reject_firmware drivers/media/pci/bt8xx/dvb-bt8xx.c
-
-announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)"
-clean_blob drivers/media/usb/dvb-usb/a800.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_A800'
-clean_mk CONFIG_DVB_USB_A800 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support"
-clean_file drivers/media/usb/dvb-usb/af9005-script.h
-clean_sed '
-s,^	deb_info("load init script\\n");$,	{\n		err("Missing Free init script\\n");\n		return scriptlen = ret = -EINVAL;\n		,;
-' drivers/media/usb/dvb-usb/af9005-fe.c 'report missing Free init script'
-clean_blob drivers/media/usb/dvb-usb/af9005-fe.c
-clean_blob drivers/media/usb/dvb-usb/af9005.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AF9005'
-clean_mk CONFIG_DVB_USB_AF9005 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9015'
-clean_mk CONFIG_DVB_USB_AF9015 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9035'
-clean_mk CONFIG_DVB_USB_AF9035 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/az6007.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AZ6007'
-clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support"
-clean_blob drivers/media/usb/dvb-usb/az6027.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AZ6027'
-clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support"
-clean_blob drivers/media/usb/dvb-usb/cxusb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_CXUSB'
-clean_mk CONFIG_DVB_USB_CXUSB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_core.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIB0700'
-clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB'
-clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mc.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC'
-clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/digitv.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIGITV'
-clean_mk CONFIG_DVB_USB_DIGITV drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)"
-clean_blob drivers/media/usb/dvb-usb/dtt200u.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DTT200U'
-clean_mk CONFIG_DVB_USB_DTT200U drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/dw2102.c
-clean_blob drivers/media/usb/dvb-usb/dw2102.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DW2102'
-clean_mk CONFIG_DVB_USB_DW2102 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.h
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_EC168'
-clean_mk CONFIG_DVB_USB_EC168 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support"
-reject_firmware drivers/media/usb/dvb-usb/gp8psk.c
-clean_blob drivers/media/usb/dvb-usb/gp8psk.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_GP8PSK'
-clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_IT913X - "it913x driver"
-clean_blob drivers/media/usb/dvb-usb-v2/it913x.c
-clean_file Documentation/dvb/it9137.txt
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_IT913X'
-clean_mk CONFIG_DVB_USB_IT913X drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_blob drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_file Documentation/dvb/lmedm04.txt
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_LME2510'
-clean_mk CONFIG_DVB_USB_LME2510 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/m920x.c
-clean_blob drivers/media/usb/dvb-usb/m920x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_M920X'
-clean_mk CONFIG_DVB_USB_M920X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/nova-t-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_NOVA_T_USB2'
-clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver"
-reject_firmware drivers/media/usb/dvb-usb/opera1.c
-clean_blob drivers/media/usb/dvb-usb/opera1.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_OPERA1'
-clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/technisat-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TECHNISAT_USB2'
-clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/ttusb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TTUSB2'
-clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/umt-010.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_UMT_010'
-clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp702x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP702X'
-clean_mk CONFIG_DVB_USB_VP702X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp7045.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP7045'
-clean_mk CONFIG_DVB_USB_VP7045 drivers/media/usb/dvb-usb/Makefile
-
-# dvb/frontends
-
-announce DVB_AF9013 - "Afatech AF9013 demodulator"
-reject_firmware drivers/media/dvb-frontends/af9013.c
-clean_blob 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
-
-announce DVB_BCM3510 - "Broadcom BCM3510"
-undefault_firmware 'BCM3510' drivers/media/dvb-frontends/bcm3510.c
-reject_firmware drivers/media/dvb-frontends/bcm3510.c
-reject_firmware drivers/media/dvb-frontends/bcm3510.h
-clean_sed '
-/You.ll need a firmware/,/dvb-fe-bcm/d;
-' drivers/media/dvb-frontends/bcm3510.c \
-  "removed non-Free firmware notes"
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_BCM3510'
-clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb-frontends/Makefile
-
-announce DVB_DS3000 - "Montage Tehnology DS3000 based"
-undefault_firmware 'DS3000' \
-  drivers/media/dvb-frontends/ds3000.c
-reject_firmware drivers/media/dvb-frontends/ds3000.c
-clean_blob drivers/media/dvb-frontends/ds3000.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DS3000'
-clean_mk CONFIG_DVB_DS3000 drivers/media/dvb-frontends/Makefile
-
-announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
-reject_firmware drivers/media/dvb-frontends/lgs8gxx.c
-clean_blob drivers/media/dvb-frontends/lgs8gxx.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_LGS8GXX'
-clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb-frontends/Makefile
-
-announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based"
-undefault_firmware 'NXT200[24]' drivers/media/dvb-frontends/nxt200x.c
-reject_firmware drivers/media/dvb-frontends/nxt200x.c
-clean_blob drivers/media/dvb-frontends/nxt200x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_NXT200X'
-clean_mk CONFIG_DVB_NXT200X drivers/media/dvb-frontends/Makefile
-
-announce DVB_OR51132 - "Oren OR51132 based"
-reject_firmware drivers/media/dvb-frontends/or51132.c
-clean_blob drivers/media/dvb-frontends/or51132.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51132'
-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_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51211'
-clean_mk CONFIG_DVB_OR51211 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP8870 - "Spase sp8870"
-undefault_firmware 'SP8870' drivers/media/dvb-frontends/sp8870.c
-reject_firmware drivers/media/dvb-frontends/sp8870.c
-reject_firmware drivers/media/dvb-frontends/sp8870.h
-clean_blob drivers/media/dvb-frontends/sp8870.c
-clean_kconfig drivers/media/dvb-frontends 'DVB_SP8870'
-clean_mk CONFIG_DVB_SP8870 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24116 - "Conexant CX24116 based"
-undefault_firmware CX24116 drivers/media/dvb-frontends/cx24116.c
-reject_firmware drivers/media/dvb-frontends/cx24116.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24116'
-clean_mk CONFIG_DVB_CX24116 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP887X - "Spase sp887x based"
-undefault_firmware 'SP887X' drivers/media/dvb-frontends/sp887x.c
-reject_firmware drivers/media/dvb-frontends/sp887x.c
-reject_firmware drivers/media/dvb-frontends/sp887x.h
-clean_blob drivers/media/dvb-frontends/sp887x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SP887X'
-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'
-clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H"
-undefault_firmware 'TDA1004[56]' drivers/media/dvb-frontends/tda1004x.c
-reject_firmware drivers/media/dvb-frontends/tda1004x.c
-reject_firmware drivers/media/dvb-frontends/tda1004x.h
-clean_blob drivers/media/dvb-frontends/tda1004x.c
-clean_kconfig drivers/media/dvb-frontends 'DVB_TDA1004X'
-clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA10071 - "NXP TDA10071"
-reject_firmware drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071_priv.h
-clean_kconfig drivers/media/dvb-frontends 'DVB_TDA10071'
-clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile
-
-# dvb
-
-announce DVB_AS102 - "Abilis AS102 DVB receiver"
-reject_firmware drivers/staging/media/as102/as102_fw.c
-clean_blob drivers/staging/media/as102/as102_fw.c
-clean_kconfig drivers/staging/media/as102/Kconfig 'DVB_AS102'
-clean_mk CONFIG_DVB_AS102 drivers/staging/media/as102/Makefile
-
-announce DVB_AV7110 - "AV7110 cards"
-reject_firmware drivers/media/pci/ttpci/av7110.c
-clean_blob drivers/media/pci/ttpci/av7110.c
-clean_kconfig drivers/media/pci/ttpci/Kconfig 'DVB_AV7110'
-clean_mk CONFIG_DVB_AV7110 drivers/media/pci/ttpci/Makefile
-
-announce DVB_BUDGET - "Budget cards"
-reject_firmware drivers/media/pci/ttpci/budget.c
-reject_firmware drivers/media/dvb-frontends/tdhd1.h
-
-announce DVB_BUDGET_AV - "Budget cards with analog video inputs"
-reject_firmware drivers/media/pci/ttpci/budget-av.c
-
-announce DVB_BUDGET_CI - "Budget cards with onboard CI connector"
-reject_firmware drivers/media/pci/ttpci/budget-ci.c
-
-announce DVB_DRXD - "Micronas DRXD driver"
-reject_firmware drivers/media/dvb-frontends/drxd_hard.c
-clean_blob drivers/media/dvb-frontends/drxd_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXD'
-clean_mk CONFIG_DVB_DRXD drivers/media/dvb-frontends/Makefile
-
-announce DVB_DRXK - "Micronas DRXK based"
-reject_firmware drivers/media/dvb-frontends/drxk_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXK'
-clean_mk CONFIG_DVB_DRXK drivers/media/dvb-frontends/Makefile
-
-announce DVB_NGENE - "Micronas nGene support"
-reject_firmware drivers/media/pci/ngene/ngene-core.c
-clean_blob drivers/media/pci/ngene/ngene-core.c
-clean_kconfig drivers/media/pci/ngene/Kconfig 'DVB_NGENE'
-clean_mk CONFIG_DVB_NGENE drivers/media/pci/ngene/Makefile
-
-announce DVB_PLUTO2 - "Pluto2 cards"
-reject_firmware drivers/media/pci/pluto2/pluto2.c
-
-announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver"
-reject_firmware drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.h
-clean_kconfig drivers/media/common/siano/Kconfig 'SMS_SIANO_MDTV'
-clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/common/siano/Makefile
-
-announce SMS_USB_DRV - "Siano's USB interface support"
-reject_firmware drivers/media/usb/siano/smsusb.c
-clean_blob drivers/media/usb/siano/smsusb.c
-clean_kconfig drivers/media/usb/siano/Kconfig 'SMS_USB_DRV'
-clean_mk CONFIG_SMS_USB_DRV drivers/media/usb/siano/Makefile
-
-announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices"
-drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin
-reject_firmware drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_blob drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_kconfig drivers/media/usb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET'
-clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/usb/ttusb-budget/Makefile
-
-announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices"
-reject_firmware drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob Documentation/dvb/ttusb-dec.txt
-clean_kconfig drivers/media/usb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC'
-clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/usb/ttusb-dec/Makefile
-
-# video
-
-announce VIDEO_BT848 - "BT848 Video For Linux"
-reject_firmware drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob Documentation/video4linux/bttv/README
-clean_kconfig drivers/media/pci/bt8xx/Kconfig 'VIDEO_BT848'
-clean_mk CONFIG_VIDEO_BT848 drivers/media/pci/bt8xx/Makefile
-
-announce VIDEO_CODA - "Chips&Media Coda multi-standard codec IP"
-reject_firmware drivers/media/platform/coda.c
-clean_blob drivers/media/platform/coda.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_CODA'
-clean_mk CONFIG_VIDEO_CODA drivers/media/platform/Makefile
-
-announce VIDEO_CPIA2 - "CPiA2 Video For Linux"
-clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin
-reject_firmware drivers/media/usb/cpia2/cpia2_core.c
-clean_blob drivers/media/usb/cpia2/cpia2_core.c
-clean_kconfig drivers/media/usb/cpia2/Kconfig 'VIDEO_CPIA2'
-clean_mk CONFIG_VIDEO_CPIA2 drivers/media/usb/cpia2/Makefile
-
-announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support"
-reject_firmware drivers/media/pci/cx18/cx18-av-firmware.c
-reject_firmware drivers/media/pci/cx18/cx18-dvb.c
-reject_firmware drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-av-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-dvb.c
-clean_blob drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-driver.c
-clean_kconfig drivers/media/pci/cx18/Kconfig 'VIDEO_CX18'
-clean_mk CONFIG_VIDEO_CX18 drivers/media/pci/cx18/Makefile
-
-announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support"
-reject_firmware drivers/media/usb/cx231xx/cx231xx-417.c
-clean_blob drivers/media/usb/cx231xx/cx231xx-417.c
-clean_kconfig drivers/media/usb/cx231xx/Kconfig 'VIDEO_CX231XX'
-clean_mk CONFIG_VIDEO_CX231XX drivers/media/usb/cx231xx/Makefile
-
-announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support"
-reject_firmware drivers/media/pci/cx23885/cx23885-417.c
-clean_blob drivers/media/pci/cx23885/cx23885-417.c
-reject_firmware drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-video.c
-clean_kconfig drivers/media/pci/cx23885/Kconfig 'VIDEO_CX23885'
-clean_mk CONFIG_VIDEO_CX23885 drivers/media/pci/cx23885/Makefile
-
-announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders"
-reject_firmware drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_blob drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_kconfig drivers/media/i2c/cx25840/Kconfig 'VIDEO_CX25840'
-clean_mk CONFIG_VIDEO_CX25840 drivers/media/i2c/cx25840/Makefile
-
-announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)"
-reject_firmware drivers/media/pci/cx88/cx88-blackbird.c
-clean_kconfig drivers/media/pci/cx88/Kconfig 'VIDEO_CX88_BLACKBIRD'
-clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/pci/cx88/Makefile
-
-announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards"
-clean_blob drivers/media/usb/em28xx/em28xx-dvb.c
-clean_kconfig drivers/media/usb/em28xx/Kconfig 'VIDEO_EM28XX_DVB'
-clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/usb/em28xx/Makefile
-
-announce VIDEO_EXYNOS4_FIMC_IS - "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
-reject_firmware drivers/media/platform/exynos4-is/fimc-is.c
-clean_blob drivers/media/platform/exynos4-is/fimc-is.h
-clean_kconfig drivers/media/platform/exynos4-is/Kconfig 'VIDEO_EXYNOS4_FIMC_IS'
-clean_mk CONFIG_VIDEO_EXYNOS4_FIMC_IS drivers/media/platform/exynos4-is/Makefile
-
-announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support"
-reject_firmware drivers/media/pci/ivtv/ivtv-firmware.c
-clean_blob drivers/media/pci/ivtv/ivtv-firmware.c
-clean_kconfig drivers/media/pci/ivtv/Kconfig 'VIDEO_IVTV'
-clean_mk CONFIG_VIDEO_IVTV drivers/media/pci/ivtv/Makefile
-
-announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support"
-reject_firmware drivers/media/usb/pvrusb2/pvrusb2-hdw.c
-clean_blob drivers/media/usb/pvrusb2/pvrusb2-devattr.c
-clean_kconfig drivers/media/usb/pvrusb2/Kconfig 'VIDEO_PVRUSB2'
-clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/usb/pvrusb2/Makefile
-
-announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above"
-clean_blob include/media/cx2341x.h
-
-announce VIDEO_GO7007 - "Go 7007 support"
-reject_firmware drivers/staging/media/go7007/go7007-driver.c
-clean_blob drivers/staging/media/go7007/go7007-driver.c
-reject_firmware drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/saa7134-go7007.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007'
-clean_mk CONFIG_VIDEO_GO7007 drivers/staging/media/go7007/Makefile
-
-announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support"
-reject_firmware drivers/staging/media/go7007/go7007-loader.c
-clean_blob drivers/staging/media/go7007/go7007-loader.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007_USB_S2250_BOARD'
-clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/staging/media/go7007/Makefile
-
-announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards"
-reject_firmware drivers/media/pci/saa7134/saa7134-dvb.c
-clean_kconfig drivers/media/pci/saa7134/Kconfig 'VIDEO_SAA7134_DVB'
-clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/pci/saa7134/Makefile
-
-announce VIDEO_SAA7164 - "NXP SAA7164 support"
-reject_firmware drivers/media/pci/saa7164/saa7164-fw.c
-clean_blob drivers/media/pci/saa7164/saa7164-fw.c
-clean_kconfig drivers/media/pci/saa7164/Kconfig 'VIDEO_SAA7164'
-clean_mk CONFIG_VIDEO_SAA7164 drivers/media/pci/saa7164/Makefile
-
-announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support"
-reject_firmware drivers/media/usb/tlg2300/pd-main.c
-clean_blob drivers/media/usb/tlg2300/pd-main.c
-clean_kconfig drivers/media/usb/tlg2300/Kconfig 'VIDEO_TLG2300'
-clean_mk CONFIG_VIDEO_TLG2300 drivers/media/usb/tlg2300/Makefile
-
-announce VIDEO_S5C73M3 - "Samsung S5C73M3 sensor support"
-reject_firmware drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_blob drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5C73M3'
-clean_mk CONFIG_VIDEO_S5C73M3 drivers/media/i2c/s5c73m3/Makefile
-
-announce VIDEO_S5K4ECGX - "Samsung S5K4ECGX sensor support"
-reject_firmware drivers/media/i2c/s5k4ecgx.c
-clean_blob drivers/media/i2c/s5k4ecgx.c
-clean_kconfig drivers/media/i2c/s5k4ecgx.c 'VIDEO_S5K4ECGX'
-clean_mk CONFIG_VIDEO_S5K4ECGX drivers/media/i2c/Makefile
-
-announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec"
-reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
-clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_SAMSUNG_S5P_MFC'
-clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/platform/s5p-mfc/Makefile
-
-announce USB_S2255 - "USB Sensoray 2255 video capture device"
-reject_firmware drivers/media/usb/s2255/s2255drv.c
-clean_blob drivers/media/usb/s2255/s2255drv.c
-clean_kconfig drivers/media/usb/Kconfig 'USB_S2255'
-clean_mk CONFIG_USB_S2255 drivers/media/usb/s2255/Makefile
-
-announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam"
-drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw
-reject_firmware drivers/media/usb/gspca/vicam.c
-clean_blob drivers/media/usb/gspca/vicam.c
-clean_kconfig drivers/media/usb/gspca/Kconfig 'USB_GSPCA_VICAM'
-clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/usb/gspca/Makefile
-
-# radio
-
-announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio"
-reject_firmware drivers/media/radio/radio-wl1273.c
-clean_blob drivers/media/radio/radio-wl1273.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL1273'
-clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile
-
-announce RADIO_WL128X - "Texas Instruments WL128x FM Radio"
-clean_blob drivers/media/radio/wl128x/fmdrv_common.h
-reject_firmware drivers/media/radio/wl128x/fmdrv_common.c
-clean_blob drivers/media/radio/wl128x/fmdrv_common.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL128X'
-clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile
-
-#######
-# net #
-#######
-
-announce ACENIC - "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit"
-drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin
-drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin
-reject_firmware drivers/net/ethernet/alteon/acenic.c
-clean_blob drivers/net/ethernet/alteon/acenic.c
-clean_kconfig drivers/net/ethernet/alteon/Kconfig 'ACENIC'
-clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile
-
-announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support"
-clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin
-clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin
-reject_firmware drivers/net/ethernet/adaptec/starfire.c
-clean_blob drivers/net/ethernet/adaptec/starfire.c
-clean_kconfig drivers/net/ethernet/adaptec/Kconfig 'ADAPTEC_STARFIRE'
-clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile
-
-announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support"
-clean_blob drivers/net/ethernet/brocade/bna/bnad.c
-clean_blob drivers/net/ethernet/brocade/bna/cna.h
-reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c
-reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c
-clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig 'BNA'
-clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile
-
-announce BNX2 - "Broadcom NetXtremeII"
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1a.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2.c
-clean_blob drivers/net/ethernet/broadcom/bnx2.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2'
-clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile
-
-announce BNX2X - "Broadcom NetXtremeII 10Gb support"
-drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^#include "bnx2x_init\.h"/,/^$/{
-  /^$/i\
-#define bnx2x_init_block(bp, start, end) \\\
-  return (printk(KERN_ERR "%s: Missing Free firmware\\n", bp->dev->name),\\\
-	  -EINVAL)
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 'report missing Free firmware'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^int bnx2x_nic_load_analyze_req/,/^}$/{
-  /^		u32 my_fw = /i\
-		/*(DEBLOBBED)*/
-  /^		u32 my_fw = /,/<< 24);/d;
-  /^		u32 loaded_fw = /,/^$/{
-    /^$/i\
-\
-		u32 my_fw = ~loaded_fw;
-  }
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 'fail already-loaded test'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
-clean_sed '
-/static void bnx2x_init_wr_wb/{
-  i\
-extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32);
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2X'
-clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile
-
-announce CASSINI - "Sun Cassini"
-drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin
-reject_firmware drivers/net/ethernet/sun/cassini.c
-clean_blob drivers/net/ethernet/sun/cassini.c
-clean_kconfig drivers/net/ethernet/sun/Kconfig 'CASSINI'
-clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile
-
-announce CHELSIO_T3 - "Chelsio AEL 2005 support"
-drop_fw_file firmware/cxgb3/t3b_psram-1.1.0.bin.ihex firmware/cxgb3/t3b_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/t3c_psram-1.1.0.bin.ihex firmware/cxgb3/t3c_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/ael2005_opt_edc.bin.ihex firmware/cxgb3/ael2005_opt_edc.bin
-drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_edc.bin
-drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin
-reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T3'
-clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile
-
-announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support"
-reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T4'
-clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile
-
-announce E100 - "Intel PRO/100+"
-drop_fw_file firmware/e100/d101m_ucode.bin.ihex firmware/e100/d101m_ucode.bin
-drop_fw_file firmware/e100/d101s_ucode.bin.ihex firmware/e100/d101s_ucode.bin
-drop_fw_file firmware/e100/d102e_ucode.bin.ihex firmware/e100/d102e_ucode.bin
-reject_firmware drivers/net/ethernet/intel/e100.c
-clean_sed '
-/^static const struct firmware \*e100_\(reject\|request\)_firmware(/,/^}$/{
-  s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;:
-}' drivers/net/ethernet/intel/e100.c 'proceed without firmware'
-clean_blob drivers/net/ethernet/intel/e100.c
-clean_kconfig drivers/net/ethernet/intel/Kconfig 'E100'
-clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile
-
-announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device."
-clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img
-reject_firmware drivers/staging/ft1000/TODO
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h
-clean_sed '
-/^static int ft1000_reset_card/,/^}$/ {
-  /card_bootload/i\
-		return /*(DEBLOBBED)*/ false;
-}
-' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \
-  'disabled non-Free firmware-loading machinery'
-reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_PCMCIA'
-clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile
-
-announce FT1000_USB - "Driver for ft1000 USB devices."
-clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img
-reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_USB'
-clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile
-
-announce MYRI_SBUS - "MyriCOM Gigabit Ethernet"
-drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin
-
-announce MYRI10GE - "Myricom Myri-10G Ethernet support"
-reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_kconfig drivers/net/ethernet/myricom/Kconfig 'MYRI10GE'
-clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile
-
-announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC"
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'NETXEN_NIC'
-clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile
-
-announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support"
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'QLCNIC'
-clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile
-
-announce R8169 - "Realtek 8169 gigabit ethernet support"
-reject_firmware drivers/net/ethernet/realtek/r8169.c
-clean_blob drivers/net/ethernet/realtek/r8169.c
-clean_kconfig drivers/net/ethernet/realtek/Kconfig R8169
-clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile
-
-announce SLICOSS - "Alacritech Gigabit IS-NIC cards"
-reject_firmware drivers/staging/slicoss/slicoss.c
-clean_blob drivers/staging/slicoss/slicoss.c
-clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS'
-clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile
-
-announce SPIDER_NET - "Spider Gigabit Ethernet driver"
-reject_firmware drivers/net/ethernet/toshiba/spider_net.c
-clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \
-  drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes'
-clean_blob drivers/net/ethernet/toshiba/spider_net.c
-clean_blob drivers/net/ethernet/toshiba/spider_net.h
-clean_kconfig drivers/net/ethernet/toshiba/Kconfig 'SPIDER_NET'
-clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile
-
-announce TEHUTI - "Tehuti Networks 10G Ethernet"
-drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin
-reject_firmware drivers/net/ethernet/tehuti/tehuti.c
-clean_blob drivers/net/ethernet/tehuti/tehuti.c
-clean_kconfig drivers/net/ethernet/tehuti/Kconfig 'TEHUTI'
-clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile
-
-announce TIGON3 - "Broadcom Tigon3"
-drop_fw_file firmware/tigon/tg3.bin.ihex firmware/tigon/tg3.bin
-drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin
-drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin
-reject_firmware drivers/net/ethernet/broadcom/tg3.c
-clean_blob drivers/net/ethernet/broadcom/tg3.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'TIGON3'
-clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile
-
-announce TYPHOON - "3cr990 series Typhoon"
-drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin
-reject_firmware drivers/net/ethernet/3com/typhoon.c
-clean_blob drivers/net/ethernet/3com/typhoon.c
-clean_kconfig drivers/net/ethernet/3com/Kconfig 'TYPHOON'
-clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile
-
-announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter"
-reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_kconfig drivers/net/ethernet/neterion/Kconfig 'VXGE'
-clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile
-
-# appletalk
-
-announce COPS - "COPS LocalTalk PC"
-clean_sed '
-/sizeof(\(ff\|lt\)drv_code)/{
-  i\
-		printk(KERN_INFO "%s: Missing Free firmware.\\n", dev->name);\
-		return;
-}
-/\(ff\|lt\)drv_code/d;
-' drivers/net/appletalk/cops.c 'report missing Free firmware'
-clean_blob drivers/net/appletalk/cops.c
-clean_file drivers/net/appletalk/cops_ffdrv.h
-clean_file drivers/net/appletalk/cops_ltdrv.h
-clean_kconfig drivers/net/appletalk/Kconfig 'COPS'
-clean_mk CONFIG_COPS drivers/net/appletalk/Makefile
-
-# hamradio
-
-announce YAM - "YAM driver for AX.25"
-drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin
-drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin
-reject_firmware drivers/net/hamradio/yam.c
-clean_blob drivers/net/hamradio/yam.c
-clean_kconfig drivers/net/hamradio/Kconfig 'YAM'
-clean_mk CONFIG_YAM drivers/net/hamradio/Makefile
-
-# irda
-
-announce USB_IRDA - "IrDA USB dongles"
-reject_firmware drivers/net/irda/irda-usb.c
-clean_blob drivers/net/irda/irda-usb.c
-clean_kconfig drivers/net/irda/Kconfig 'USB_IRDA'
-clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile
-
-# smsc
-
-announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA"
-drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin
-reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_kconfig drivers/net/ethernet/smsc/Kconfig 'PCMCIA_SMC91C92'
-clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile
-
-# near-field communication
-
-announce NFC_WILINK - "Texas Instruments NFC WiLink driver"
-reject_firmware drivers/nfc/nfcwilink.c
-clean_blob drivers/nfc/nfcwilink.c
-clean_kconfig drivers/nfc/Kconfig 'NFC_WILINK'
-clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile
-
-# pcmcia
-
-# CIS files are not software.
-# announce PCCARD - "PCCard (PCMCIA/CardBus) support"
-# reject_firmware drivers/pcmcia/ds.c
-# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
-# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
-
-announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CCFEM556.cis.ihex firmware/cis/3CCFEM556.cis
-# clean_blob drivers/net/pcmcia/3c574_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
-# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CXEM556.cis.ihex firmware/cis/3CXEM556.cis
-# clean_blob drivers/net/pcmcia/3c589_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
-# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis
-drop_fw_file firmware/cis/PCMLM28.cis.ihex firmware/cis/PCMLM28.cis
-drop_fw_file firmware/cis/DP83903.cis.ihex firmware/cis/DP83903.cis
-drop_fw_file firmware/cis/NE2K.cis.ihex firmware/cis/NE2K.cis
-drop_fw_file firmware/cis/tamarack.cis.ihex firmware/cis/tamarack.cis
-drop_fw_file firmware/cis/PE-200.cis.ihex firmware/cis/PE-200.cis
-drop_fw_file firmware/cis/PE520.cis.ihex firmware/cis/PE520.cis
-# clean_blob drivers/net/pcmcia/pcnet_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
-# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
-
-# usb
-
-announce USB_KAWETH - "USB KLSI KL5USB101-based ethernet device support"
-drop_fw_file firmware/kaweth/new_code.bin.ihex firmware/kaweth/new_code.bin
-drop_fw_file firmware/kaweth/new_code_fix.bin.ihex firmware/kaweth/new_code_fix.bin
-drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code.bin
-drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin
-reject_firmware drivers/net/usb/kaweth.c
-clean_blob drivers/net/usb/kaweth.c
-clean_kconfig drivers/net/usb/Kconfig 'USB_KAWETH'
-clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile
-
-# wireless
-
-announce ATMEL "Atmel at76c50x chipset  802.11b support"
-reject_firmware drivers/net/wireless/atmel.c
-clean_blob drivers/net/wireless/atmel.c
-clean_kconfig drivers/net/wireless/Kconfig 'ATMEL'
-clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile
-
-announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards"
-reject_firmware drivers/net/wireless/at76c50x-usb.c
-clean_blob drivers/net/wireless/at76c50x-usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'AT76C50X_USB'
-clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile
-
-announce B43 - "Broadcom 43xx wireless support (mac80211 stack)"
-maybe_reject_firmware drivers/net/wireless/b43/main.c
-clean_sed '
-/^static int b43_upload_microcode(/,/^}$/{
-  /	if (dev->fw\.opensource) {$/i\
-	if (!dev->fw.opensource) {\
-		b43err(dev->wl, "Rejected non-Free firmware\\n");\
-		err = -EOPNOTSUPP;\
-		goto error;\
-	}
-}' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware'
-# Major portions of firmware filenames not deblobbed.
-clean_blob drivers/net/wireless/b43/main.c
-clean_kconfig drivers/net/wireless/b43/Kconfig 'B43'
-clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile
-
-announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)"
-reject_firmware drivers/net/wireless/b43legacy/main.c
-# Major portions of firwmare filenames not deblobbed.
-clean_blob drivers/net/wireless/b43legacy/main.c
-clean_kconfig drivers/net/wireless/b43legacy/Kconfig 'B43LEGACY'
-clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile
-
-announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMSMAC'
-clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile
-
-announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_SDIO'
-clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_USB'
-clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)"
-reject_firmware drivers/net/wireless/orinoco/fw.c
-clean_blob drivers/net/wireless/orinoco/fw.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'HERMES'
-clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile
-
-announce ORINOCO_USB - "Agere Orinoco USB support"
-reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c
-clean_blob drivers/net/wireless/orinoco/orinoco_usb.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'ORINOCO_USB'
-clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile
-
-announce WLAGS49_H2 - "Agere Systems HERMES II Wireless PC Card Model 0110"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h2.c
-clean_blob drivers/staging/wlags49_h2/sta_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h2.c
-clean_blob drivers/staging/wlags49_h2/wl_profile.c
-clean_sed '
-  s,\(.*hcf_status = \)dhf_download_fw(.*&fw_image );,//& /*(DEBLOBBED)*/\n\1HCF_ERR_INCOMP_FW;,
-' drivers/staging/wlags49_h2/wl_main.c 'reject built-in non-Free firmware'
-clean_kconfig drivers/staging/wlags49_h2/Kconfig 'WLAGS49_H2'
-clean_mk CONFIG_WLAGS49_H2 drivers/staging/Makefile
-
-announce WLAGS49_H25 - "Linksys Systems HERMES II.5 Wireless-G_CompactFlash_Card"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h25.c
-clean_blob drivers/staging/wlags49_h2/sta_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h25.c
-clean_kconfig drivers/staging/wlags49_h25/Kconfig 'WLAGS49_H25'
-clean_mk CONFIG_WLAGS49_H25 drivers/staging/Makefile
-
-announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2100.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2100'
-clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile
-
-announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2200.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2200'
-clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile
-
-announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection"
-reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945.h
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL3945'
-clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWL4965 - "Intel Wireless WiFi 4965AGN"
-reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965.c
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL4965'
-clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN"
-reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-5000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-6000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-7000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-1000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-2000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLWIFI'
-clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile
-
-announce IWLMVM - "Intel Wireless WiFi MVM Firmware support"
-reject_firmware drivers/net/wireless/iwlwifi/mvm/nvm.c
-clean_kconfig drivers/net/wireless/iwlwifi/mvm/Kconfig 'IWLMVM'
-clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/mvm/Makefile
-
-announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support"
-reject_firmware drivers/net/wireless/libertas/firmware.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS'
-clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_cs.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_CS'
-clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_sdio.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SDIO'
-clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_spi.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SPI'
-clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_usb.c
-clean_blob drivers/net/wireless/libertas/README
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB'
-clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
-reject_firmware drivers/net/wireless/libertas_tf/if_usb.c
-clean_blob drivers/net/wireless/libertas_tf/if_usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB'
-clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile
-
-announce MWIFIEX - "Marvell WiFi-Ex Driver"
-clean_blob drivers/net/wireless/mwifiex/README
-reject_firmware drivers/net/wireless/mwifiex/main.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX'
-clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787"
-clean_blob drivers/net/wireless/mwifiex/sdio.h
-clean_blob drivers/net/wireless/mwifiex/sdio.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_SDIO'
-clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766"
-clean_blob drivers/net/wireless/mwifiex/pcie.h
-clean_blob drivers/net/wireless/mwifiex/pcie.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_PCIE'
-clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797"
-clean_blob drivers/net/wireless/mwifiex/usb.h
-clean_blob drivers/net/wireless/mwifiex/usb.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_USB'
-clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile
-
-announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support"
-reject_firmware drivers/net/wireless/mwl8k.c
-clean_blob drivers/net/wireless/mwl8k.c
-clean_kconfig drivers/net/wireless/Kconfig 'MWL8K'
-clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile
-
-announce AR5523 - "Atheros AR5523 wireless driver support"
-reject_firmware drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.h
-clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig 'AR5523'
-clean_mk CONFIG_AR5523 drivers/net/wireless/ath/ar5523/Makefile
-
-announce ATH6KL - "Atheros ath6kl support"
-reject_firmware drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/core.h
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL'
-clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_SDIO - "Atheros ath6kl SDIO support"
-clean_blob drivers/net/wireless/ath/ath6kl/sdio.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_SDIO'
-clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_USB - "Atheros ath6kl USB support"
-clean_blob drivers/net/wireless/ath/ath6kl/usb.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_USB'
-clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH10K - "Atheros 802.11ac wireless cards support"
-reject_firmware drivers/net/wireless/ath/ath10k/core.c
-clean_blob drivers/net/wireless/ath/ath10k/hw.h
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K'
-clean_mk CONFIG_ATH10K drivers/net/wireless/ath/ath10k/Makefile
-
-announce ATH10K_PCI - "Atheros ath10k PCI support"
-clean_blob drivers/net/wireless/ath/ath10k/pci.c
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K_PCI'
-clean_mk CONFIG_ATH10K_PCI drivers/net/wireless/ath/ath10k/Makefile
-
-announce CW1200 - "CW1200 WLAN support"
-reject_firmware drivers/net/wireless/cw1200/fwio.c
-clean_blob drivers/net/wireless/cw1200/fwio.h
-reject_firmware drivers/net/wireless/cw1200/sta.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200'
-clean_mk CONFIG_CW1200 drivers/net/wireless/cw1200/Makefile
-
-announce CW1200_WLAN_SDIO - "Support SDIO platforms"
-clean_blob drivers/net/wireless/cw1200/cw1200_sdio.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200_WLAN_SDIO'
-clean_mk CONFIG_CW1200_WLAN_SDIO drivers/net/wireless/cw1200/Makefile
-
-announce PRISM2_USB - "Prism2.5/3 USB driver"
-reject_firmware drivers/staging/wlan-ng/prism2fw.c
-clean_blob drivers/staging/wlan-ng/prism2fw.c
-clean_kconfig drivers/staging/wlan-ng/Kconfig PRISM2_USB
-clean_mk CONFIG_PRISM2_USB drivers/staging/wlan-ng/Makefile
-
-announce P54_PCI - "Prism54 PCI support"
-reject_firmware drivers/net/wireless/p54/p54pci.c
-clean_blob drivers/net/wireless/p54/p54pci.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_PCI'
-clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile
-
-announce P54_SPI - "Prism54 SPI (stlc45xx) support"
-# There's support for loading custom 3826.eeprom here, with a default
-# eeprom that is clearly pure data.  Without Free 3826.arm, there's
-# little point in trying to retain the ability to load 3826.eeprom, so
-# we drop it altogether.
-reject_firmware drivers/net/wireless/p54/p54spi.c
-clean_blob drivers/net/wireless/p54/p54spi.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_SPI'
-clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile
-
-announce P54_USB - "Prism54 USB support"
-reject_firmware drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.h
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB'
-clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile
-
-announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus"
-reject_firmware drivers/net/wireless/prism54/islpci_dev.c
-clean_blob drivers/net/wireless/prism54/islpci_dev.c
-clean_kconfig drivers/net/wireless/Kconfig 'PRISM54'
-clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile
-
-announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support"
-reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE'
-clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile
-
-announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt61pci.h
-clean_blob drivers/net/wireless/rt2x00/rt61pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT61PCI'
-clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT73USB - "Ralink rt2501/rt73 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt73usb.h
-clean_blob drivers/net/wireless/rt2x00/rt73usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT73USB'
-clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.h
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800PCI
-clean_mk CONFIG_RT2800PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800USB - "Ralink rt2800 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.h
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB
-clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile
-
-announce RTL8188EE - "Realtek RTL8188EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8188EE
-clean_mk CONFIG_RTL8188EE drivers/net/wireless/rtlwifi/rtl8188ee/Makefile
-
-announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE
-clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
-
-announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU
-clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile
-
-announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE
-clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile
-
-announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE
-clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile
-
-announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c
-clean_kconfig drivers/staging/rtl8192e/Kconfig RTL8192E
-clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile
-
-announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c
-clean_blob drivers/staging/rtl8192u/r819xU_firmware.c
-clean_kconfig drivers/staging/rtl8192u/Kconfig 'RTL8192U'
-clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile
-
-announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8712/hal_init.c
-clean_blob drivers/staging/rtl8712/hal_init.c
-clean_kconfig drivers/staging/rtl8712/Kconfig 'R8712U'
-clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile
-
-announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723AE'
-clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile
-
-announce VT6656 - "VIA Technologies VT6656 support"
-reject_firmware drivers/staging/vt6656/firmware.c
-clean_blob drivers/staging/vt6656/firmware.c
-clean_kconfig drivers/staging/vt6656/Kconfig 'VT6656'
-clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile
-
-announce WL1251 - "TI wl1251 support"
-reject_firmware drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/wl1251.h
-clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig 'WL1251'
-clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile
-
-announce WL12XX - "TI wl12xx support"
-clean_blob drivers/net/wireless/ti/wl12xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig 'WL12XX'
-clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile
-
-announce WL18XX - "TI wl18xx support"
-reject_firmware drivers/net/wireless/ti/wl18xx/main.c
-clean_blob drivers/net/wireless/ti/wl18xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig 'WL18XX'
-clean_mk CONFIG_WL18XX drivers/net/wireless/ti/wl18xx/Makefile
-
-announce WLCORE - "TI wlcore support"
-reject_firmware drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/wlcore_i.h
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE'
-clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile
-
-announce USB_ZD1201 - "USB ZD1201 based Wireless device support"
-reject_firmware drivers/net/wireless/zd1201.c
-clean_blob drivers/net/wireless/zd1201.c
-clean_kconfig drivers/net/wireless/Kconfig 'USB_ZD1201'
-clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile
-
-announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support"
-reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c
-clean_blob drivers/net/wireless/zd1211rw/zd_usb.c
-clean_kconfig drivers/net/wireless/zd1211rw/Kconfig 'ZD1211RW'
-clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile
-
-# bluetooth
-
-announce BT_ATH3K - "Atheros firmware download driver"
-reject_firmware drivers/bluetooth/ath3k.c
-clean_blob drivers/bluetooth/ath3k.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_ATH3K'
-clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile
-
-announce BT_HCIBCM203X - "HCI BCM203x USB driver"
-reject_firmware drivers/bluetooth/bcm203x.c
-clean_blob drivers/bluetooth/bcm203x.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBCM203X'
-clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile
-
-announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver"
-reject_firmware drivers/bluetooth/bfusb.c
-clean_blob drivers/bluetooth/bfusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBFUSB'
-clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile
-
-announce BT_HCIBT3C - "HCI BT3C (PC Card) driver"
-reject_firmware drivers/bluetooth/bt3c_cs.c
-clean_blob drivers/bluetooth/bt3c_cs.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C'
-clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile
-
-announce BT_HCIBTUSB - "HCI USB driver"
-reject_firmware drivers/bluetooth/btusb.c
-clean_blob drivers/bluetooth/btusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBTUSB'
-clean_mk CONFIG_BT_HCIBTUSB drivers/bluetooth/Makefile
-
-announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver"
-reject_firmware drivers/bluetooth/btmrvl_sdio.c
-clean_blob drivers/bluetooth/btmrvl_sdio.c
-clean_blob Documentation/btmrvl.txt
-clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL_SDIO'
-clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile
-
-announce TI_ST - "Texas Instruments shared transport line discipline"
-reject_firmware drivers/misc/ti-st/st_kim.c
-clean_blob drivers/misc/ti-st/st_kim.c
-clean_kconfig drivers/misc/ti-st/Kconfig 'TI_ST'
-clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile
-
-announce USB_BTMTK - "Mediatek Bluetooth support"
-reject_firmware drivers/staging/btmtk_usb/btmtk_usb.c
-clean_blob drivers/staging/btmtk_usb/btmtk_usb.c
-clean_kconfig drivers/staging/btmtk_usb/Kconfig 'USB_BTMTK'
-clean_mk CONFIG_USB_BTMTK drivers/staging/btmtk_usb/Makefile
-
-# wimax
-
-announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400"
-reject_firmware drivers/net/wimax/i2400m/fw.c
-clean_blob drivers/net/wimax/i2400m/usb.c
-clean_blob Documentation/wimax/README.i2400m
-clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M'
-clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile
-
-announce BCM_WIMAX - "Beceem BCS200/BCS220-3 and BCSM250 wimax support"
-clean_blob drivers/staging/bcm/Macros.h
-# This disables loading of the .cfg file as well, but it's useless without
-# the firmware proper.
-clean_sed '
-/^static \(inline \)\?struct file \*open_firmware_file/,/^}$/ {
-  s,\(flp *= *\)filp_open[^;]*,\1/*(DEBLOBBED)*/(void*)-ENOENT,
-}' drivers/staging/bcm/Misc.c 'disabled non-Free firmware loading machinery'
-clean_kconfig drivers/staging/bcm/Kconfig 'BCM_WIMAX'
-clean_mk CONFIG_BCM_WIMAX drivers/staging/bcm/Makefile
-
-announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface"
-reject_firmware drivers/staging/gdm72xx/sdio_boot.c
-clean_blob drivers/staging/gdm72xx/sdio_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_SDIO'
-clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile
-
-announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface"
-reject_firmware drivers/staging/gdm72xx/usb_boot.c
-clean_blob drivers/staging/gdm72xx/usb_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_USB'
-clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile
-
-# infiniband
-
-announce INFINIBAND_QIB - "QLogic PCIe HCA support"
-drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw
-reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c
-clean_blob drivers/infiniband/hw/qib/qib_sd7220.c
-clean_kconfig drivers/infiniband/hw/qib/Kconfig 'INFINIBAND_QIB'
-clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile
-
-# CAN
-
-announce CAN_SOFTING - "Softing Gmbh CAN generic support"
-reject_firmware drivers/net/can/softing/softing_fw.c
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING'
-clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile
-
-announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards"
-clean_blob drivers/net/can/softing/softing_cs.c
-clean_blob drivers/net/can/softing/softing_platform.h
-clean_sed '
-/^config CAN_SOFTING_CS$/,${
-  /You need firmware/i\
-	  /*(DEBLOBBED)*/
-  /You need firmware/,/softing-fw.*tar\.gz/d
-}' drivers/net/can/softing/Kconfig 'removed firmware notes'
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING_CS'
-clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/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
-
-announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+"
-reject_firmware drivers/isdn/hardware/mISDN/speedfax.c
-clean_blob drivers/isdn/hardware/mISDN/speedfax.c
-clean_kconfig drivers/isdn/hardware/mISDN/Kconfig 'MISDN_SPEEDFAX'
-clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile
-
-##########
-# Serial #
-##########
-
-announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/MT5634ZLX.cis.ihex firmware/cis/MT5634ZLX.cis
-drop_fw_file firmware/cis/RS-COM-2P.cis.ihex firmware/cis/RS-COM-2P.cis
-drop_fw_file firmware/cis/COMpad2.cis.ihex firmware/cis/COMpad2.cis
-drop_fw_file firmware/cis/COMpad4.cis.ihex firmware/cis/COMpad4.cis
-# These are not software; they're Free, but GPLed without textual sources.
-# It could be assumed that these binaries *are* sources, since they
-# can be trivially converted back to a textual form, without loss,
-# but we're better off safe than sorry, so remove them from our tree.
-drop_fw_file firmware/cis/SW_555_SER.cis.ihex firmware/cis/SW_555_SER.cis
-drop_fw_file firmware/cis/SW_7xx_SER.cis.ihex firmware/cis/SW_7xx_SER.cis
-drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis
-# clean_blob drivers/tty/serial/serial_cs.c
-# clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_8250_CS'
-# clean_mk CONFIG_SERIAL_8250_CS drivers/tty/serial/Makefile
-
-announce SERIAL_ICOM - "IBM Multiport Serial Adapter"
-reject_firmware drivers/tty/serial/icom.c
-clean_blob drivers/tty/serial/icom.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_ICOM'
-clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile
-
-announce SERIAL_QE - "Freescale QUICC Engine serial port support"
-reject_firmware drivers/tty/serial/ucc_uart.c
-clean_blob drivers/tty/serial/ucc_uart.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_QE'
-clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile
-
-announce SERIAL_RP2 - "Comtrol RocketPort EXPRESS/INFINITY support"
-reject_firmware drivers/tty/serial/rp2.c
-clean_blob drivers/tty/serial/rp2.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_RP2'
-clean_mk CONFIG_SERIAL_RP2 drivers/tty/serial/Makefile
-
-########
-# Leds #
-########
-
-announce LEDS_LP55XX_COMMON - "Common Driver for TI/National LP5521 and LP5523/55231"
-reject_firmware drivers/leds/leds-lp55xx-common.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP55XX_COMMON'
-clean_mk CONFIG_LEDS_LP55XX_COMMON drivers/leds/Makefile
-
-announce LEDS_LP5521 - "LED Support for N.S. LP5521 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5521.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP5521'
-clean_mk CONFIG_LEDS_LP5521 drivers/leds/Makefile
-
-announce LEDS_LP5523 - "LED Support for TI/National LP5523/55231 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5523.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP5523'
-clean_mk CONFIG_LEDS_LP5523 drivers/leds/Makefile
-
-#########
-# input #
-#########
-
-announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen"
-reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c
-clean_blob drivers/input/touchscreen/atmel_mxt_ts.c
-clean_kconfig drivers/input/touchscreen/Kconfig 'TOUCHSCREEN_ATMEL_MXT'
-clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile
-
-announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter"
-reject_firmware drivers/staging/media/lirc/lirc_zilog.c
-clean_blob drivers/staging/media/lirc/lirc_zilog.c
-clean_kconfig drivers/staging/media/lirc/Kconfig 'LIRC_ZILOG'
-clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile
-
-announce INPUT_IMS_PCU - "IMS Passenger Control Unit driver"
-reject_firmware drivers/input/misc/ims-pcu.c
-clean_blob drivers/input/misc/ims-pcu.c
-clean_kconfig drivers/input/misc/Kconfig 'INPUT_IMS_PCU'
-clean_mk CONFIG_INPUT_IMS_PCU drivers/input/misc/Makefile
-
-####################
-# Data acquisition #
-####################
-
-announce COMEDI - "Data acquisition support (comedi)"
-reject_firmware drivers/staging/comedi/drivers.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI'
-clean_mk CONFIG_COMEDI drivers/staging/comedi/Makefile
-
-announce COMEDI_DAQBOARD2000 - "IOtech DAQboard/2000 support"
-clean_blob drivers/staging/comedi/drivers/daqboard2000.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_DAQBOARD2000'
-clean_mk CONFIG_COMEDI_DAQBOARD2000 drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_JR3_PCI - "JR3/PCI force sensor board support"
-clean_blob drivers/staging/comedi/drivers/jr3_pci.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_JR3_PCI'
-clean_mk CONFIG_COMEDI_JR3_PCI drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_ME_DAQ - "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support"
-clean_blob drivers/staging/comedi/drivers/me_daq.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_ME_DAQ'
-clean_mk CONFIG_COMEDI_ME_DAQ drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_NI_PCIDIO - "NI PCI-DIO32HS, PCI-6533, PCI-6534 support"
-clean_blob drivers/staging/comedi/drivers/ni_pcidio.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_NI_PCIDIO'
-clean_mk CONFIG_COMEDI_NI_PCIDIO drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUX - "ITL USBDUX support"
-clean_blob drivers/staging/comedi/drivers/usbdux.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUX'
-clean_mk CONFIG_COMEDI_USBDUX drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXFAST - "ITL USB-DUXfast support"
-clean_blob drivers/staging/comedi/drivers/usbduxfast.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXFAST'
-clean_mk CONFIG_COMEDI_USBDUXFAST drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXSIGMA - "ITL USB-DUXsigma support"
-clean_blob drivers/staging/comedi/drivers/usbduxsigma.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXSIGMA'
-clean_mk CONFIG_COMEDI_USBDUXSIGMA drivers/staging/comedi/drivers/Makefile
-
-
-#######
-# MMC #
-#######
-
-announce MMC_VUB300 - "VUB300 USB to SDIO/SD/MMC Host Controller support"
-clean_sed '
-/^config MMC_VUB300/,/^config /{
-  /Some SDIO cards/i\
-	  /*(DEBLOBBED)*/
-  /Some SDIO cards/,/obtainable data rate\.$/d
-}
-' drivers/mmc/host/Kconfig "removed firmware notes"
-reject_firmware drivers/mmc/host/vub300.c
-clean_blob drivers/mmc/host/vub300.c
-clean_kconfig drivers/mmc/host/Kconfig 'MMC_VUB300'
-clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile
-
-########
-# SCSI #
-########
-
-announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver"
-drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin
-reject_firmware drivers/scsi/qlogicpti.c
-clean_blob drivers/scsi/qlogicpti.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGICPTI'
-clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile
-
-announce SCSI_ADVANSYS - "AdvanSys SCSI"
-drop_fw_file firmware/advansys/mcode.bin.ihex firmware/advansys/mcode.bin
-drop_fw_file firmware/advansys/3550.bin.ihex firmware/advansys/3550.bin
-drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin
-drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin
-reject_firmware drivers/scsi/advansys.c
-clean_blob drivers/scsi/advansys.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_ADVANSYS'
-clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile
-
-announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI"
-drop_fw_file firmware/qlogic/1040.bin.ihex firmware/qlogic/1040.bin
-drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin
-drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin
-reject_firmware drivers/scsi/qla1280.c
-clean_blob drivers/scsi/qla1280.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGIC_1280'
-clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile
-
-announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support"
-reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.h
-clean_kconfig drivers/scsi/aic94xx/Kconfig 'SCSI_AIC94XX'
-clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile
-
-announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support"
-reject_firmware drivers/scsi/bfa/bfad.c
-clean_blob drivers/scsi/bfa/bfad.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_BFA_FC'
-clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile
-
-announce SCSI_CHELSIO_FCOE - "Chelsio Communications FCoE support"
-reject_firmware drivers/scsi/csiostor/csio_hw.c
-clean_blob drivers/scsi/csiostor/csio_hw_chip.h
-clean_blob drivers/scsi/csiostor/csio_init.c
-clean_kconfig drivers/scsi/csiostor/Kconfig 'SCSI_CHELSIO_FCOE'
-clean_mk CONFIG_SCSI_CHELSIO_FCOE drivers/scsi/csiostor/Makefile
-
-announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support"
-# The firmware name is built out of Vital Product Data read from the
-# adapter.  The firmware is definitely code, and I couldn't find
-# evidence it is Free, so I'm disabling it.  It's not clear whether
-# this is the hardware or the software inducing to the installation of
-# non-Free firmware.
-reject_firmware drivers/scsi/lpfc/lpfc.h
-reject_firmware drivers/scsi/lpfc/lpfc_crtn.h
-reject_firmware drivers/scsi/lpfc/lpfc_init.c
-reject_firmware drivers/scsi/lpfc/lpfc_attr.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_LPFC'
-clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile
-
-announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support"
-reject_firmware drivers/scsi/qla2xxx/qla_gbl.h
-reject_firmware drivers/scsi/qla2xxx/qla_init.c
-reject_firmware drivers/scsi/qla2xxx/qla_os.c
-reject_firmware drivers/scsi/qla2xxx/qla_nx.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
-
-
-#######
-# USB #
-#######
-
-# atm
-
-announce USB_CXACRU - "Conexant AccessRunner USB support"
-reject_firmware drivers/usb/atm/cxacru.c
-clean_blob drivers/usb/atm/cxacru.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_CXACRU'
-clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile
-
-announce USB_SPEEDTOUCH - "Speedtouch USB support"
-reject_firmware drivers/usb/atm/speedtch.c
-clean_blob drivers/usb/atm/speedtch.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_SPEEDTOUCH'
-clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile
-
-announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem"
-reject_firmware drivers/usb/atm/ueagle-atm.c
-clean_blob drivers/usb/atm/ueagle-atm.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_UEAGLEATM'
-clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile
-
-# misc
-
-announce USB_EMI26 - "EMI 2|6 USB Audio interface"
-# These files are not under the GPL, better remove them all.
-drop_fw_file firmware/emi26/bitstream.HEX firmware/emi26/bitstream.fw
-drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw
-drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw
-reject_firmware drivers/usb/misc/emi26.c
-clean_blob drivers/usb/misc/emi26.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI26'
-clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile
-
-announce USB_EMI62 - "EMI 6|2m USB Audio interface"
-# These files are probably not under the GPL, better remove them all.
-drop_fw_file firmware/emi62/bitstream.HEX firmware/emi62/bitstream.fw
-drop_fw_file firmware/emi62/loader.HEX firmware/emi62/loader.fw
-drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw
-drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw
-reject_firmware drivers/usb/misc/emi62.c
-clean_blob drivers/usb/misc/emi62.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI62'
-clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile
-
-announce USB_EZUSB_FX2 - "Functions for loading firmware on EZUSB chips"
-maybe_reject_firmware drivers/usb/misc/ezusb.c
-
-announce USB_ISIGHTFW - "iSight firmware loading support"
-reject_firmware drivers/usb/misc/isight_firmware.c
-clean_blob drivers/usb/misc/isight_firmware.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_ISIGHTFW'
-clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile
-
-# storage
-
-announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support"
-reject_firmware drivers/usb/storage/ene_ub6250.c
-clean_blob drivers/usb/storage/ene_ub6250.c
-clean_kconfig drivers/usb/storage/Kconfig 'USB_STORAGE_ENE_UB6250'
-clean_mk 'CONFIG_USB_STORAGE_ENE_UB6250' drivers/usb/storage/Makefile
-
-announce USB_ENESTORAGE - "USB ENE card reader support"
-clean_blob drivers/staging/keucr/init.h
-clean_sed '
-/^int ENE_LoadBinCode(/,/^}$/ {
-  /kmalloc/i\
-	return /*(DEBLOBBED)*/ USB_STOR_TRANSPORT_ERROR;
-}
-' drivers/staging/keucr/init.c 'disable non-Free firmware loading machinery'
-clean_kconfig drivers/staging/keucr/Kconfig 'USB_ENESTORAGE'
-clean_mk 'CONFIG_USB_ENESTORAGE' drivers/staging/keucr/Makefile
-
-# serial
-
-announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver"
-drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_MPR'
-drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA18X'
-drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19'
-drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QI'
-drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QW'
-drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19W'
-drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28'
-drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XA'
-drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XB'
-drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28X'
-drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49W'
-drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49WLC'
-clean_blob drivers/usb/serial/keyspan.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN'
-clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver"
-clean_fw firmware/edgeport/boot.H16 firmware/edgeport/boot.fw
-clean_fw firmware/edgeport/boot2.H16 firmware/edgeport/boot2.fw
-clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw
-clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw
-reject_firmware drivers/usb/serial/io_edgeport.c
-clean_blob drivers/usb/serial/io_edgeport.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)"
-clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin
-reject_firmware drivers/usb/serial/io_ti.c
-clean_blob drivers/usb/serial/io_ti.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT_TI'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver"
-drop_fw_file firmware/ti_3410.fw.ihex firmware/ti_3410.fw
-drop_fw_file firmware/ti_5052.fw.ihex firmware/ti_5052.fw
-drop_fw_file firmware/mts_cdma.fw.ihex firmware/mts_cdma.fw
-drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw
-drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw
-reject_firmware drivers/usb/serial/ti_usb_3410_5052.c
-clean_blob drivers/usb/serial/ti_usb_3410_5052.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_TI'
-clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver"
-clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw
-clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw
-clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw
-clean_blob drivers/usb/serial/whiteheat.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_WHITEHEAT'
-clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile
-
-# uwb
-
-announce UWB_I1480U - Support for Intel Wireless UWB Link 1480 HWA
-reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h
-reject_firmware drivers/uwb/i1480/dfu/mac.c
-reject_firmware drivers/uwb/i1480/dfu/phy.c
-clean_blob drivers/uwb/i1480/dfu/usb.c
-clean_kconfig drivers/uwb/Kconfig 'UWB_I1480U'
-clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile
-
-
-
-################
-# Programmable #
-################
-
-announce LATTICE_ECP3_CONFIG - "Lattice ECP3 FPGA bitstrap configuration via SPI"
-reject_firmware drivers/misc/lattice-ecp3-config.c
-clean_blob drivers/misc/lattice-ecp3-config.c
-clean_kconfig drivers/misc/Kconfig 'LATTICE_ECP3_CONFIG'
-clean_mk CONFIG_LATTICE_ECP3_CONFIG drivers/misc/Makefile
-
-announce STE_MODEM_RPROC - "STE-Modem remoteproc support"
-maybe_reject_firmware drivers/remoteproc/remoteproc_core.c
-undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \
-  "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c
-clean_kconfig drivers/remoteproc/Kconfig 'STE_MODEM_RPROC'
-clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile
-
-
-#########
-# Sound #
-#########
-
-announce SND_ASIHPI - "AudioScience ASIxxxx"
-reject_firmware sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpioctl.c
-clean_kconfig sound/pci/Kconfig 'SND_ASIHPI'
-clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile
-
-announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
-# This appears to have been extracted from some non-Free driver
-clean_file sound/pci/cs46xx/cs46xx_image.h
-# The following blobs are definitely extracted from non-Free drivers.
-clean_file sound/pci/cs46xx/imgs/cwc4630.h
-clean_file sound/pci/cs46xx/imgs/cwcasync.h
-clean_file sound/pci/cs46xx/imgs/cwcsnoop.h
-clean_sed '
-/^\(int \)\?snd_cs46xx_download_image([^;]*$/,/^}$/{
-  /for.*BA1_MEMORY_COUNT/i\
-#if 0
-  /^}$/{
-    i\
-#else\
-	snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n");\
-	return -EINVAL;\
-#endif
-  }
-}
-s/cs46xx_dsp_load_module(chip, [&]cwc\(4630\|async\|snoop\)_module)/(snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n"),-EINVAL)/
-' sound/pci/cs46xx/cs46xx_lib.c 'report missing Free firmware'
-clean_blob sound/pci/cs46xx/cs46xx_lib.c
-clean_kconfig sound/pci/Kconfig 'SND_CS46XX'
-clean_mk 'CONFIG_SND_CS46XX' sound/pci/cs46xx/Makefile
-
-announce SND_KORG1212 - "Korg 1212 IO"
-drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp
-reject_firmware sound/pci/korg1212/korg1212.c
-clean_blob sound/pci/korg1212/korg1212.c
-clean_kconfig sound/pci/Kconfig 'SND_KORG1212'
-clean_mk 'CONFIG_SND_KORG1212' sound/pci/korg1212/Makefile
-
-announce SND_MAESTRO3 - "ESS Allegro/Maestro3"
-drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw
-drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw
-reject_firmware sound/pci/maestro3.c
-clean_blob sound/pci/maestro3.c
-clean_kconfig sound/pci/Kconfig 'SND_MAESTRO3'
-clean_mk 'CONFIG_SND_MAESTRO3' sound/pci/Makefile
-
-announce SND_YMFPCI - "Yamaha YMF724/740/744/754"
-drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw
-drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw
-drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw
-reject_firmware sound/pci/ymfpci/ymfpci_main.c
-clean_blob sound/pci/ymfpci/ymfpci_main.c
-clean_kconfig sound/pci/Kconfig 'SND_YMFPCI'
-clean_mk 'CONFIG_SND_YMFPCI' sound/pci/ymfpci/Makefile
-
-announce SND_SB16_CSP - "SB16 Advanced Signal Processor"
-drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp
-drop_fw_file firmware/sb16/mulaw_main.csp.ihex firmware/sb16/mulaw_main.csp
-drop_fw_file firmware/sb16/ima_adpcm_init.csp.ihex firmware/sb16/ima_adpcm_init.csp
-drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_capture.csp
-drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp
-reject_firmware sound/isa/sb/sb16_csp.c
-clean_blob sound/isa/sb/sb16_csp.c
-clean_kconfig sound/isa/Kconfig 'SND_SB16_CSP'
-clean_mk 'CONFIG_SND_SB16_CSP' sound/isa/sb/Makefile
-
-announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
-drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin
-reject_firmware sound/isa/wavefront/wavefront_fx.c
-clean_blob sound/isa/wavefront/wavefront_fx.c
-reject_firmware sound/isa/wavefront/wavefront_synth.c
-clean_blob sound/isa/wavefront/wavefront_synth.c
-clean_kconfig sound/isa/Kconfig 'SND_WAVEFRONT'
-clean_mk 'CONFIG_SND_WAVEFRONT' sound/isa/wavefront/Makefile
-
-announce SND_VX_LIB - Digigram VX soundcards
-reject_firmware sound/drivers/vx/vx_hwdep.c
-clean_blob sound/drivers/vx/vx_hwdep.c
-clean_kconfig sound/drivers/Kconfig 'SND_VX_LIB'
-clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile
-
-announce SND_DARLA20 - "(Echoaudio) Darla20"
-clean_blob sound/pci/echoaudio/darla20.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA20'
-clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile
-
-announce SND_DARLA24 - "(Echoaudio) Darla24"
-clean_blob sound/pci/echoaudio/darla24.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA24'
-clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile
-
-announce SND_ECHO3G - "(Echoaudio) 3G cards"
-clean_blob sound/pci/echoaudio/echo3g.c
-clean_kconfig sound/pci/Kconfig 'SND_ECHO3G'
-clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile
-
-announce SND_GINA20 - "(Echoaudio) Gina20"
-clean_blob sound/pci/echoaudio/gina20.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA20'
-clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile
-
-announce SND_GINA24 - "(Echoaudio) Gina24"
-clean_blob sound/pci/echoaudio/gina24.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA24'
-clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile
-
-announce SND_INDIGO - "(Echoaudio) Indigo"
-clean_blob sound/pci/echoaudio/indigo.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGO'
-clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJ - "(Echoaudio) Indigo DJ"
-clean_blob sound/pci/echoaudio/indigodj.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJ'
-clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJX - "(Echoaudio) Indigo DJx"
-clean_blob sound/pci/echoaudio/indigodjx.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJX'
-clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIO - "(Echoaudio) Indigo IO"
-clean_blob sound/pci/echoaudio/indigoio.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIO'
-clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx"
-clean_blob sound/pci/echoaudio/indigoiox.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIOX'
-clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA20 - "(Echoaudio) Layla20"
-clean_blob sound/pci/echoaudio/layla20.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA20'
-clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA24 - "(Echoaudio) Layla24"
-clean_blob sound/pci/echoaudio/layla24.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA24'
-clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile
-
-announce SND_MIA - "(Echoaudio) Mia"
-clean_blob sound/pci/echoaudio/mia.c
-clean_kconfig sound/pci/Kconfig 'SND_MIA'
-clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile
-
-announce SND_MONA - "(Echoaudio) Mona"
-clean_blob sound/pci/echoaudio/mona.c
-clean_kconfig sound/pci/Kconfig 'SND_MONA'
-clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile
-
-announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above "
-reject_firmware sound/pci/echoaudio/echoaudio.c
-clean_blob sound/pci/echoaudio/echoaudio.c
-
-announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)"
-reject_firmware sound/pci/emu10k1/emu10k1_main.c
-clean_blob sound/pci/emu10k1/emu10k1_main.c
-clean_kconfig sound/pci/Kconfig 'SND_EMU10K1'
-clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile
-
-announce SND_MIXART - "Digigram miXart"
-reject_firmware sound/pci/mixart/mixart_hwdep.c
-clean_blob sound/pci/mixart/mixart_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_MIXART'
-clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile
-
-announce SND_PCXHR - "Digigram PCXHR"
-reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c
-clean_blob sound/pci/pcxhr/pcxhr_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_PCXHR'
-clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile
-
-announce SND_RIPTIDE - "Conexant Riptide"
-reject_firmware sound/pci/riptide/riptide.c
-clean_blob sound/pci/riptide/riptide.c
-clean_kconfig sound/pci/Kconfig 'SND_RIPTIDE'
-clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile
-
-# This is ok, patch filenames are supplied as module parameters, and
-# they are text files with patch instructions.
-#announce SND_HDA_PATCH_LOADER - "Support initialization patch loading for HD-audio"
-#reject_firmware sound/pci/hda/hda_hwdep.c
-#clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_PATCH_LOADER'
-
-announce SND_HDA_CODEC_CA0132_DSP - "Support new DSP code for CA0132 codec"
-reject_firmware sound/pci/hda/patch_ca0132.c
-clean_blob sound/pci/hda/patch_ca0132.c
-clean_sed '
-/^config SND_HDA_CODEC_CA0132_DSP$/, /^config / {
-  s,(ctefx.bin),(/*(DEBLOBBED)*/),;
-}' sound/pci/hda/Kconfig 'removed blob name'
-clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_CODEC_CA0132_DSP'
-# There are no separate source files or Makefile entries for the _DSP option.
-clean_mk CONFIG_SND_HDA_CODEC_CA0132 sound/pci/hda/Makefile
-
-announce SND_HDSP - "RME Hammerfall DSP Audio"
-reject_firmware sound/pci/rme9652/hdsp.c
-clean_blob sound/pci/rme9652/hdsp.c
-clean_kconfig sound/pci/Kconfig 'SND_HDSP'
-clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile
-
-announce SND_AICA - "Dreamcast Yamaha AICA sound"
-reject_firmware sound/sh/aica.c
-clean_blob sound/sh/aica.c
-clean_kconfig sound/sh/Kconfig 'SND_AICA'
-clean_mk CONFIG_SND_AICA sound/sh/Makefile
-
-announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle"
-clean_blob sound/isa/msnd/msnd_pinnacle.h
-reject_firmware sound/isa/msnd/msnd_pinnacle.c
-clean_blob sound/isa/msnd/msnd_pinnacle.c
-clean_kconfig sound/isa/Kconfig 'SND_MSND_PINNACLE'
-clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile
-
-announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey"
-clean_blob sound/isa/msnd/msnd_classic.h
-clean_kconfig sound/isa/Kconfig 'SND_MSND_CLASSIC'
-clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile
-
-announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)"
-clean_blob sound/oss/msnd_classic.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS'
-clean_sed '
-/^config MSNDCLAS_INIT_FILE$/, /^config / {
-  /^	default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDCLAS_PERM_FILE$/, /^config / {
-  /^	default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile
-
-announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)"
-clean_blob sound/oss/msnd_pinnacle.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN'
-clean_sed '
-/^config MSNDPIN_INIT_FILE$/, /^config / {
-  /^	default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDPIN_PERM_FILE$/, /^config / {
-  /^	default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile
-
-announce SND_SSCAPE - "Ensoniq SoundScape driver"
-reject_firmware sound/isa/sscape.c
-clean_blob sound/isa/sscape.c
-clean_sed '
-/^config SND_SSCAPE$/, /^config / {
-  s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g;
-}' sound/isa/Kconfig 'removed firmware names'
-clean_kconfig sound/isa/Kconfig 'SND_SSCAPE'
-clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile
-
-announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1701.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1701'
-clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile
-
-announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader"
-maybe_reject_firmware sound/soc/codecs/sigmadsp.c
-
-announce SND_SOC_WM0010 - "WM0010 DSP driver"
-reject_firmware sound/soc/codecs/wm0010.c
-clean_blob sound/soc/codecs/wm0010.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM0010'
-clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile
-
-# It's not clear that wm2000_anc.bin is pure data.
-# Check with developer, clean up for now.
-announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm2000.c
-clean_blob sound/soc/codecs/wm2000.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM2000'
-clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile
-
-announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm8958-dsp2.c
-clean_blob sound/soc/codecs/wm8958-dsp2.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM8994'
-clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile
-
-# The coeff files might be pure data, but the wmfw surely aren't.
-announce SND_SOC_WM_ADSP - "Wolfson ADSP support"
-reject_firmware sound/soc/codecs/wm_adsp.c
-clean_blob sound/soc/codecs/wm_adsp.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM_ADSP'
-clean_mk CONFIG_SND_SOC_WM_ADSP sound/soc/codecs/Makefile
-
-announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral"
-reject_firmware sound/soc/sh/siu_dai.c
-clean_blob sound/soc/sh/siu_dai.c
-clean_kconfig sound/soc/sh/Kconfig 'SND_SOC_SH4_SIU'
-clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile
-
-announce SOUND_TRIX - "MediaTrix AudioTrix Pro support"
-clean_blob sound/oss/trix.c
-clean_kconfig sound/oss/Kconfig 'SOUND_TRIX'
-clean_sed '
-/^config TRIX_BOOT_FILE$/, /^config / {
-  /^	default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile
-
-announce SOUND_TRIX - "See above,"
-announce SOUND_PAS - "ProAudioSpectrum 16 support,"
-announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support"
-clean_blob sound/oss/sb_common.c
-clean_kconfig sound/oss/Kconfig 'SOUND_PAS'
-clean_kconfig sound/oss/Kconfig 'SOUND_SB'
-clean_mk CONFIG_SOUND_PAS sound/oss/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 '
-/^config PSS_BOOT_FILE$/, /^config / {
-  /^	default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_PSS sound/oss/Makefile
-
-announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB"
-reject_firmware sound/usb/6fire/firmware.c
-clean_blob sound/usb/6fire/firmware.c
-clean_kconfig sound/usb/Kconfig 'SND_USB_6FIRE'
-clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile
-
-#################
-# Documentation #
-#################
-
-announce Documentation - "non-Free firmware scripts and documentation"
-clean_blob Documentation/dvb/avermedia.txt
-clean_blob Documentation/dvb/opera-firmware.txt
-clean_blob Documentation/sound/alsa/ALSA-Configuration.txt
-clean_blob Documentation/sound/oss/MultiSound
-clean_blob Documentation/sound/oss/PSS
-clean_blob Documentation/sound/oss/PSS-updates
-clean_blob Documentation/sound/oss/README.OSS
-clean_file Documentation/dvb/get_dvb_firmware
-clean_file Documentation/video4linux/extract_xc3028.pl
-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
diff --git a/helpers/DATA/linux-lts-saucy/deblob-check b/helpers/DATA/linux-lts-saucy/deblob-check
deleted file mode 100755
index 7ea6dded2..000000000
--- a/helpers/DATA/linux-lts-saucy/deblob-check
+++ /dev/null
@@ -1,7543 +0,0 @@
-#! /bin/sh
-
-# deblob-check version 2013-09-01
-# Inspired in gNewSense's find-firmware script.
-# Written by Alexandre Oliva <lxoliva@fsfla.org>
-
-# Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer
-# versions.
-
-# Copyright 2008-2013 Alexandre Oliva <lxoliva@fsfla.org>
-#
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-
-# usage: deblob-check [-S] [-v] [-v] [-s S] [--reverse-patch] \
-#        [--use-...|--gen-flex] [-lDdBbCcXxPpFftVh?H] \
-#        *.tar* patch-* [-i prefix/] *.patch *.diff...
-
-# Look for and report too-long undocumented sequences of numbers
-# (generally blobs in disguise) in source files, as well as requests
-# for loading non-Free firmware.
-
-# The order of command line flags is significant.  Flags given out of
-# the order above won't be handled correctly, sorry.
-
-# -s --sensitivity: Specifies the number of consecutive integral or
-#		character constants that trigger the blob detector.
-#	        Must be followed by a blank and a number.
-
-#    --reverse-patch: Test the removed parts of a patch, rather than
-#		the added ones.
-
-#    --use-awk: Choose the internal GNU awk script for the bulk of the
-#		work.  This is the default option, if GNU awk is found.
-#		The awk interpreter is named gawk, unless AWK is set.
-
-#    --use-sed: Choose the internal GNU sed script for the bulk of the
-#		work.  This is the default option, if GNU awk is not
-#		found.
-
-#    --use-python: Choose the internal python script.  This is not
-#		recommended, because the regular expressions we use
-#		invoke exponential behavior in the python engine.
-
-#    --use-perl: Choose the internal perl script.  This is not
-#		recommended, because our regular expressions exceed
-#		some limits hard-coded into perl.
-
-#    --save-script-input: Save the input that would have been fed to
-#		any of the engines above.
-
-#    --gen-flex: Generate a flex input file with all known blob and
-#		false positive patterns.  It would have been a fast
-#		regular expression processor if only the flex program
-#		completed in reasonable time.
-
-
-# The default sensitivity is 32 constants.
-
-# The sensitivity, if present, must be the first option.  The action
-# selection, if present, must be the first argument, except for the
-# sensitivity and verbosity.
-
-# The default can be overridden with one of:
-
-# -l --list-blobs: list files that contain sequences that match the
-#		blob detector test and that are not known to be false
-#		positives.  This is the default option.
-
-# -d --deblob --mark-blobs: print the processed input, replacing
-#		sequences that match the blob detector test and that
-#		are NOT known to be false positives with
-#		/*(DEBLOBBED)*/.
-
-# -D --cat: print the processed input, as it would have been fed to
-#		the blob detector script.  Use -S to save the sed
-#		script used to process it, and search for `sedcat:' in
-#		comments to locate the relevant adaptation points.
-
-# -b --print-marked-blobs: like -d, but print only the matching
-#		sequences.
-
-# -B --print-blobs: like -b, but do not deblob the sequences.
-
-# -c --print-marked-blobs-with-context: like -b, but try to maximize
-#		the context around the blobs.  This maximization will
-#		sometimes disregard known false positives, if they
-#		happen to be contained within the extended match.
-#		This is probably an indication that the false positive
-#		matching rule could be improved.
-
-# -C --print-blobs-with-context: like -B, but try to maximize the
-#		context around the blobs.
-
-# -X --print-all-matches: print all blobs, be they known false
-#		positives or actual blobs.
-
-# -x --list-all-matches: list files that contain sequences that appear
-#		to be blobs, be they known false positives or not.
-
-# -p --mark-false-positives: print the processed input, replacing
-#		sequences that match the blob detector test, even those
-#		known to be false positives, with /*(DEBLOBBED)*/.
-
-# -P --list-false-positives: list files that contain false positives.
-
-# -f --print-marked-false-positives: like -p, but print only the
-#		matching sequences.
-
-# -F --print-false-positives: like -f, but do not deblob the sequences.
-
-# -t --test: run (very minimal) self-test.
-
-# -V --version: print a version number
-
-# -h -? -H --help: print short or long help message
-
-
-# debugging options:
-
-# -S --save-scripts: save scripts and temporary files.
-
-# -v --verbose: increase verbosity level, for internal debugging.  May
-#		be given at most twice.
-
-
-# file options:
-
-# --: Don't process command-line options any further.  All following
-#		arguments are taken as filenames.
-
-# -i --implied-prefix --prefix: prepend the given prefix to each filename
-#		listed after this option, when configuring false positives
-#		and negatives.
-
-# *.tar*: iterate over all files in the named tar file.
-
-# *.patch, patch-*, *.diff: Look for blobs in the [ +] parts of the
-# 		*patch, unless --reverse-patch is given, in which case
-# 		the [ -] parts will be used.
-
-# Anything else is assumed to be a source file.
-
-# *.gz | *.bz2 | *.xz | *.lz: Decompress automatically.
-
-
-# The exit status is only significant for the --list options: it will
-# be true if nothing was found, and false otherwise.
-
-: # Mark the end of the help message.
-
-# TODO:
-
-# - Improve handling of command-line arguments, so as to not make the
-# order relevant.
-
-# - Add an option for the user to feed their own false positive
-# patterns.
-
-# - Add support to recognize known blobs (or other non-Free
-# signatures, really), to speed up the scanning of files containing
-# blobs, and to avoid attempts to disguise blobs.
-
-# - Factor out the code in the various print_* and list_* parts of the
-# sed script, at least in the shell sources.  Make sure they're all
-# included and expanded in a saved --cat script though.
-
-# - Add support for file name tagging in patterns, such that blobs or
-# false positives are recognized only when handling the specific
-# filename, be it stand-alone, as part of a patch or a tarball.  This
-# should help avoid recognition of actual blobs as false positives
-# just because there's a symbol with a different name elsewhere.
-
-#   It is convenient that the patterns provided by the user to
-# recognize file names can be empty (for backward compatibility), but
-# this should ideally be phased out in favor of more precise matches.
-# It's important that files can be recognized with leading tarball or
-# patch names, that the filename used within the tarball contain
-# leading garbage, and even that a partial pathname be recognizable
-# (say recognize drivers/net/whatever.c when the input file is named
-# ../net/whatever.c).
-
-#   Rather than using regular expressions to recognize multiple files
-# it's convenient (but not quite essential) that filename patterns be
-# specifiable as regular expressions, rather than simple filenames,
-# but there are other ways around this.
-
-#   Maintaining begin/end markers in a stack-like fashion as part of
-# the processed stream, and using the names in them as (optional) part
-# of the recognition patterns, would enable us to do it.
-
-#   Introducing annotations next to the false positives (and recognized
-# blobs) as an early part of the process may speed things up and
-# enable fast processing, but how to introduce the annotations quickly
-# in the first place?  Given patterns such as
-
-#   \(\(file1\)\(.*\)\(pat1\)\|\(file2\)\(.*\)\(pat2\)\|...\)
-
-# how do we get sed to introduce a marker that contains file2 right
-# before or right after pat2, without turning a big efficient regexp
-# into a slowish sequence of s/// commands?
-
-# - Re-check and narrow false-positive patterns to make sure they
-# apply only to the relevant content.
-
-# - Scripting abilities, so as to be able to automate the removal of
-# source files or of blobs from source files in a tarball without
-# having to extract the entire tarball (as in tar --update/--delete)
-# would be nice.  Carrying over removed files automatically into
-# patches would also be great, and this sort of script would be
-# perfect to document what has been done to a tarball plus a set of
-# patches.  Something like deblob.script:
-#
-#   tarball linux-2.6.24.tar.bz2
-#   delete net/wireloss/freedom.c drivers/me/crazy.c
-#   deblob include/linux/slab-blob-kfree.h
-#   deconfig drivers/char/drm DRM_IS_BAD
-#
-#   patch patch-2.6.25-rc7.bz2
-#   delete arch/power/over/you.c
-
-# such that the deletes from an earlier file would carry over into the
-# subsequent ones, and new tarballs and patch files would be generated
-# with the libre- prefix in their basename, and the xdeltas between
-# the original files and the modified files would be minimal, and
-# redundant with this script and the input script while at that.
-
-# - Improve documentation of the code.
-
-# - Write a decent testsuite.
-
-# - Insert your idea here. :-)
-
-# Yeah, lots of stuff to do.  Want to help?
-
-# This makes it much faster, and mostly immune to non-ASCII stuff, as
-# long as a 8-bit-safe sed is used.  Probably a safe assumption these
-# days.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-rm="rm -f"
-
-for echo in 'echo' 'printf %s\n'; do
-  case `$echo '\nx'` in
-  '\nx') break;;
-  esac
-done
-case `$echo '\nx'` in
-'\nx') ;; *) echo Cannot find out what echo to use >&2; exit 1;;
-esac
-
-for echo_n in "echo -n" "printf %s"; do
-  case `$echo_n '\na'; $echo_n '\nb'` in
-  '\na\nb') break;;
-  esac
-done
-case `$echo_n a; $echo_n b` in
-'ab') ;; *) echo Cannot find out an echo -n equivalent to use >&2; exit 1;;
-esac
-
-case $1 in
---save-scripts | -S)
-  shift
-  rm="echo preserving"
-  ;;
-esac
-
-# Choose verbosity level for sed script debugging and performance
-# analysis.
-case $1 in
---verbose | -v)
-  shift
-  case $1 in
-  --verbose | -v)
-    shift
-    v="i\\
-:
-p
-i\\
-"
-    vp="2"
-    ;;
-  *)
-    v="P;i\\
-"
-    vp="1"
-    ;;
-  esac
-  ;;
-*)
-  v="# "
-  vp="0"
-  ;;
-esac
-
-sens=31 # 32 - 1
-case $1 in
---sensitivity | -s)
-  sens=$2;
-  shift 2 || exit 1
-
-  if test "$sens" -gt 0 2>/dev/null; then
-    :
-  else
-    echo invalid sensitivity: $sens >&2
-    exit 1
-  fi
-
-  sens=`expr $sens - 1`
-  ;;
-esac
-
-reverse_patch=false
-case $1 in
---reverse-patch)
-  reverse_patch=:
-  shift;
-  ;;
-esac
-
-prefix=/
-case $1 in
---implied-prefix | --prefix| -i)
-  prefix=$2
-  case $prefix in
-  /*/) ;;
-  */) prefix=/$prefix ;;
-  /*) prefix=$prefix/ ;;
-  *) prefix=/$prefix/ ;;
-  esac
-  shift 2 || exit 1
-  ;;
-esac
-
-test_mode=false
-
-name=deblob-check
-
-set_eqscript_main () {
-  $set_main_cmd "$@"
-}
-
-set_eqscript_cmd () {
-  set_eqscript_main "list_blob"
-}
-
-set_sed_cmd () {
-  set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-}
-
-set_flex_cmd () {
-  set_flex_main
-}
-
-set_save_script_input_cmd () {
-  set_save_script_input_main
-}
-
-set_cmd=set_eqscript_cmd
-if (${PYTHON-python} --version) > /dev/null 2>&1; then
-  # Python will exhibit exponential behavior processing some regular
-  # expressions, but we may have already fixed them all.  (see
-  # http://swtch.com/~rsc/regexp/regexp1.html for details)
-  set_main_cmd=set_python_main
-elif (${AWK-gawk} --re-interval --version) > /dev/null 2>&1; then
-  # GNU awk works fine, but it requires --re-interval to accept regexp
-  # ranges, which we rely on to match blobs.  We could expand the blob
-  # on our own, but, yuck.
-  set_main_cmd=set_awk_main
-elif (${PERL-false} --version) > /dev/null 2>&1; then
-  # Don't choose perl by default.  Besides the potential for
-  # exponential behavior, we exceed some internal recursion limits.
-  set_main_cmd=set_perl_main
-else
-  # Sed takes GBs of RAM to compile all the huge regexps in the sed
-  # script we generate with all known false positives and blobs in
-  # Linux.  However, it is somewhat faster than GNU awk and even
-  # python for long runs.
-  # Try it: deblob-check --use-sed linux-2.6.32.tar.bz2
-  set_cmd=set_sed_cmd
-fi
-
-case $1 in
---use-python)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_python_main;
-  ;;
-
---use-perl)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_perl_main;
-  ;;
-
---use-awk)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_awk_main;
-  ;;
-
---use-sed)
-  shift;
-  set_cmd=set_sed_cmd;
-  ;;
-
---gen-flex)
-  shift;
-  set_cmd=set_flex_cmd;
-  ;;
-
---save-script-input)
-  shift;
-  set_cmd=set_save_script_input_cmd;
-  ;;
-esac
-
-case $1 in
---version | -V)
-  ${SED-sed} -e '/^# '$name' version /,/^# Written by/ { s/^# //; p; }; d' < $0
-  exit 0
-  ;;
-
--\? | -h)
-  ${SED-sed} -n -e '/^# usage:/,/# -h/ { /^# -/,/^$/{s/^# \(-.*\):.*/\1/p; d; }; s/^\(# \?\)\?//p; }' < $0 &&
-  echo
-  echo "run \`$name --help | more' for full usage"
-  exit 0
-  ;;
-
---help | -H)
-  ${SED-sed} -n -e '/^# '$name' version /,/^[^#]/ s/^\(# \?\)\?//p' < $0
-  exit 0
-  ;;
-
---test | -t)
-  test_mode=:
-  ;;
-
---mark-false-positives | -p)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_both" "p" "b list_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = without_falsepos"
-  }
-  ;;
-
---print-marked-false-positives | -f)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_matches" "" "b print_marked_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_falsepos = print_falsepos"
-  }
-  ;;
-
---print-false-positives | -F)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_matches" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_falsepos"
-  }
-  ;;
-
---deblob | --mark-blobs | -d)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_blobs" "p" "p"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---cat | -D)
-  shift;
-  set_sed_cmd () {
-    set_sed_main \
-      "# sedcat: Actual blob detected, but there may be false positives." \
-      "# sedcat: No blob whatsoever found." \
-      "# sedcat: False positives found." \
-      "p
-d
-# sedcat: Just print stuff, remove this line to run the actual script."
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---print-marked-blobs | -b)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs | -B)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob"
-  }
-  ;;
-
---print-marked-blobs-with-context | -c)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs-with-context | -C)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = print_blob"
-  }
-  ;;
-
---list-false-positives | -P)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_falsepos"
-  }
-  ;;
-
---list-all-matches | -x)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_blob = list_falsepos"
-  }
-  ;;
-
---print-all-matches | -X)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_both" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos"
-  }
-  ;;
-
-*)
-  case $1 in
-  --list-blobs | -l) shift;;
-  esac
-  case $1 in
-  -- | --implied-prefix | --prefix | -i) ;;
-  -*)
-    if test ! -f "$1"; then
-      echo "$name: \`$1' given too late or out of the proper sequence." >&2
-      echo "$name: The order of arguments is significant, see the usage." >&2
-      exit 1
-    fi
-    ;;
-  esac
-  ;;
-
-esac
-
-case $1 in
---)
-  sawdashdash=t
-  shift;;
-esac
-
-if $test_mode; then
- allpass=:
- for tool in awk perl python sed; do
-  echo testing $tool...
-
-  targs="-s 4 -i /deblob-check-testsuite/ --use-$tool"
-
-  pass=:
-
-
-  # Exercise some nasty inputs to see that we
-  # recognize them as blobs with full context.
-  test="positive context"
-  for string in \
-    "1,2,3,4" \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-    ".long 1,2
-     .long \$3,\$4" \
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-    "= {
-blob(
-)
-accept(
-)
-1, 2, 3, 4
-}" \
-  ; do
-    case `echo "$string" | $0 $targs -C` in
-    "::: - :::
-$string") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we do not recognize these as blobs.
-  test=negative
-  for string in \
-    "#define X { 1, 2 }
-#define Y { 3, 4 }" \
-    " 0x00, 0x00, 0x00 " \
-    "accept(1, 2, 3,
-4, 5, 6)" \
-  ; do
-    case `echo "$string" | $0 $targs` in
-    "") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we print only the lines with blobs.
-  test="only blob"
-  odd=:
-  for string in \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-	"1, 0x2, 03, L'\x4'" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long 1,2
-     .long \$3,\$4" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { 1, 2, \\
-		 3, 4, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   0x4c00c000, 0x00000000, 0x00060000, 0x00000000," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6, 7, 8;
-9, 10, 11" \
-      "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-::: - :::
-1, 2, 3, 4; 5, 6, 7, 8;" \
-\
-    "= {
-blob()
-accept()
-1, 2, 3, 4
-}" \
-	"blob()
-::: - :::
-1, 2, 3, 4" \
-\
-    "a blobeol y
-x" \
-	"a blobeol y
-x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -B` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # Make sure we deblob only the blobs.
-  test="deblobs"
-  odd=:
-  for string in \
-    "= { 1, 0x2, 03, L'\x4' }" \
-	"= { /*(DEBLOBBED)*/' }" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x/*(DEBLOBBED)*/\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long /*(DEBLOBBED)*/" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { /*(DEBLOBBED)*/, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   /*(DEBLOBBED)*/," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6; 7, 8, 9, 10;
-9, 10, 11" \
-      "/*(DEBLOBBED)*/
-::: - :::
-/*(DEBLOBBED)*/; 5, 6; /*(DEBLOBBED)*/;" \
-\
-    "= {
-accept() blob() x blob(
-) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "= {
-accept() blob() x blob(
-w) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "a blobeol y
-x" \
-	"a /*(DEBLOBBED)*/x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -b` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # How did we do?
-  if $pass; then
-    echo success for $tool
-  else
-    allpass=$pass
-  fi
- done
- $allpass
- exit
-fi
-
-# Call addx as needed to set up more patterns to be recognized as
-# false positives.  Takes the input filename in $1.
-
-set_except () {
-  blob "$blobseq"
-  # We leave out the initial and final letters of request_firmware so
-  # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
-  blobna 'equest_firmwar'
-  blobna 'equest_ihex_firmwar'
-  blobna 'MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\([ 	\n]*MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\)*'
-  blobna 'DEFAULT_FIRMWARE'
-  blobna '\([.]\|->\)firmware[ 	\n]*=[^=]'
-  blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\)["]'
-  # Ideally we'd whitelist URLs that don't recommend non-Free
-  # Software, but there are just too many URLs in Linux, and most are
-  # fine, so we just blacklist when we find undesirable URLs.
-  # Please report if you find any inappropriate URL in Linux-libre
-  # deblobbed documentation, sources or run-time log messages.
-  # blobna '\(f\|ht\)tp:[/]\([/]\+[^/ \n ]\+\)\+'
-
-  case $prefix$1 in
-  */*linux*.tar* | */*kernel*.tar* | */*linux-*.*/*)
-    # false alarms, contain source
-    # drivers/net/wan/wanxlfw.inc_shipped -> wanxlfw.S
-    accept 'static[ ]u8[ ]firmware\[\]=[{][\n]0x60,\(0x00,\)*0x16,\(0x00,\)*\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*[\n]0x23,0xFC,0x00,0x00,0x00,0x01,0xFF,0xF9,0x00,0xD4,0x61,0x00,0x06,0x74,0x33,0xFC,\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*0x00[\n][}][;]'
-    # drivers/usb/serial/xircom_pgs_fw.h -> xircom_pgs.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]xircom_pgs_firmware\[\][ ]='
-    # drivers/usb/serial/keyspan_pda_fw_h -> keyspan_pda.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]keyspan_pda_firmware\[\][ ]='
-    # arch/m68k/ifpsp060/*.sa -> src/*.s
-    accept '[	]\.long[	]0x60ff0000,0x02360000,0x60ff0000,0x16260000[\n]'"$sepx$blobpat*"
-    accept '[	]\.long[	]0x60ff0000,0x17400000,0x60ff0000,0x15f40000[\n]'"$sepx$blobpat*"
-    # arch/powerpc/platforms/cell/spufs/spu_save_dump.h_shipped -> spu_save.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_save_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped -> spu_restore.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_restore_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # drivers/net/ixp2000/ixp2400_tx.ucode -> ixp2400_tx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    # drivers/net/ixp2000/ixp2400_rx.ucode -> ixp2400_rx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-
-
-    # checked:
-
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    accept '__clz_tab:[\n][	]\.byte[	]0\(,[0-5]\)\+'"$sepx$blobpat*" arch/sparc/lib/divdi3.S
-    accept 'PITBL:[\n][ ][ ]\.long[ ][ ]0xC0040000,0xC90FDAA2,'"$blobpat*" arch/sparc/lib/divdi3.S
-    accept '\(0x[0F][0F],\)\+\\[\n]\(\(0x[0F][0F],\)\+\\[\n]\)*\(0x[0F][0F],\)\+0x00' arch/m68k/mac/mac_penguin.S
-    accept '\.lowcase:[\n][	]\.byte[ ]0x00\(,0x0[1-7]\)\+'"$sepx$blobpat*"'$' arch/s390/kernel/head.S
-    accept '_zb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]0\(,[123],0\)\+,4'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '_sb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]8\(,0,[123]\)\+,0'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]cpu_745x\[2\]\[16\][ ]=' arch/ppc/platforms/ev64260.c
-    initnc 'const[ ]unsigned[ ]char[ ]__flsm1_tab\[256\][ ]=' arch/alpha/lib/fls.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    initc '[	]static[ ]int[ ][ ][ ][ ][ ][ ]init_values_b\[\][ ]=' sound/oss/ad1848.c
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set2_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix\.txt|Documentation/serial/specialix\.txt'
-    accept '[ ][ ][ ][ ][ ][ ][ ][ ][ ]:[ ][ ][ ]3600000[ ][ ][ ]3400000[ ][ ][ ]3200000[ ][ ][ ]3000000[ ][ ][ ]2800000[ ]' Documentation/cpu-freq/cpufreq-stats.txt
-    accept '00[ ]00[\n]64[ ]01[\n]8e[ ]0b[\n][\n][0-9a-f \n]*fe[ ]fe' 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0f[ ]00[ ]08[ ]08[ ]64[ ]00[ ]0a[ ]00[ ]-[ ]id[ ]0[\n]'"$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept 'default[ ]nvram[ ]data:'"$sepx$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0x0458[ ][ ][ ][ ][ ]0x7025[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    accept '[ ][ ][(]gdb[)][ ]x[/]100x[ ][$]25[\n][ ][ ]0x507d2434:[ ][ ][ ][ ][ ]0x507d2434[ ][ ][ ][ ][ ][ ]0x00000000[ ][ ][ ][ ][ ][ ]0x08048000[ ][ ][ ][ ][ ][ ]0x080a4f8c'"$sepx$blobpat*" Documentation/uml/UserModeLinux-HOWTO.txt
-    accept '[ ][ ][ ][ ][ ][ ]1[ ][ ]0[ ][ ]0[ ][ ]0[ ][ ]0x308'"$sepx$blobpat*" Documentation/isdn/README.inc
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$' Documentation/sched-stats.txt
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync.c|net/sctp/sm_make_chunk.c|include/linux/scpt.h'
-    accept '[ ][*][ ][ ]1[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0' arch/x86/lguest/boot.c
-    ocomment '[	][/][*][ ]Configure[ ]the[ ]PCI[ ]bus[ ]bursts[ ]and[ ]FIFO[ ]thresholds.' drivers/net/fealnx.c
-    ocomment '[/][*][ ]the[ ]original[ ]LUT[ ]values[ ]from[ ]Alex[ ]van[ ]Kaam[ ]<darkside@chello\.nl>' drivers/hwmon/via686a.c
-    initc 'static[ ]const[ ]unsigned[ ]char[ ]init\[\][ ]=[ ][{][^;]*MODE=0[ ][;].*SAA_7114_NTSC_HSYNC_START' drivers/media/video/saa7114.c
-
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    # initnc '[ 	]*\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ \n	]*=[ ][{"]' 'crypto/\(tcrypt\|testmgr\).h'
-
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/delkin_cb\.c\|drivers/ide/pci/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]u8[ ]tas3004_treble_table\[\][ ]=' sound/aoa/codecs/tas-basstreble.h
-
-    # This file contains firmwares that we deblob with high
-    # sensitivity, so make sure the sequences of numbers that are not
-    # blobs are not deblobbed.  FIXME: we should have patterns to
-    # recognize the blobs instead.
-    defsnc '[	]static[ ]const[ ]u32[ ]test_pat\[4\]\[6\][ ]=' drivers/net/tg3.c
-    accept "[	][}]\\(,\\?[ ]mem_tbl_5\\(70x\\|705\\|755\\|906\\)\\[\\][ ]=[ ][{]$sepx$blobpat*$sepx[}]\\)*[;]" drivers/net/tg3.c
-
-    # end of generic checked expressions.
-    # version-specific checked bits start here
-
-    # removed in 2.6.28
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    # removed in 2.6.24
-    accept "[ ]Psize[ ][ ][ ][ ]Ipps[ ][ ][ ][ ][ ][ ][ ]Tput[ ][ ][ ][ ][ ]Rxint[ ][ ][ ][ ][ ]Txint[ ][ ][ ][ ]Done[ ][ ][ ][ ][ ]Ndone[\\n][ ]---------------------------------------------------------------\\([\\n][ 0-9]\\+\\)\\+"'$'
-    initnc 'static[ ]u_short[ ]ataplain_map\[NR_KEYS\][ ]__initdata[ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]char[ ]invert5\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]alpa2target\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]target2alpa\[\][ ]='
-    oprepline '#define[ ]INIT_THREAD[ ][{0},]\+[ 	]*\\[\n][ 	]*[{0},]\+'
-    initnc 'static[ ]uint[ ]tas300\(1c\|4\)_\(master\|mixer\|treble\|bass\)_tab\[\]='
-    initnc 'static[ ]short[ ]dmasound_[au]law2dma16\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]DACVolTable\[101\][ ]='
-
-    # removed in 2.6.23
-    initnc 'static[ ]const[ ]UQItype[ ]__clz_tab\[\][ ]=' arch/arm26/lib/udivdi3.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]scale\[101\][ ]=' sound/oss/opl3sa2.c
-    initnc '[}][ ]syncs\[\][ ]=' drivers/scsi/53c7xx.c
-    initnc 'genoa_md:'"$sepx$blobpat*"'[\n][	]\.ascii[	]["]Genoa["]' arch/i386/boot/video.S
-
-    # removed in 2.6.22
-    initnc 'Vendor[ ]ID[ ][ ]Product[ ]ID[\n]-\+[ ][ ]-\+[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    defsnc 'static[ ]short[ ][au]law2dma16\[\]' arch/ppc/8xx_io/cs4218_tdm.c
-    defsnc '[	]static[ ]const[ ]char[ ]minimal_ascii_table\[\]' drivers/ieee1394/csr1212.c
-    defsnc 'static[ ]u16[ ]key_map[ ]\[256\][ ]=' drivers/media/dvb/ttpci/av7110_ir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]gf64_inv\[64\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]short[ ]err_pos_lut\[4096\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]testdata\[TESTDATA_LEN\][ ]=' fs/jffs2/comprtest.c
-
-    # added in 2.6.25
-    accept "%canned_values[ ]=[ ][(][\\n][	]\\([0-9]\\+[ ]=>[ ]\\[[ 	\\n]\\+\\(\\([0-9]\\+\\|\\'0x[0-9a-f]\\+\\'\\),[ 	\\n]*\\)*\\]\\(,[ ]\\|[\\n]\\)\\)*[)][;]"
-
-    # from 2.6.25-rc* patches
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-
-    # new in 2.6.26
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf24\(13\|25\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-
-    # new in 2.6.27
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca561\|rev72a\)_init_data3\?\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]\(__\)\?u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_\(agc\|ofdm\|power_cck\(_ch14\)\?\)\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' Documentation/bt8xxgpio.txt
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]\(UINT32\|u32\)[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_b\[\][ ]=' drivers/net/wireless/rt2x00/rt2400pci.c
-
-    # request_firmware matches for 2.6.28
-    accept 'D:[ ]Firmware[ ]loader[ ][(]request_firmware[)]' CREDITS
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept 'This[ ]driver[ ]requires[ ]a[ ]patch[ ]for[ ]firmware_class[^\n]*[\n]request_firmware_nowait[ ]function\.' Documentation/dell_rbu.txt
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept 'Still,[ ]there[ ]are[ ]kernel[ ]threads[ ]that[ ]may[ ]want.*For[ ]example,[ ]if[ ]request_.*_firmware[(][)][ ]will[ ]fail[ ]regardless' Documentation/power/freezing-of-tasks.txt
-    accept 'Also,[ ]there[ ]may[ ]be[ ]some[ ]operations,.*calling[ ]request_firmware[(][)][ ]from[ ]their[ ].resume[(][)][ ]routines' Documentation/power/notifiers.txt
-    accept 'There[ ]is[ ]an[ ]USB[ ]interface[ ]for[ ]downloading[/]uploading.*request_firmware[ ]interface\.' Documentation/video4linux/si470x.txt
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    accept 'config[ ]FIRMWARE_IN_KERNEL.*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware:[ ]-[ ]send[ ]firmware[ ][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[^{]*[\n][{]\([\n]\+[^\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][	]return[ ]-EINVAL[;][\n][}]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-
-    accept 'static[ ]inline[ ]int[ ]request_ihex_firmware\?[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' include/linux/ihex.h
-    ocomment '[/][*][ ]Optional[ ]firmware\([^\n]*[\n][ ][*]\)*[^\n]*[ ]MODULE_FIRMWARE[(][)]'
-    oprepline '#define[ ]MODULE_FIRMWARE[(]_firmware[)]' include/linux/module.h
-    accept '[ ][*][ ]Sample[ ]code[ ]on[ ]how[ ]to[ ]use[ ]request_firmware[(][)][ ]from[ ]drivers\.' samples/firmware_class/firmware_sample_driver.c
-    accept '[	]\(retval\|error\)[ ]=[ ]request_firmware\(_nowait\)\?[(][^;]*["]sample_driver_fw["],[^;]*[)][;]' samples/firmware_class/firmware_sample_driver.c
-    ocomment '[	][/][*][ ]request_firmware[ ]blocks[ ]until[ ]userspace[ ]finished' samples/firmware_class/firmware_sample_driver.c
-    accept '[	][	][ 	]*["][ ]request_firmware_nowait[ ]failed' samples/firmware_class/firmware_sample_driver.c
-
-    # We used to remove these in early versions of Linux-libre.
-    # They're now believed to be mere initialization data, rather than
-    # code disguised as such, and they're not long enough so as to
-    # render the software non-Free.
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\|IPA_PDU_HEADER\|\(READ\|WRITE\)_CCW\)\[\][ ]=' drivers/net/qeth_core_mpc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]\(sync\|magic[0-3]\)_data\[\][ ]=' arch/sh/boards/mach-migor/lcd_qvga.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ov772x_magic\[\][ ]=' arch/sh/boards/mach-migor/setup.c
-    defsnc 'static[ ]struct[ ]chips_init_reg[ ]chips_init_[sgacfx]r\[\][ ]=' 'drivers/video/\(asiliant\|chips\)fb.c'
-
-    # This one is quite suspicious, but it's small enough (64 bytes
-    # total) that it's believable that it could be actual source code.
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-
-    # Hunting down non-Free firmware-loading code and instructions.
-    # Firmware names are to be caught anywhere.
-
-    # 2.6.26 but not later
-
-    blobname 'atmsar1[12]\.\(x\|start\|regions\|data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|ambassador\.c\)'
-    blob '#\(define\|include\)[ ]UCODE2\?[(][^\n]*' drivers/atm/ambassador.c
-    blob 'static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]' drivers/atm/ambassador.c
-    blob '\(#\(ifdef[ ]AMB_NEW_MICROCODE\|else\|endif\)[\n]#\(define\|include\)[ ]UCODE2\?[(][^\n]*[\n]\)\+\([\n]*static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]\)*' drivers/atm/ambassador.c
-
-    blobname '\(pca\|sba\)200e\(_ecd\)\?\.\(data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|fore200e\(_mkfirm\)\?\.c\)'
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*PCA-200E[ ]firmware[ ][*][/]' drivers/atm/fore200e_mkfirm.c
-    blobna '_fore200e_\(pca\|sba\)_fw_\(data\|size\)' drivers/atm/fore200e.c
-    blob '#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\([\n]\+#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\)*' drivers/atm/fore200e.c
-
-    # 2.6.27 but not later
-
-    blob 'cas_saturn_patch_t[ ]cas_saturn_patch\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/cassini.h
-    accept '[	][ ][ ]firmware[ ]files[ ]--[ ]the[ ]same[ ]names[ ]which[ ]appear[ ]in[ ]MODULE_FIRMWARE[(][)]' drivers/base/Kconfig
-
-    # 2.6.28 or earlier
-
-    blobname 'atmsar11\.fw' drivers/atm/ambassador.c
-
-    blob '\(#ifdef[ ]__\(LITTLE\|BIG\)_ENDIAN[\n]\)\?#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\([\n]#else[\n]#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\)*\([\n]#endif\)\?' drivers/atm/fore200e.c
-    blobna 'sprintf[(][^;]*fore200[^;]*FW_EXT[^;]*[)][;]' drivers/atm/fore200e.c
-    blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]\?' drivers/atm/fore200e.c
-    blobna 'The[ ]supplied[ ]firmware[ ]images.*http:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
-
-    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[ ]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]\+[}]\)\([\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]*\)*[^\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]*[\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]_\(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}][^\n]*\)*cp_microcode[^\n]*\([\n]\+[^\n}][^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    blobna 'Please[ ]use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
-    blob 'To[ ]extract[ ]the[ ]firmware[^\n]*Opera[ ]DVB-S1[ ]USB-Box.*[/]lib[/]firmware[/][ ]\.' Documentation/dvb/opera-firmware.txt
-    blobname '\(dvb-usb-opera[^\n]*\.fw\|2830S[^\n]*2\.sys\)' Documentation/dvb/opera-firmware.txt
-    blob 'Getting[ ]the[ ]Firmware\([\n][^\n]\+\)*' Documentation/dvb/ttusb-dec.txt
-
-    blob '[/][*][\n 	]*File[ ]automatically[ ]generated[ ]by[ ]createinit\.py[ ]using[ ]data[\n 	]*extracted[ ]from[ ]AF05BDA\.sys.*[}][;]' drivers/media/dvb/dvb-usb/af9005-script.h
-    blob '#include[ ]["]af9005-script\.h["]' drivers/media/dvb/dvb-usb/af9005-fe.c
-    blobna '[\n][	]scriptlen[ ]=[ ]sizeof[(]script[)][^;]*[;][\n][	]for[^{]*scriptlen[^{]*[{][^}]*[^\n	}]' drivers/media/dvb/dvb-usb/af9005-fe.c
-
-    accept 'struct[ ]\(sp8870\|tda1004x\)_config[\n][{][^}]*[(][*]request_firmware[)][^}]*[\n][}][;]' 'drivers/media/dvb/frontends/\(sp8870\|tda1004x\)\.h'
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*get_dvb_firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n]\(#define[ ]\(\([^\n 	]*_DEFAULT\|NONFREE\)_FIRMWARE\|["][^"]*["]\)[ ]\([^\n]\|[\\][\n]\)*\|[/][*][(]DEBLOBBED[)][*][/]\)\)*' 'drivers/media/dvb/frontends/\(nxt200x\|or51211\|sp887[0x]\|tda1004[8x]\)\.c'
-    blobname 'dvb-fe-sp8870\.fw' drivers/media/dvb/frontends/sp8870.c
-    blobname 'dvb-fe-tda1004[56]\.fw' drivers/media/dvb/frontends/tda1004x.c
-
-    # This bootcode is actually Free Software under GPLv2, but since it's
-    # being distributed without source code, we're taking it out.
-    blob 'static[ ]u8[ ]bootcode\[\][ ]=[ ][{][^}]*[}][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    blobname 'dvb-ttpci-01\.fw' drivers/media/dvb/ttpci/av7110.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-
-    blobname 'ttusb-budget[/]dspbootcode\.bin' drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-
-    blobname 'cpia2[/]stv0672_vp4\.bin' drivers/media/video/cpia2/cpia2_core.c
-
-    blobname 'dabusb[/]\(firmware\.fw\|bitstream\.bin\)' drivers/media/video/dabusb.c
-
-    blob 'static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\([\n]static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\)*' drivers/net/acenic_firwmare.h
-    blob '#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\([\n]#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\)\+' drivers/net/acenic_firmware.h
-    blob '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Do[ ]not[ ]try[ ]to[ ]clear[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n][	]\)\?ace_clear[^;]*[;][\n]\([^}]*[{][^}]*ace_copy[^}]*tigon2\?Fw[^}]*[}]\)*[\n]\+[	]return[ ]0[;][\n][}]' drivers/net/acenic.c
-    blob 'if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\([\n][	]if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\)*' drivers/net/acenic.c
-
-    blob '#include[ ]["]starfire_firmware\.h["]' drivers/net/starfire.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Load[ ]Rx[/]Tx[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n][	]for[ ][(][^)]*FIRMWARE_[RT]X_SIZE[^)]*[)][\n][	][	]writel[^;]*firmware_[rt]x[^;]*[;]\)\+' drivers/net/starfire.c
-
-    blob 'static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\)*' 'drivers/net/bnx2_fw2\?.h'
-    blob '#include[ ]["]bnx2_fw\.h["][\n][\n]*#include[ ]["]bnx2_fw2\.h["]' drivers/net/bnx2.c
-    blob 'static[ ]void[\n]load_rv2p_fw[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-    blob 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-
-    # init_data_e1h? might actually be just data, but it doesn't
-    # really matter.
-    blob 'static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\)*' drivers/net/bnx2x_init_values.h
-    blob 'static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\([\n][\n]*static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\)*' 'drivers/net/bnx2x_init\(_ops\)\?\.h'
-
-    blobname 'sun[/]cassini\.bin' drivers/net/cassini.c
-
-    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 '\(cxgb3[/]\)\?t3\(fw\|\(%c\|.\)_p\(rotocol_\)\?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]*[/][*][^*]*\([*]\+\([^/*]\|[/][\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
-
-    blob 'static[ ]unsigned[ ]char[ ]__devinitdata[ ]lanai4_\(code\|data\)\[[0-9]*\][ ]=[ ][{][^;]*[}][;]' drivers/net/myri_code.h
-    blob '#include[ ]["]myri_code\.h["]' drivers/net/myri_sbus.c
-    blobna '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_code_off[^;]*[;]\([\n	 ]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_\(code\|data\)_off[^;]*[;]\)*' drivers/net/myri_sbus.c
-
-    blob 'static[ ]u32[ ]s_firmLoad\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/tehuti_fw.h
-    blobna 'bdx_tx_push_desc_safe[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-    blobna 'for[ ][(][^\n]*ARRAY_SIZE[(]s_firmLoad[)][^\n]*[)][\n	 ]*s_firmLoad[^;]*=[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-
-    blob '[ ][*][ ]Firmware[ ]is:[\n][ ][*][	]Derived[ ]from[ ]proprietary[^/]*notice[ ]is[ ]accompanying[ ]it\.[\n][ ][*][/]' drivers/net/tg3.c
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blob '\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*\(static[ ]const[ ]u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\|#if[ ]0\([ ][/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?[\n]\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;][\n]#endif\)\)*' drivers/net/tg3.c
-
-    blob 'static[ ]const[ ]u8[ ]typhoon_firmware_image\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/typhoon-firmware.h
-
-    blobna 'licensed[^\n]*strictly[ ]for[ ]use[^\n]*[\n]*[^\n]*COPS[ ]LocalTalk' 'drivers/net/appletalk/cops_\(ff\|lt\)drv\.h'
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]ffdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ffdrv.h
-    blob 'static[ ]const[ ]unsgined[ ]char[ ]ltdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ltdrv.h
-    blob '#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/net/appletalk/cops.c
-
-    blob 'static[ ]unsigned[ ]char[ ]bits_1200\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam1200.h
-    blob 'static[ ]unsigned[ ]char[ ]bits_9600\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam9600.h
-    blob '#include[ ]["]yam\(96\|12\)00\.h["]\([\n][\n]*#include[ ]["]yam\(96\|12\)00\.h["]\)*' drivers/net/hamradio/yam.c
-
-    blobna 'static[ ]const[ ]u_char[ ]__Xilinx7OD\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/pcmcia/ositech.h
-    blob '#include[ ]["]ositech\.h["]' drivers/net/pcmcia/smc91c92_cs.c
-    blobna '\([/][*][ ]Download[ ]the[ ]Seven[ ]of[ ]Diamonds[ ]firmware[^/]*[*][/][\n	 ]*\)\?for[ ]*[(][^\n]*__Xilinx7OD[^{}]*[{][\n][	 ]*outb[ ]*[(]__Xilinx7OD[^}]*[}]' drivers/net/pcmcia/smc91c92_cs.c
-
-    blob 'static[ ]const[ ]u8[ ]microcode\[\][ ]=[ ][{][^}]*[}][ ]*[;]' drivers/net/tokenring/3c359_microcode.h
-    blob '#include[ ]["]3c359_microcode\.h["]' drivers/net/tokenring/3c359.c
-    blobna 'start[ ]=[ ][(]0xFFFF[ ]-[ ][(]mc_size[)][^;]*[;][\n 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n 	]*printk[(]KERN_INFO[ ]["]3C359:[ ]Uploading[ ]Microcode:[ ]["][)][;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\([\n][ 	]*printk[^\n]*[;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\)*' drivers/net/tokenring/3c359.c
-
-    blobname 'tr_smctr\.bin' drivers/net/tokenring/smctr.c
-
-    blobname 'kaweth[/]\(new\|trigger\)_code\(_fix\)\?\.bin' drivers/net/usb/kaweth.c
-
-
-    blobname '\(agere\|prism\)_\(sta\|ap\)_fw\.bin' 'drivers/net/wireless/\(orinico/\)\?\(orinoco\|fw\)\.c'
-    blobname 'symbol_sp24t_\(prim\|sec\)_fw' 'drivers/net/wireless/\(\(orinico/\)\?orinoco\.c\|spectrum_cs\.c\)'
-
-    blob 'unsigned[ ]short[ ]sbus_risc_code01\[\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]' drivers/scsi/qlogicpti_asm.c
-    blob '#include[ ]["]qlogicpti_asm\.c["]' drivers/scsi/qlogicpti.c
-
-    blob '\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/scsi/advansys.c
-
-    blob '\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc\|fw12\(80e\|160\)i\)_code01\[\][ ]=[ ][{]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code01\[\][ ]=[ ][{][\n]#endif[\n]\)\?[^}]*[}][;]\([\n][\n]*\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc_code\|fw12\(80e\|160\)i\)_length01[ ]=[ ][^;]*[;]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code_length01[ ]=[ ][^;]*[;][\n]#endif\)\?\)\?' 'drivers/scsi/ql1\(04\|2\(8\|16\)\)0_fw\.h'
-
-    blobname 'emi26[/]\(bitstream\|firmware\|loader\)\.fw' drivers/usb/misc/emi26.c
-
-    blobname 'emi62[/]\(bitstream\|midi\|spdif\|loader\)\.fw' drivers/usb/misc/emi62.c
-
-    blobname 'keyspan[/]\(mpr\|usa\(18x\|19\(q[iw]\|w\)\?\|28\(x\(a\|b\)\?\)\?\|49w\(lc\)\?\)\)\.fw' drivers/usb/serial/keyspan.c
-
-    accept '[	][	]fw_name[ ]=[ ]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][;]' drivers/usb/serial/keyspan_pda.c
-    blobna 'fw_name[ ]=[ ][^\n]*\([\n]\+[^\n}][^\n]*\)*\([/][*]KEYSPAN_PDA[*][/]\)\?request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-
-    blobname 'edgeport[/]\(boot\|down\)2\?\.fw' drivers/usb/serial/io_edgeport.c
-    blobname 'edgeport[/]down3\.bin' drivers/usb/serial/io_ti.c
-
-    blobname 'ti_\(usb-\)\?\(%d\|3410\|5052\)\.\(fw\|bin\)' drivers/usb/serial/ti_usb_3410_5052.c
-
-    blobname 'whiteheat\(_loader\(_debug\)\?\)\?\.fw' drivers/usb/serial/whiteheat.c
-
-    blob 'static[ ]struct[ ]BA1struct[ ]BA1Struct[ ]=[ ][{][^;]*[}][;]' sound/pci/cs46xx/cs46xx_image.h
-
-    blob 'static[ ]u32[ ]cwc\(4630\|async\|snoop\)_\(code\|parameter\)\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(4630\|async\|snoop\)\.h'
-    # cwcbinhack appears to have been created by hand.
-    # cwcdma has sources (not verified) in cwcdma.asp.
-    accept 'static[ ]u32[ ]cwc\(binhack\|dma\)_code\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(binhack\|dma\)\.h'
-    blob '#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\([\n][\n]*#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\)*' sound/pci/cs46xx/cs46xx_lib.c
-
-    blobname 'korg[/]k1212\.dsp' sound/pci/korg1212/korg1212.c
-
-    blobname 'ess[/]maestro3_assp_\(kernel\|minisrc\)\.fw' sound/pci/maestro3.c
-
-    blobname 'yamaha[/]ds1e\?_\(ctrl\|dsp\)\.fw' sound/pci/ymfpci/ymfpci_main.c
-
-    blobname 'sb16[/]\(\(a\|mu\)law_main\|ima_adpcm_\(init\|capture\|playback\)\)\.csp' sound/isa/sb/sb16_dsp.c
-
-    blob 'static[ ]const[ ]struct[ ][{][^}]*[}][ ]yss225_registers\[\][ ]__devinitdata[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/yss225.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    blobna 'firmware[ ]=[ ][&]yss225_registers_firmware[;]' sound/isa/wavefront/wavefront_fx.c
-    blob 'static[ ]const[ ]struct[ ]firmware[ ]yss225_registers_firmware[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/wavefront_fx.c
-    blobna '\(ospath[	 ]*-[ ]Pathname[^\n]*ICS2115[^-]*wavefront\.os\|Note:[ ]the[ ]firmware[ ]file[ ]["]wavefront\.os["]\)[^-]*[/]lib[/]firmware\.\([^.]*after[ ]upgrading[ ]the[ ]kernel\)\?' Documentation/sound/alsa/ALSA-Configuration.txt
-    blobname 'wavefront\.os' sound/isa/wavefront/wavefront_synth.c
-
-    blobna 'and[\n]require[ ]the[ ]use[ ]of[^\n]*propr\?ietary[^:]*' Documentation/arm/IXP4xx
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-
-    blobname 'xc\(%d\|[0-9]*\)\.bin' arch/arm/mach-netx/include/mach/xc.h
-    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 'iop_fw_load_[sm]pu' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'int[ ]iop_fw_load_[sm]pu[(]' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept '[	]retval[ ]=[ ]request_firmware[^;]*[&]iop_[sm]pu_device' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'EXPORT_SYMBOL[(]iop_fw_load_[sm]pu[)][;]' arch/cris/arch-v32/drivers/iop_fw_load.c
-
-    accept '[/][*][ ]fake[ ]device[ ]for[ ]request_firmware[ ][*][/]' arch/x86/kernel/microcode_core.c
-
-    blobname 'amd-ucode[/]microcode_amd\.bin' arch/x86/kernel/microcode_amd.c
-
-    blobname 'intel-ucode[/]\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)' 'arch/x86/kernel/microcode\(_intel\)\?\.c'
-
-    blobname 'BCM2033-\(MD\.hex\|FW\.bin\)' drivers/bluetooth/bcm203x.c
-
-    blobname 'bfubase\.frm' drivers/bluetooth/bfusb.c
-
-    blobname 'BT3CPCC\.bin' drivers/bluetooth/bt3c_cs.c
-
-    blobname 'cyzfirm\.bin' drivers/char/cyclades.c
-
-    accept 'MODULE_FIRMWARE[(]["]dsp56k[/]bootstrap\.bin["][)][;]' drivers/char/dsp56k.c
-    blobna 'const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-    accept '[	]const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-
-    blobname 'isi\(6\(08\|\(08\|16\)em\)\|46\(08\|16\)\)\.bin' drivers/char/isicom.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
-    # only issues a firmware request if specifically told to.  It
-    # doesn't require any non-Free firwmare to function, and it
-    # doesn't actually recommend users to perform updates, so I'm
-    # leaving it in.
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    accept '[	]*["]dell_rbu:%s[ ]request_firmware_nowait["]' drivers/firmware/dell_rbu.c
-
-    blobname 'xc3028-v27\.fw' drivers/media/common/tuners/tuner-xc2028.h
-    blobname 'xc3028L-v36\.fw' drivers/media/common/tuners/tuner-xc2028.h
-
-    blobname 'dvb-fe-xc5000-1\.1\.fw' drivers/media/common/tuners/xc5000.c
-
-    blobname '4210\(100[12]\|%4X\)\.sb' drivers/net/irda/irda-usb.c
-    blobna '[/][*][ 	\n*]*[ ]Known[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]*\(STIR421x\|4210\(100[12]\|%4X\)\.sb\)[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/irda/irda-usb.c
-
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobna 'If[ ]the[ ]driver[ ]can[ ]neither[ ]enable[ ]ECRC[^*]*\([*]\+[^/*][^*]*\)*[*]*myri10ge_\(rss_\)\?ethp\?_z8e\.dat[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/myri10ge.c
-
-    blobname 'spider_fw\.bin' drivers/net/spider_net.h
-
-    blobname 'tms380tr\.bin' drivers/net/tokenring/tms380tr.c
-
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    accept '[	]*priv->firmware[ ]=[ ]\(NULL\|new_firmware\)[;]' drivers/net/wireless/atmel.c
-
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname 'pcm5\.fw' drivers/net/wireless/b43/main.c
-    blobna 'b43legacyerr[(][^;]*must[ ]go[ ]to[ ]http[^;]*b43#devicefirmware[^;]*[)][;]' drivers/net/wireless/b43legacy/main.c
-    blobna 'You[ ]must[ ]go[ ]to[^;]*b43#devicefirmware[^;]*[^";)]' drivers/net/wireless/b43/main.c
-    blobna 'http:[/][/]wireless[^ ";)]*b43#devicefirmware' drivers/net/wireless/b43/main.c
-
-    blob '#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\([\n][\n]*#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname 'ipw2100-\(["]\([^"\n]\|[\\][\n]\)*["]\([^"]\|[\\]["]\)*\)\+' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '__stringify[(]IPW2100_FW_MINOR_VERSION[)]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[ ]*Portions[ ]of[ ]ipw2100_\(do_\)\?mod_firmware_load[, 	]*\(ipw2100_\(do_\)\?mod_firmware_load[, 	and\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]ipw2100_mod_firmware_load[(]fw[)][;]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobna 'if[ ][(]IPW2100_FW_MAJOR[^{]*[{][^}]*[	][}]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '["]["][ ]x[ ]["]\.fw["]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-
-    accept '[/][*][ ]Call[ ]this[ ]function[ ]from[ ]process[ ]context[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    blobname 'ipw2200-\(i\?bss\|sniffer\)\.fw' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    accept '[	][	]IPW_ERROR[(]["]%s[ ]request_firmware[ ]failed' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname 'iwlwifi-3945-' drivers/net/iwlwifi/iwl-3945.h
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    accept '#define\([ ]_\?IWL3945_MODULE_FIRMWARE[(]api[)]\)\+' drivers/net/iwlwifi/iwl-3945.h
-    accept '[	][ ][*][ ]request_firmware[(][)][ ]is[ ]synchronous' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\)\.c'
-    blobname 'iwlwifi-4965-' drivers/net/iwlwifi/iwl-4965.c
-    blobname 'iwlwifi-5\(00\|15\)0-' drivers/net/iwlwifi/iwl-5000.c
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\|idx\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'usb8388\(-5\.126\.0\.p5\)\?\.bin' drivers/net/wireless/libertas/if_usb.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*usb8388\(-5\.126\.0\.p5\)\?\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]lbs_pr_err[(]["]request_firmware\([(][)]\)\?[ ]failed' 'drivers/net/wireless/if_\(spi\|usb\)\.c'
-    blobna 'o\.[ ]Copy[ ]the[ ]firmware[ ]image[^\n]*usb8388\([^\n]\|[\n][ 	]*[^ 	\n]\)*' drivers/net/wireless/libertas/README
-    blobna '\[fw_name=usb8388[^]]*\]' drivers/net/wireless/libertas/README
-
-    blobname 'usb8388\.bin' drivers/base/Kconfig
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-
-    blobname 'lbtf_usb\.bin' drivers/net/wireless/libertas_tf/if_usb.c
-
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' '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 'rt2[56]61s\?\.bin' drivers/net/wireless/rt2x00/rt61pci.h
-    blobname 'rt73\.bin' drivers/net/wireless/rt2x00/rt73usb.h
-
-    blobname 'zd1201\(-ap\)\?\.fw' drivers/net/wireless/zd1201.c
-
-    blobname 'zd1211[/]zd1211b\?_\(u\([rb]\|phr\)\?\)\?' drivers/net/wireless/zd1211/zd_usb.c
-
-    # ??? gotta introduce some means to match false-positives
-    # including post context containing blobs, so that the macro name
-    # is not flagged or deblobbed, but the blob name is.
-    # blobna 'PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)'
-    # accept '[	]    PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(][^)]*, ["][/][*][(]DEBLOBBED[)][*][/]["][)]'
-    # accept '#define PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(]' include/pcmcia/device_id.h
-
-    # These are not software; they're Free, but GPLed without in-tree sources.
-    # blobname '\(cis[/]\)\?3CCFEM556\.cis' drivers/net/pcmcia/3c574_cs.c
-    # blobname '\(cis[/]\)\?3CXEM556\.cis' drivers/net/pcmcia/3c589_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis' drivers/net/pcmcia/pcnet_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\)\.cis' drivers/serial/serial_cs.c
-    # These are not software; they're Free, but GPLed without textual sources.
-    # It is safe to assume that these binaries *are* sources, since they
-    # can be trivially converted back to a textual form, without loss.
-    # blobname '\(cis[/]\)\?SW_\([78]xx\|555\)_SER\.cis' drivers/serial/serial_cs.c
-
-    accept '[	]\(ds_\)\?\(dev_\)\?dbg[(]\(1[,][ ]\)\?\([&]dev->dev,[ ]\)\?["]trying[ ]to[ ]load[ ]\(CIS[ ]file\|firmware\)[ ]%s[\\]n["],[ ]filename[)][;][\n]*[	]if[ ][(]\(strlen[(]filename[)][^\n]*\([{][^}]*[	][}]\|[)][\n][	]*return[^\n]*[;]\)[\n]*[	]snprintf[(]path,[ ]\(20\|sizeof[(]path[)]\),[^\n]*,[ ]filename[)][;][\n]*[	]if[ ][(]request_firmware[(][&]fw,[ ]path\|request_firmware[(][&]fw,[ ]filename\),[ ][&]dev->dev[)][^\n]*[)][ ][{][\n][	]*if[ ][(]fw->size[ ]>=[ ]CISTPL_MAX_CIS_SIZE[)]' drivers/pcmcia/ds.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\)*' drivers/net/pcnet_cs.c
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]err[ ]=[ ]request_firmware[(][&]asd_ha->bios_image,[\n 	]*filename_ptr,[\n 	]*[&]asd_ha->pcidev->dev[)][;]' drivers/scsi/aic94xx/aic94xx_init.c
-    blobname 'aic94xx-seq\.fw' drivers/scsi/aic94xx/aic94xx_seq.h
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-
-    accept '[	]res[ ]=[ ]request_firmware[(]&fw,[ ]["]sas_addr["],[ ]&shost->shost_gendev[)][;]' drivers/scsi/libsas/sas_scsi_host.c
-
-    blobname 'ql\(2\([12345]00\|322\)\|8[12]00\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]' drivers/scsi/qla2xxx/Kconfig
-
-    blobname 'icom_\(asc\|res_dce\|call_setup\)\.bin' drivers/serial/icom.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\|net/wireless\)/at76_usb/at76_usb\.c\|at76c50x-usb\.c\)'
-
-    accept 'static[ ]struct[ ]go7007_usb_board[ ]board_\(matrix_\(ii\|reload\|revolution\)\|star_trek\|px_tv402u\|xmen\|lifeview_lr192\|endura\|adlink_mpg24\|sensoray_2250\)[ ]=[ ][{][\n]\([	]\.flags[ 	]*=[ ][^",]*,[\n]*\)*[	]\.main_info[ 	]*=[ ][{][\n][	][	]\.firmware[ 	]*=[ ]' drivers/staging/go7007/go7007-usb.c
-    accept 'static[ ]struct[ ]go7007_board_info[ ]board_voyager[ ]=[ ][{][\n][	]\.firmware[	 ]*=[ ]' drivers/staging/go7007/saa7134-go7007.c
-    blobname 'go7007\(fw\|tv\)\.bin' 'drivers/staging/go7007/\(go7007-\(driver\|usb\)\|saa7134-go7007\)\.c'
-
-    blobname 'cxacru-\(%s\|fw\|bp\|cf\)\.bin' drivers/usb/atm/cxacru.c
-
-    blobname 'speedtch-\(%d\|[0-9]*\)\.bin\(\.\(%x\|\(0x\)\?[0-9a-fA-F]*\)\(\.\(%02x\|[0-9a-fA-F][0-9a-fA-F]\)\)\?\)\?' drivers/usb/atm/speedtch.c
-
-    blobname 'ueagle-atm[/]' drivers/usb/atm/ueagle-atm.c
-    blobname '\(adi930\|eagle\(I*\|IV\)\)\.fw' drivers/usb/atm/ueagle-atm.c
-    blobname 'DSP[49e][ip]\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname '930-fpga\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-
-    blobname 'isight\.fw' drivers/usb/misc/isight_firwmare.c
-
-    blobname '\(i1480-\(pre-phy\|usb\|phy\)\|ptc\)-0\.0\.bin' drivers/uwb/i1480/dfu/usb.c
-
-    accept '[	]retval[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]metronome\.wbf["],[ ][&]dev->dev[)][;]' drivers/video/metronomefb.c
-
-    blobname '\(vx[/]\)\?\(bx_1_v\(xp\|p4\)\.b56\|x1_\(1_v\(x[2p]\|p4\)\|2_v22\)\.xlx\|bd56\(002\|3v2\|3s3\)\.boot\|l_1_v\(x[2p]\|p4\|22\)\.d56\)' sound/drivers/vx/vx_hwdep.c
-
-    blobname '\(ea[/]\)\?darla20_dsp\.fw' sound/pci/echoaudio/darla20.c
-    blobname '\(ea[/]\)\?darla24_dsp\.fw' sound/pci/echoaudio/darla24.c
-    blobname '\(ea[/]\)\?\(\(loader\|echo3g\)_dsp\|3g_asic\)\.fw' sound/pci/echoaudio/echo3g.c
-    blobname '\(ea[/]\)\?gina20_dsp\.fw' sound/pci/echoaudio/gina20.c
-    blobname '\(ea[/]\)\?\(\(loader\|gina24_3[06]1\)_dsp\|gina24_3[06]1_asic\)\.fw' sound/pci/echoaudio/gina24.c
-    blobname '\(ea[/]\)\?\(loader\|indigo\)_dsp\.fw' sound/pci/echoaudio/indigo.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_dj\)_dsp\.fw' sound/pci/echoaudio/indigodj.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_io\)_dsp\.fw' sound/pci/echoaudio/indigoio.c
-    blobname '\(ea[/]\)\?layla20_\(dsp\|asic\)\.fw' sound/pci/echoaudio/layla20.c
-    blobname '\(ea[/]\)\?\(\(loader\|layla24\)_dsp\|layla24_\(1\|2[AS]\)_asic\)\.fw' sound/pci/echoaudio/layla24.c
-    blobname '\(ea[/]\)\?\(loader\|mia\)_dsp\.fw' sound/pci/echoaudio/mia.c
-    blobname '\(ea[/]\)\?\(\(loader\|mona_3[06]1\)_dsp\|mona_3[06]1\(_1\)\?_asic_\(48\|96\)\|mona_2_asic\)\.fw' sound/pci/echoaudio/gina24.mona
-    blobname 'ea[/]%s' sound/pci/echoaudio/echoaudio.c
-
-    blobname 'emu[/]\(hana\|\(audio\|micro\)_dock\|emu\(0404\|1010\(b\|_notebook\)\)\)\.fw' sound/pci/emu10k1/emu10k1_main.c
-
-    blobname '\(mixart[/]\)\?miXart8\(AES\)\?\.\(xlx\|elf\)' sound/pci/mixart/mixart_hwdep.c
-
-    blobname '\(pcxhr[/]\)\?\(x[ic]_1_882\|[ebd]321_512\|xlxint\|\(xlxc\|dsp[ebd]\)\(882\|1\?222\|924\)\(e\|hr\)\?\)\(\.dat\|\.[ebd]56\)' sound/pci/pcxhr/pcxhr_hwdep.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
-    blobna 'chip->firmware[ ]=[ ]firmware[;]' sound/pci/riptide/riptide.c
-
-    blobname '\(multi\|digi\)face_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-
-    blobname 'aica_firmware\.bin' sound/sh/aica.c
-
-    accept '[ ][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Caution:[ ]This[ ]API[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware.' sound/sound_firmware.c
-    accept 'static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'int[ ]mod_firmware_load[(]' sound/sound_firmware.c
-    accept '[	]r[ ]=[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'EXPORT_SYMBOL[(]mod_firmware_load[)][;]' sound/sound_firmware.c
-    accept 'extern[ ]int[ ]mod_firmware_load[(]' sound/oss/sound_firmware.h
-
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]PERMCODESIZE[ ]=[ ]mod_firmware_load[(]PERMCODEFILE,[ ][&]PERMCODE[)][;]' sound/oss/msnd_pinnacle.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?pndsp\(ini\|erm\)\.bin' '\(sound/oss/msnd_pinnacle.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' '\(sound/oss/msnd_classic.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobna '\(Important[ ]Notes[ ]-[ ]Read[ ]Before[ ]Using\|Obtaining[ ]and[ ]Creating[ ]Firmware[ ]Files\)[\n]#[ ][ ]~*\([^\n]\|[\n]#[ ]*\([\n]#[ ]*\([\n]#[ ]*For[ ]the[^\n]*[\n]#[ ]*~*[\n]\)\?\)\?[^\n ]\)*\.' Documentation/sound/oss/MultiSound
-
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    blobname '[/]sndscape[/]\(scope\.cod\|sndscape\.co\([?dx01234]\|%d\)\)' sound/oss/sscape.c
-
-    accept '[	][	]trix_boot_len[ ]=[ ]mod_firmware_load[(]' sound/oss/trix.c
-    blobname '\([/]etc[/]sound[/]\)\?trxpro\.bin' sound/oss/trix.c
-
-    accept '[	][	]smw_ucodeLen[ ]=[ ]mod_firmware_load[(]' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\)\?midi0001\.bin' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' sound/oss/Kconfig
-
-    blob 'When[ ]the[ ]module[ ]is[ ]loaded[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]*\)*' Documentation/sound/oss/PSS
-    blob 'pss_firmware[ \n	]*This[ ]parameter[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]\+\)*' Documentation/sound/oss/PSS-updates
-    accept '[	][	]pss_synthLen[ ]=[ ]mod_firmware_load[(]pss_firmware,[ ][(]void[ ][*][)][ ][&]pss_synth[)][;]' sound/oss/pss.c
-    accept '[	]*if[ ]\?[(]\(!\|fw_load[ ][&][&][ ]\)\?pss_synth' sound/oss/pss.c
-    accept '[	]*if[ ][(]!pss_download_boot[(]devc,[ ]pss_synth,[ ]pss_synthLen,' sound/oss/pss.c
-    accept '[	]*vfree[(]pss_synth[)][;]' sound/oss/pss.c
-    blobna 'to[ ]allow[ ]the[ ]user[ ][^/"]*fir[em]ware[ ]file[^/"]*["][^"*]*["]' sound/oss/pss.c
-    blobname '\([/]etc[/]sound[/]\)\?pss_synth' sound/oss/pss.c
-    accept '[	][$][(]obj[)][/]bin2hex[ ]pss_synth' sound/oss/Makefile
-    accept '[	][ ]*echo[ ][\'"'"']static[ ]\(unsigned[ ]char[ ][*][ ]*\|int[ ]\)pss_synth\(Len\)\?[ ]=[ ]\(NULL\|0\)[;]' sound/oss/Makefile
-
-    accept '[	]\.request_firmware[ ]=[ ]NULL,' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept '[	 ]*["]request_firmware[ ]\(fatal[ ]error\|unable[ ]to[ ]locate\|:[ ]Failed[ ]to[ ]find\)' drivers/media/video/pvrusb2/pvrusb2-hdw.c
-    accept '[ ][*][ ]NOTE[ ]:[ ]the[ ]pointer[ ]to[ ]the[ ]firmware[ ]data[ ]given[ ]by[ ]request_firmware[(][)]' drivers/media/video/pvrusb2-hdw.c
-
-    blobname 'dvb-usb-\(dw\(210[124]\|3101\)\|s630\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]gp8psk_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-gp8psk-0[12]\.fw' drivers/media/dvb/dvb-usb/gp8psk.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]opera1_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-opera-\(fpga-\)\?-01\.fw' drivers/media/dvb/dvb-usb/opera1.c
-
-    blobname 'dvb-fe-af9013\.fw' drivers/media/dvb/frontends/af9013_priv.h
-
-    blobname 'dvb-fe-bcm3510-01\.fw' drivers/media/dvb/frontends/bcm3510.c
-
-    blobname 'dvb-fe-cx24116\.fw' drivers/media/dvb/frontends/cx24116.c
-
-    blobname 'dvb-fe-nxt2002\.fw' drivers/media/dvb/frontends/nxt200x.c
-
-    blob '[/][*][\n][ ][*][ ]This[ ]driver[ ]needs[ ]two[ ]external[ ]firmware[ ]files[^*]*\([*]\+[^/*][^*]*\)*[*]*dvb-fe-or51132-\(vsb\|qam\)\.fw[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/dvb/frontends/or51132.c
-    blobname 'dvb-fe-or51132-\(vsb\|qam\)\.fw' drivers/media/dvb/frontends/or51132.c
-
-    blobname 'dvb-fe-or51211\.fw' drivers/media/dvb/frontends/or51211.c
-
-    blobname 'dvb-fe-sp887x\.fw' drivers/media/dvb/frontends/sp887x.c
-
-    blobname 'dvb-fe-tda10048-1\.0\.fw' drivers/media/dvb/frontends/tda10048.c
-
-    blobname '\(\(dvb\|tdmb\|isdbt\)_nova\|cmmb_vega\)_12mhz\(_b0\)\?\.inp' drivers/media/dvb/siano/smscoreapi.c
-
-    blobname '\(dvb[th]\(_bda\)\?\|tdmb\)_stellar_usb\.inp' drivers/media/dvb/siano/smsusb.c
-
-    blobname 'dvb-ttusb-dec-\(2000t\|2540t\|3000s\)\.fw' drivers/media/dvb/ttusb-dec/ttusb_dec.c
-
-    blob 'For[ ]the[ ]WinTV[/]PVR[^:]*firmware[^:]*:[\n]hcwamc\.rbf[^\n]*\([\n][^\n][^\n]*\)*' Documentation/video4linux/bttv/README
-    blobname 'hcwamc\.rbf' drivers/media/video/bt8xx/bttv-cards.c
-    blobna 'The[ ]hcwamc\.rbf[ ]firmware[ ]file[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/bt8xx/bttv-cards.c
-
-    blobname 'v4l-cx23418-dig\.fw' drivers/media/video/cx18/cx18-av-firmware.c
-    blobname 'v4l-cx23418-[ac]pu\.fw' drivers/media/video/cx18/cx18-firwmare.c
-
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-
-    blobname 'v4l-\(cx23\(885\|1xx\)-avcore-01\|cx25840\)\.fw' drivers/media/video/cx25840/cx25840-firmware.c
-
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-
-    blobname 'v4l-cx2341x-init\.mpg' drivers/media/video/ivtv/ivtv-firwmare.c
-
-    blobname 'v4l-pvrusb2-\(2[49]\|73\)xxx-01\.fw' drivers/media/video/pvrusb2/pvrusb2-devattr.c
-
-    blobname 'f2255usb\.bin' drivers/media/video/s2255drv.c
-
-    blobname 'drx397xD\.\(A2\|B1\)\.fw' drivers/media/dvb/frontends/drx397xD_fw.h
-
-    accept '#define[ ]DIB0700_DEFAULT_DEVICE_PROPERTIES[ ]\\[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^\n",]*,[ ]\\[\n]\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-dib0700-1\.[12]0\.fw' 'drivers/media/dvb/dvb-usb/dib0700_\(devices\|core\)\.c'
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]nova_t_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-nova-t-usb2-02\.fw' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]umt_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/umt-010.c
-    blobname 'dvb-usb-umt-010-02\.fw' drivers/media/dvb/dvb-usb/umt-010.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]ttusb2_properties\(_s2400\)\?[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/ttusb2.c
-    blobname 'dvb-usb-\(pctv-400e\|tt-s2400\)-01\.fw' drivers/media/dvb/dvb-usb/ttusb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]cxusb_bluebird_\(lgh064f\|dee1601\|lgz201\|dtt7579\|nano2_needsfirmware\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/cxusb.c
-    blobname 'dvb-usb-bluebird-0[12]\.fw' drivers/media/dvb/dvb-usb/cxusb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dtt200u\|wt220u\(_\(fc\|zl0353\|miglia\)\)\?\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dtt200u.c
-    blobname 'dvb-usb-\(dtt200u-01\|wt220u-\(02\|fc03\|\(zl0353\|miglia\)-01\)\)\.fw' drivers/media/dvb/dvb-usb/dtt200u.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    blobname 'dvb-usb-vp7045-01\.fw' drivers/media/dvb/dvb-usb/vp7045.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dibusb\(1_1\(_an2235\)\?\|2_0b\)\|artec_t1_usb2\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mb.c
-    blobname 'dvb-usb-\(dibusb-\(5\.0\.0\.11\|an2235-01\|6\.0\.0\.8\)\|adstech-usb2-02\)\.fw' drivers/media/dvb/dvb-usb/dibusb-mb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]a800_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/a800.c
-    blobname 'dvb-usb-avertv-a800-02\.fw' drivers/media/dvb/dvb-usb/a800.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]af9005_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9005.c
-    blobname 'af9005\.fw' drivers/media/dvb/dvb-usb/af9005.c
-
-    accept '[	][	]\.download_firmware[ ]=[ ]af9015_download_firmware,[\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    blobname 'dvb-usb-af9015\.fw' drivers/media/dvb/dvb-usb/af9015.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]dibusb_mc_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mc.c
-    blobname 'dvb-usb-dibusb-6\.0\.0\.8\.fw' drivers/media/dvb/dvb-usb/dibusb-mc.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp702x_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp702x.c
-    blobname 'dvb-usb-vp702x-02\.fw' drivers/media/dvb/dvb-usb/vp702x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]digitv_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/digitv.c
-    blobname 'dvb-usb-digitv-02\.fw' drivers/media/dvb/dvb-usb/digitv.c
-
-    blob 'Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\([\n][\n]--*[\n][\n]\?Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\)*' firmware/WHENCE
-
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-
-    accept '[ ][ ][ ][ ]mv[ ]["][$]ofile["][ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$]objbin[/]mktree[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[	]rm[ ]-f[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$][{]CROSS[}]objcopy[ ]-O[ ]binary[ ]["][$]ofile["][ ]["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]odir=["][$][(]dirname[ ]["][$]ofile\.bin["][)]["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]gzip[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-
-    blobname 'di\(\(dn\|pr\)load\|diva\(pp\)\?\|hscx\|v110\|modem\|fax\|_etsi\|_\(1tr6\|belg\|franc\|atel\|ni\|5ess\|japan\|swed\)\|dspdld\)\.\(bin\|s[xyqm]\|p\)' drivers/isdn/hardware/eicon/cardtype.h
-    blobname 'dsp\(dload\|dqsig\|dvmdm\|dvfax\)\.bin' drivers/isdn/hardware/eicon/dsp_defs.h
-
-    blobname 'vicam[/]firmware\.fw' drivers/media/video/usbvideo/vicam.c
-
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-
-    # New in 2.6.29
-    blobname 'acenic[/]tg[12]\.bin' drivers/net/acenic.c
-    blobname 'adaptec[/]starfire_[rt]x\.bin' drivers/net/starfire.c
-    blobname 'e100[/]d10\(1[ms]\|2e\)_ucode\.bin' drivers/net/e100.c
-    blobname 'tigon[/]tg3\(_tso5\?\)\?\.bin' drivers/net/tg3.c
-    blobname '\(ti_usb-v\(%04x\|[0-9a-f]*\)-p\(%04x\|[0-9a-f]*\)\|mts_\(cdma\|gsm\|edge\)\)\.\(bin\|fw\)' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'iw\?\(2400\|6050\)m\?-fw-\(sdio\|usb\)-\(\(["][ ]I2400M_FW_VERSION[ ]["]\|[0-9.]*\)\.sbcf\|[^". \n]*\)' 'drivers/net/wimax/i2400m/\(sdio\|usb\)\.c'
-    blob '3\.[ ]Installing[ ]the[ ]firmware[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*[\n]*[$][^\n]*i2400m-fw[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*' Documentation/wimax/README.i2400m
-    blob '6\.1\.[ ]Driver[ ]complains[^\n]*i2400m-fw[^\n]*\([\n][\n]*\([ ][ ][ ]\|i2400m_usb\)[^\n]*\)*' Documentation/wimax/README.i2400m
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    accept '\(div_table_\(clz\|inv\|ix\)\|zero_l\):\([\n][	]\.\(byte[	]-\?[0-9]*\|long[	]0x[0-9A-F]*\)\)*' arch/sh/lib/udivsi3_i4i.S
-    defsnc 'const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    accept '[	][ ][ ]every[ ]driver[ ]which[ ]uses[ ]request_firmware[(][)][ ]and[ ]ships[ ]its' drivers/base/Kconfig
-    defsnc 'static[ ]const[ ]u32[ ]filter_table\[\][ ]=' drivers/gpu/drm/i915/intel_tv.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]u32[ ]channel_tbl\[15\]\[9\][ ]=' drivers/staging/agnx/rf.c
-    defsnc 'static[ ]const[ ]u32[\n]gain_table\[\][ ]=' drivers/staging/agnx/rf.c
-    accept '<[frs]:[0-9]*x[0-9]*>[\n][01 \n]*' 'drivers/staging/asus_oled/\(linux\(_fr\?\)\?\|tux\(_r2\?\)\?\|zig\).txt'
-    defsnc 'static[ ]unsigned[ ]char[ ]\(aud\|vid\)_regs\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    defsnc 'static[ ]u16[ ]vid_regs_fp\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    blobname 's2250\(_loader\)\?\.fw' drivers/staging/go7007/s2250-loader.c
-    blobna 'me_xilinx_download' 'drivers/staging/meilhaus/.*'
-    accept 'int[ ]me_xilinx_download[(]' 'drivers/staging/meilhaus/mefirmware\.[ch]'
-    blobname 'me46[01]0\(_bosch\)\?\.bin' drivers/staging/meilhaus/me4600_device.c
-    accept '\([	]if[ ][(]me4600_device->base\.info\.pci\.device_id[ ]==[ ]PCI_DEVICE_ID_MEILHAUS_ME4610[)][ ][{][	][/][/]Jekyll[ ]<=>[ ]me4610\|#ifdef[ ]BOSCH\|#else[ ][/][/]~BOSCH\)[\n][	][	]err[ ]=[\n][	][	][ ][ ][ ][ ]me_xilinx_download[(]me4600_device' drivers/staging/meilhaus/me4600_device.c
-    blobname 'me6000\.bin' drivers/staging/meilhaus/me6000_device.c
-    accept '[	][/][*][ ]Download[ ]the[ ]xilinx[ ]firmware[ ][*][/][\n][	]err[ ]=[ ]me_xilinx_download[(]me6000_device' drivers/staging/meilhaus/me6000_device.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\([\n][\n]*const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\)*' 'drivers/staging/otus/hal/hp.*fwu.*\.c'
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    blob '\(UCHAR\|u8\)[ ]FirmwareImage\(_\(2870\|30[79]0\)\)\?[ ]\[\][ ]=[ ][{][^;]*[}][ ][;]' 'drivers/staging/rt\(28[67]\|30[79]\)0/common/firmware\(_3070\)\?\.h'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname 'rate\.bin' drivers/staging/rt2870/rtmp_init.c
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT\(28[67]\|307\)0STA[/]\)\?\(RT\(28[67]\|307\)0STA\|rt28[67]0\)\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT28[67]0STA[/]\)\?e2p\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_ate\.[hc]'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'u\(8\|16\|32\)[ ]rtl8225\(\(a\|bcd\?\)_rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\[\]=' drivers/staging/rtl8187se/r8180_rtl8225.c
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc 'static[ ]short[ ]rtl8255_agc\[\]=' drivers/staging/rtl8187se/r8180_rtl8255.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    blobname '\(\(oasis\|gb\)_rcv\|slic_\(oasis\|mojave\)\)\.bin' drivers/staging/slicoss/slicoss.c
-
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\([\n][\n]*#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\)*' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-    blob '#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\([\n][\n]*#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'instruction[ ]=[ ][^;]*\(Oasis\|GB\|Mojave\)\(Rcv\)\?UCode[^:}]*[;]' drivers/staging/slicoss/slicoss.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'numsects[ ]=[ ][OM]NumSections[;][\n][	]*for[ ][(][^;]*[;][^;]*[;][^;{]*[)][ ][{][\n][^}]*[\n][	][	][}]' drivers/staging/slicoss/slicoss.c
-
-    # post 2.6.29 patches
-    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov\(7[27]2x\|965x\(_2\)\?\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-
-    # This looks suspicious, but it pretty much just sets stuff to zero.
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-
-    # quite suspicious
-    # arch/parisc/kernel/perf_images.h
-    initc 'static[ ]uint32_t[ ]onyx_images\[\]\[PCXU_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-    initc 'static[ ]uint32_t[ ]cuda_images\[\]\[PCXW_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-
-    # These are regarded as ok
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-
-    # too lax?
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirZeros[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirOnes[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirSatTest[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirDImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_ItdDline_t[ ]A3dItdDlineZeros[ ]=[ ][{]'
-    initnc 'static[ ]auxxEqCoeffSet_t[ ]asEqCoefsNormal[ ]=[ ][{]'
-    defsnc 'static[ ]xtalk_dline_t[ ]const[ ]alXtalkDline\(Test\|Zeros\)[ ]=' sound/pci/au88x0/au88x0_xtalk.c
-    initnc 'static[ ]struct[ ]nand_ecclayout[ ]rtc_from4_nand_oobinfo[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]s16[ ]tempLUT\[\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    initnc 'static[ ]struct[ ][{][ ]int[ ]xres,[ ]yres,[ ]left,[ ]right,[ ]upper,[ ]lower,[ ]hslen,[ ]vslen,[ ]vfreq[;][ ][}][ ]timmings\[\][ ]__initdata[ ]=[ ][{]'
-    initnc 'static[ ]struct[ ]platinum_regvals[ ]platinum_reg_init_[0-9]*[ ]=[ ][{]'
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    initnc 'static[ ]u32[ ]LABELPATCHES\[\][ ]__attribute[(][(]unused[)][)][ ]='
-
-    initnc 'static[ ]dbdev_tab_t[ ]dbdev_tab\[\][ ]='
-    accept '\(EXP\|LOG\|ATAN\)TBL:'"$sepx$blobpat*"
-    initnc 'static[ ]char[ ]fm_volume_table\[128\][ ]='
-    initnc 'unsigned[ ]int[ ]snd_gf1_scale_table\[SNDRV_GF1_SCALE_TABLE_SIZE\][ ]='
-    # remaining after original deblob_2_6_24, not fully checked
-
-    oprepline '#define[ ]OV51[18]_\(Y\|UV\)QUANTABLE[ ][{]'
-    initnc '[	][	]static[ ]unsigned[ ]char[ ]const[ ]data_bit\[64\][ ]='
-    initnc '[	][	]static[ ]const[ ]u8[ ]data_sbit\[32\][ ]='
-    initnc '[	]\.RightCoefs[ ]='
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    initnc '[	]SetRate44100\[\][ ]='
-    initnc '[	]const[ ]short[ ]period\[32\][ ]='
-    defsnc '[	]\(const[ ]static\|static[ ]const\)[ ]int[ ]desc_idx_table\[\][ ]=' 'arch/arm/include/asm/hardware/iop3xx-adma.h|include/asm-arm/hardware/iop3xx-adma.h'
-    initnc '[	]int[ ]prop_bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]char[ ]logSlopeTable\[128\][ ]='
-    initnc '[	]static[ ]const[ ]int[ ]uc_\(dup\|word\)_table\[\]\[2\][ ]='
-    initnc '[	]static[ ]const[ ]struct[ ]mc7_timing_params[ ]mc7_timings\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs170\[7[ ][*][ ]8\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs3[13]a\[8[ ][*][ ]4\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]dramsr13\[12[ ][*][ ]5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]sdramtype\[13\]\[5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    initnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]short[ ]ac97_defaults\[\][ ]='
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]='
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    initnc '[	]static[ ]u32[ ]logMagTable\[128\][ ]='
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable1\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable2\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]default_colors\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]log_scale\[101\][ ]=' sound/oss/pss.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]msg\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    initnc '[	]uint8_t[ ]tx\[\][ ]='
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc '[	]unsigned[ ]char[ ]sas_pcd_m_pg\[\][ ]='
-    initnc '[	][}][ ]modedb\[5\][ ]='
-    defsnc '[	][}][ ]reg_tbl\[\][ ]=' drivers/net/bnx2.c
-    initnc '[	][}][ ]vals\[\][ ]='
-    initnc '[	][}][ ]vm_devices\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]distfix\[32\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]lenfix\[512\][ ]='
-    defsnc '[ ][ ]int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    initnc '[ ][ ][}][ ]cards_ds\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]unsigned[ ]short[ ]d\(base\|ext\)\[32\][ ]='
-    initnc '#define[ ]OV511_QUANTABLESIZE[	]64'
-    initnc 'BYTE[ ]BtCard::SRAMTable_\(NTSC\|PAL\)\[\][ ]='
-    initnc 'BYTE[ ]SRAMTable\[\]\[[ ]60[ ]\][ ]='
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" 'arch/arm/inlcude/asm/hardware/entry-macro-iomd.S|include/asm-arm/hardware/entry-macro-iomd.S'
-    initc '__u8[ ]_ascebc\[256\][ ]='
-    initc '__u8[ ]_ebc_tolower\[256\][ ]='
-    initc '__u8[ ]_ebc_toupper\[256\][ ]='
-    initnc 'adapter_tag_info_t[ ]aic7[9x]xx_tag_info\[\][ ]='
-    initnc 'char[ ]dmasound_alaw2dma8\[\][ ]='
-    initnc 'char[ ]dmasound_ulaw2dma8\[\][ ]='
-    initnc 'const[ ]struct[ ]aper_size_info_16[ ]agp3_generic_sizes\[AGP_GENERIC_SIZES_ENTRIES\][ ]='
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]byte_rev_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]crc7_syndrome_table\[256\][ ]='
-    initnc 'int[ ]snd_sf_vol_table\[128\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siubit\[\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siureg\[\][ ]='
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    initnc 'static[ ]__const__[ ]__u16[ ]gx_coeff\[256\][ ]='
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    initnc 'static[ ]char[ ]coefficients\[NM_TOTAL_COEFF_COUNT[ ][*][ ]4\][ ]='
-    initnc 'static[ ]char[ ]ecc_syndrome_table\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_alaw_to_ulaw\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_ulaw_to_alaw\[\][ ]='
-    initnc 'static[ ]char[ ]mix_cvt\[101\][ ]='
-    initnc 'static[ ]char[ ]opl3_volume_table\[128\][ ]='
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]='
-    initnc 'static[ ]const[ ]__u32[ ]crc_c\[256\][ ]='
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    initnc 'static[ ]const[ ]int[ ]init_seq\[\][ ]='
-    initnc 'static[ ]const[ ]int[ ]mobile_vid_table\[32\][ ]='
-    initnc 'static[ ]const[ ]s16[ ]snd_opl4_pitch_map\[0x600\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]budtab\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]aper_size_info_8[ ]via_generic_sizes\[9\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]color[ ]clut_vga16\[16\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]mobilevrm_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]vrm85_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]struct[ ]menelaus_vtg_value[ ]vcore_values\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]opl4_region[ ]regions_[0-9a-frums]*\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]regval[ ]regval_table\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    initnc 'static[ ]const[ ]u32[ ]SS[0-3]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]S[1-8]\[64\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]T[0-5]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    initnc 'static[ ]const[ ]u32[ ]bass_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    initnc 'static[ ]const[ ]u32[ ]db_table\[101\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]m8xx_size_to_gray\[M8XX_SIZES_NO\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]mds\[4\]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]pc2\[1024\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    initnc 'static[ ]const[ ]u32[ ]tfrc_calc_x_lookup\[TFRC_CALC_X_ARRSIZE\]\[2\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]treble_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u64[ ][CT][0-7]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sbox[1-4]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    initnc 'static[ ]const[ ]u8[ ]aes_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]calc_sb_tbl\[512\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]exp_to_poly\[492\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]legal_ansi_char_array\[0x40\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]parity\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]pc1\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]poly_to_exp\[255\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]q[01]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u8[ ]rs\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225_\(agc\|tx_\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siubit\[\][ ]='
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siureg\[\][ ]='
-    initnc 'static[ ]const[ ]uint8_t[ ]parity\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]\(UV\|Y\)_QUANTABLE\[64\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_mobilevrm\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]barco_p1\[2\]\[9\]\[7\]\[3\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]blue\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]chktab[hl]\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]comet_miireg2offset\[32\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]euc2sjisibm_g3upper_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]green\[256\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=' drivers/hid/hid-input.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]mts_direction\[256[/]8\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]red\[256\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]sjisibm2euc_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]vol_cvt_datt\[128\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]crctab32\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]crc_flex_table\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]wd7000_iobase\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    initnc 'static[ ]const[ ]unsigned[ ]table\[\][ ]='
-    initnc 'static[ ]int[ ]MV300_reg_8bit\[256\][ ]\?=' drivers/video/atafb.c
-    defsnc 'static[ ]int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    initnc 'static[ ]int[ ]initial_lfsr\[\][ ]='
-    initnc 'static[ ]int[ ]log_tbl\[129\][ ]='
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]register_size\[\][ ]='
-    initnc 'static[ ]int[ ]reserve_list\[MAX_RES_ARGS\][ ]='
-    initnc 'static[ ]int[ ]reverse6\[64\][ ]='
-    initnc 'static[ ]short[ ]attack_time_tbl\[128\][ ]='
-    defsnc 'static[ ]short[ ]beep_wform\[256\][ ]=' 'sound/ppc/beep.c|sound/oss/dmasound/dmasound_awacs.c|arch/ppc/8xx_io/cs4218_tdm.c'
-    initnc 'static[ ]short[ ]decay_time_tbl\[128\][ ]='
-    initnc 'static[ ]short[ ]isdn_audio_[ua]law_to_s16\[\][ ]='
-    defsnc 'static[ ]struct[ ]iw\?l\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IW\?L_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    initnc 'static[ ]struct[ ]ovcamchip_regvals[ ]regvals_init_\(76be\|7[16]20\|7x10\)\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    initnc 'static[ ]struct[ ]s_c2[ ]SetRate48000\[\][ ]='
-    initnc 'static[ ]struct[ ]tea6420_multiplex[ ]TEA6420_line\[MXB_AUDIOS[+]1\]\[2\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_133\[\][ ]='
-    initnc 'static[ ]struct[ ][{][ ]struct[ ]fb_bitfield[ ]red,[ ]green,[ ]blue,[ ]transp[;][ ]int[ ]bits_per_pixel[;][ ][}][ ]colors\[\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsPipes\[64\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsZeros\[50\][ ]='
-    initnc 'static[ ]u16[ ]asEqOutStateZeros\[48\][ ]='
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    initnc 'static[ ]u16[ ]eq_levels\[64\][ ]='
-    initnc 'static[ ]u32[ ][ ]crc32tab\[\][ ]__attribute__[ ][(][(]aligned[(]8[)][)][)][ ]='
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]u32[ ]adwDecim8\[33\][ ]='
-    initnc 'static[ ]u32[ ]h_prescale\[64\][ ]='
-    initnc 'static[ ]u32[ ]v_gain\[64\][ ]='
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]bnx2_570[68]_stats_len_arr\[BNX2_NUM_STATS\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]u8[ ]flit_desc_map\[\][ ]='
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]u8[ ]mac_reader\[\][ ]=' drivers/net/wireless/atmel.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/dvb/frontends/mt2131.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/dvb/frontends/mt2266.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc 'static[ ]u_long[ ]ident_map\[32\][ ]='
-    initnc 'static[ ]u_short[ ]alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]altgr_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]u_short[ ]shift_ctrl_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]shift_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]uchar[ ]perm1\[56\][ ]='
-    initnc 'static[ ]uchar[ ]perm2\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm3\[64\][ ]='
-    initnc 'static[ ]uchar[ ]perm4\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm5\[32\][ ]='
-    initnc 'static[ ]uchar[ ]perm6\[64\][ ]='
-    initnc 'static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]='
-    initnc 'static[ ]uint16_t[ ]crc_table\[256\][ ]='
-    initnc 'static[ ]uint8_t[ ]lpfcAlpaArray\[\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?uint8_t[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OffMatrix_9600\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OnMatrix_9600\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set3_keycode\[512\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_unxlate_table\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/superh/microdev/led.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8260\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8280\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]caseorder\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]crystal_key\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]dsp_ulaw\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]expressiontab\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    initnc 'static[ ]unsigned[ ]char[ ]hidp_keycode\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]nkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]pan_volumes\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]parm_block\[32\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]raw3270_ebcgraf\[64\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rfcomm_crc_table\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rwa_unlock\[\][ ]__initdata[ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]snd_opl4_volume_table\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]sunkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_8fpb\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_other\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ulaw_dsp\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    initnc 'static[ ]unsigned[ ]char[ ]voltab[12]\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]vpd89_data\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]xtkbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]bass_volume_table\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]isa_dma_port\[8\]\[7\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]master_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]mixer_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]pan_table\[63\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_bass_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]valid_mem\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]arthur_to_linux_signals\[32\][ ]='
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]unsigned[ ]nv\([34]\|10\)TableP\(FIFO\|GRAPH\|RAMIN\)\[\]\[2\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]fcstab\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ][/][*]__devinitdata[*][/][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]log_table\[LOG_TABLE_SIZE[*]2\][ ]='
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    initnc 'static[ ]unsigned[ ]short[ ]treble_parm\[12\]\[9\][ ]='
-    initnc 'struct[ ]RGBColors[ ]TextCLUT\[256\][ ]='
-    initnc 'struct[ ]VgaRegs[ ]GenVgaTextRegs\[NREGS[+]1\][ ]='
-    defsnc 'struct[ ]battery_thresh[ ][ ]*\(spitz\|sharpsl\)_battery_levels_\(noac\|acin\)\[\][ ]=' arch/arm/mach-pxa/sharpsl_pm.c
-    initnc 'struct[ ]fb_bitfield[ ]rgb_bitfields\[\]\[4\][ ]='
-    initnc 'struct[ ]mode_registers[ ]std_modes\[\][ ]='
-    initnc 'struct[ ]vmode_attr[ ]vmode_attrs\[VMODE_MAX\][ ]='
-    initnc 'u16[ ]const[ ]crc16_table\[256\][ ]='
-    initnc 'u16[ ]const[ ]crc_ccitt_table\[256\][ ]='
-    initnc 'u16[ ]hfsplus_compose_table\[\][ ]='
-    initnc 'u16[ ]hfsplus_decompose_table\[\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '[}][ ]euc2sjisibm_jisx0212_map\[\][ ]='
-    initnc '[}][ ]freq\[\][ ]='
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]maven_gamma\[\][ ]='
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]sil_port\[\][ ]='
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-
-    # new in 2.6.30
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]sync\[\][ ]=' Documentation/networking/timestamping/timestamping.c
-    blob 'The[ ]driver[ ]requires[ ]firmware[ ]files[ ]["]turtlebeach\([^\n]*[^\n.][\n]\)*directory.' Documentation/sound/alsa/ALSA-Configuration.txt
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    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-\(\(db-\)\?FPGA\|Firmware\)\.bin' drivers/atm/solos-pci.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\)\[\][ ]\(__devinitconst[ ]\)\?=' drivers/i2c/busses/i2c-mpc.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nand_oob_128[ ]=' drivers/mtd/nand/nand_base.c
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    accept 'static[ ]void[\n]load_rv2p_fw[(][^{)]*const[ ]struct[ ]bnx2_mips_fw_file_entry' drivers/net/bnx2.c
-    accept 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{][\n][	]const[ ]struct[ ]bnx2_mips_fw_file'
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blobname 'myricom[/]lanai\.bin' drivers/net/myri_sbus.c
-    blobname '3com[/]3C359\.bin' drivers/net/tokenring/3c359.c
-    blobname '3com[/]typhoon\.bin' drivers/net/typhoon.c
-    defsnc 'static[ ]struct[ ]ar9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]struct[ ]ar9170_rf_init[ ]ar9170_rf_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]ar9170_phy_freq_entry[ ]ar9170_phy_freq_params\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'sxg[/]sahara\(dbg\)\?downloadB\.sys' drivers/staging/sxg/sxg.c
-    blobname 'qlogic[/]isp1000\.bin' drivers/scsi/qlogicpti.c
-    blobname 'advansys[/]\(3550\|38C\(08\|16\)00\|mcode\)\.bin' drivers/scsi/advansys.c
-    blobname 'qlogic[/]\(1040\|1280\|12160\)\.bin' drivers/scsi/qla1280.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]rf\([52]413\|2425\)_ini_common_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-1000-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-60[05]0-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]gspi\(%d\|[0-9]\+\)\(_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c
-    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\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname 'usbdux\(fast\)\?_firmware\.\(hex\|bin\)' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c'
-    blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
-    defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
-    accept '[	][	]stlc45xx_error[(]["]request_firmware[(][)][ ]failed' drivers/staging/stlc45xx/stlc45xx.c
-    blob 'static[ ]struct[ ]phy_ucode[	]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode-1.2.h
-    accept 'device[ ]drivers[ ]which[ ]predate[ ]the[ ]common[ ]use[ ]of[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    accept 'As[ ]we[ ]update[ ]those[ ]drivers[ ]to[ ]use[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*\(infradead\.org\|decadent\.org\.uk\)>' firmware/README.AddingFirmware
-    blobna 'linux-firmware\.git' firmware/README.AddingFirmware
-    blobname '\(ea[/]\)\?\(loader\|indigo_djx\)_dsp\.fw' sound/pci/echoaudio/indigodjx.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_iox\)_dsp\.fw' sound/pci/echoaudio/indigoiox.c
-    # blobname 'cis[/]LA-PCM\.cis' drivers/net/pcmcia/pcnet_cs.c
-    blobname 'ositech[/]Xilinx7OD\.bin' drivers/net/pcmcia/smc91c92_cs.c
-    blobname 'tehuti[/]\(firmware\|bdx\)\.bin' drivers/net/tehuti.c
-    accept '[ 	]*["]b43-open%s[/]%s\.fw["]' drivers/net/wireless/b43/main.c
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-
-    # New in 2.6.31
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    defsnc '\([	]static[ ]const[ ]u8[ ]snum_init\[\][ ]=[ ][{]\|static[ ]void[ ]qe_snums_init[(]void[)]\)[\n][	][	]0x04,[ ]0x05,' arch/powerpc/sysdev/qe_lib/qe.c
-    accept '[.]LgoS4:[\n][	][.]word[	][.]LmtoS4-\.LgoS4\([\n][	]\.\(long\|word\|byte\)[	][01]\(,0\)*\)*' arch/s390/kernel/sclp.S
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    accept '[ ][*][ ]*1[ ]1\([ ]0\)*[ ]1\([ ]0\)*' arch/x86/lguest/boot.c
-    defsnc 'struct[ ]scrubrate[ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]unsigned[ ]r\([35]\|s6\)00_reg_safe_bm\[[0-9]*\][ ]=' 'drivers/gpu/drm/radeon/r\(300\|v515\|s600\)\.c'
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    blobname 'dvb-cx18-mpc718-mt352\.fw' drivers/media/video/cx18/cx18-dvb.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]onenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' 'drivers/net/wireless/\(prism54/islpci_dev\.c\|rt2x00/rt2800usb\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    blobname 'iwmc3200wifi-\([ul]mac\|calib\)-sdio\.bin' drivers/net/wireless/iwmc3200wifi/sdio.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)ArrayDTM\[\(Boot\|Main\|Data\)ArrayLengthDTM\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192su/r8192S_FwImgDTM.h
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8192PciE\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\(DTM\)\?\[\(\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?Length\(DTM\)\?\)\?\][ ]=' drivers/staging/rtl8192su/rtl8192S_FwImgDTM.h
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    blobname 'RTL8192U[/]\(boot\|main\|data\)\.img' 'drivers/staging/rtl8192s\?u/r819xU_firmware\.c'
-    blob 'u8[ ]rtl8190_fw\(boot\|main\|data\)_array\[\][ ]=[ ]\?[{][^}]*[}][;]' 'drivers/staging/rtl8192s\?u/r8192xU_firmware_img\.c'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'BYTE[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc '\(BYTE\|unsigned[ ]char\)[ ]byVT3253\(InitTab\|B0\(_AGC4\?\)\?\)_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\[CB_VT3253\(B0\(_AGC4\?\)\?\)\?\(\(_INIT\)\?_FOR_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\)\?\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'SCountryTable[ ]ChannelRuleTab\[CCODE_MAX[+]1\][ ]=' drivers/staging/vt6655/card.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    defsnc 'static[ ]const[ ]\(DWORD\|unsigned[ ]long\)[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6655/tcrc.c
-    defsnc 'const[ ]\(BYTE\|unsigned[ ]char\)[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6655/tkip.c
-    blobname 'prism2_ru\.\(hex\|fw\)' drivers/staging/wlan-ng/prism2fw.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    blob '#include[ ]["]me4\(00\|61\)0_firmware\.h["]\([\n][\n]*#include[ ]["]me4\(00\|61\)0_firmware\.h["]\)*' drivers/staging/me4000/me4000.c
-    blobna 'firm[ ]=[ ][^;]*xilinx_firm[^;]*[;]' drivers/staging/me4000/me4000.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\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|%s\)_\(pfp\|rlc\|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
-
-    # New in or modified for 2.6.32
-    blobname '\(cxgb3[/]\)\?ael20\(05_\(opt\|twx\)\|20_twx\)_edc\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc 'static[ ]const[ ]struct[ ]aper_size_info_32[ ]u3_sizes\[8\?\][ ]=' drivers/char/agp/uninorth-agp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[\(512\|ATKBD_KEYMAP_SIZE\)\][ ]=' drivers/input/keyboard/atkbd.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    accept '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_1\[\][ ]=[ ][{][^;]*0x8300[^;]*[}][;]' drivers/net/r8169.c
-    blob 'static[ ]void[ ]rtl8168d_[12]_hw_phy_config[(]void[ ]__iomem[ ][*]ioaddr[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/r8169.c
-    blobna 'rtl8168d_[12]_hw_phy_config[(]ioaddr[)][;]' drivers/net/r8169.c
-    blobna 'static[ ]\(const[ ]\)\?struct[ ]phy_reg_init_[12]\[\][ ]=[ ][{][\n 	{}0-9a-fx]*0x06,[ ]0xf8f9[\n 	{}0-9a-fx]*[}][;]' drivers/net/r8169.c
-    # This loads firmware to be flashed from filename provided through ethtool.
-    accept 'int[ ]be_load_fw[(]struct[ ]be_adapter[ ][^\n;{]*[)][ \n][{]\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/net/benet/be_main.c
-    defsnc '[	]u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9287\(Common\|Modes\(_\([tr]x_gain\)\)\?\)_9287_1_[01]\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271\(_1_0\)\?\[\]\[[26]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u8[ ]lpphy_min_sig_sq_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u16[ ]lpphy_\(rev\(01\|2plus\)_noise_scale\|crs_gain_nft\|iqlo_cal\|rev[01]_ofdm_cck_gain\|\(a0_\)\?gain\|sw_control\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u32[ ]lpphy_\(\(rev01_ps\|tx_power\)_control\|\(a0_\)\?gain_\(idx\|value\)\|papd_\(eps\|mult\)\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    blobname 'v4l-saa7164-1\.0\.[23]\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]long[ ]limiter_times\[\][ ]=' drivers/media/radio/si4713-i2c.c
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    defsnc '[}][ ]csc_table\[\][ ]=' drivers/video/msm/mdp_csc_table.h
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    accept '[	]isar->firmware[ ]=[ ][&]load_firmware[;]' drivers/isdn/hardware/mISDN/mISDNisar.c
-    blobname 'isdn[/]ISAR\.BIN' drivers/isdn/hardware/mISDN/speedfax.c
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'RTL8192E[/]\(boot\|main\|data\)\.img' drivers/staging/rtl8192e/r819xE_firmware.c
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    accept '[ ][*][ ]File:[ ]main_usb\.c\([\n][ ][*]\([^\n/]*\|[^*\n/][/]*\)*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob 'const[ ]BYTE[ ]abyFirmware\[\][ ]=[ ][{][^;]*[}][;]' drivers/staging/vt6656/firmware.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(static[ ]\)\?struct[ ]register_address_value_pair[\n]\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    blobname '\([/]tmp[/]\)\?RT30xxEEPROM\.bin' 'drivers/staging/rt3090/\(common/ee_efuse\.c\|rtmp_def\.h\)'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\([\n][\n]*#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\)' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'FIRMWAREIMAGE_LENGTH[ ]==' drivers/staging/rt3090/common/rtmp_mcu.c
-    defsnc 'int[ ]wm831x_isinkv_values\[WM831X_ISINK_MAX_ISEL[ ][+][ ][1]\][ ]=' drivers/mfd/wm831x-core.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]__initconst[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8974_reg\[WM8974_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8974.c
-    defsnc 'static[ ]const[ ]u\(8\|16\)[ ]ak464[28]_reg\[\(AK4642_CACHEREGNUM\)\?\][ ]=' sound/soc/codecs/ak4642.c
-    accept 'int[ ]snd_hda_load_patch[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*hda_codec[^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' sound/pci/hda/hda_hwdep.c
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    blob 'SD8688[ ]firmware:[\n]*\([/]lib[/]firmware[^\n]*[\n]*\)*The[ ]images[^:]*:[\n]*[^\n]*[/]linux-firmware[^\n]*' Documentation/btmrvl.txt
-    defsnc 'static[ ]u8[ ]ibm405ex_fbdv_multi_bits\[\][ ]=' arch/powerpc/boot/4xx.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]struct[ ]ad714x_platf\(or\|ro\)m_data[ ]ad714[27]_\(\(spi\|i2c\)_\)\?platf\(or\|ro\)m_data[ ]=' arch/blackfin/mach-bf537/boards/stamp.c
-    blob 'static[ ]const[ ]u8[ ]lgs8g75_initdat\[\][ ]=[ ][{][^;]*[}][;]' drivers/media/dvb/frontends/lgs8gxx.c
-    blob 'static[ ]int[ ]lgs8g75_init_data[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*lgs8g75_initdat[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/media/dvb/frontends/lgs8gxx.c
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    accept '[<][<]\([/]Subtype[/]Type1\)\?[/]BaseFont[^ ]*[/]FontDescriptor[ ][0-9][0-9]*[ ]0[ ]R\([/]Type[/]Font\)\?[\n]\?[/]FirstChar[ ][0-9][0-9]*[/]LastChar[ ][0-9][0-9]*[/]Widths\[[\n][0-9 \n]*\]' 'Documentation/DocBook/v4l/.*\.pdf'
-
-    # New in 2.6.33
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blob '#define[ ]FW_VERSION\([ 	]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ 	]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3\(02\)\?x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u16[ ]bios_to_linux_keycode\[256\][ ]\(__initconst[ ]\)\?=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blob 'The[ ]ssinit[ ]program.*nsoniq.*sndscape.*sound[ ]weird\.' Documentation/sound/oss/README.OSS
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname '\(sndscape\|soundscape\)\.co\([?dx01234]\|%d\)' 'sound/isa/\(Kconfig\|sscape\.c\)\|Documentation/sound/oss/README\.OSS'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    blobname 'nouveau[/]nv\([0-9a-f][0-9a-f]\|%02x\)\.ctx\(prog\|vals\)' 'drivers/gpu/drm/nouveau/\(nv50_graph\|nouveau_grctx\)\.c'
-
-    # New in 2.6.34
-    blobname 'mts_mt9234\(mu\|zba\)\.fw' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '\(#[ ]\)\?\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl8192sfw\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-
-    # New in 2.6.35
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/char/n_gsm.c
-    defsnc 'static[ ]u8[ ]\(reset_atetm\|atetm_[12]port\|portsel_\(port[12]\|2port\)\)\[BIT2BYTE[(]LEN_\(ETM\|PORT_SEL\)[)]\][ ]=' drivers/infiniband/hw/qib/qib_iba7322.c
-    blobname 'qlogic[/]sd7220[.]fw' drivers/infiniband/hw/qib/qib_sd7220.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    blobname 'orinoco_ezusb_fw' drivers/net/wireless/orinoco/orinoco_usb.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]BUCK[123]_\(suspend_\)\?table\[\][ ]=' drivers/regulator/88pm8607.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]XGI\(fb_vrate\|_TV_filter\)\[\][ ]=' drivers/staging/xgifb/XGI_main.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330\(New\)\?_SR15\(_1\)\?\[8\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_cr40_1\[15\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_TVDataStruct[ ][ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525[ip]\|750p\)\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(750p\|525[ip]\)\)Timing\[\][ ][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_HiTVGroup3\(Data\|Simu\|Text\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_Ren\(525\|750\)pGroup3\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_PanelDelayTblStruct[ ]XGI330_PanelDelayTbl\[\]' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_LVDSCRT1DataStruct[ ][ ]XGI_CHTVCRT1[UO]\(NTSC\|PAL\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    # qseed_table2 is kind of suspicious, but there's some regularity
-    # to it that makes me think it's just data.
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    blobname 'xc3028L\?-v[0-9]\+\.fw' drivers/staging/tm6000/tm6000-cards.c
-    defsnc 'static[ ]const[ ]struct[ ]chs_entry[ ]chs_table\[\][ ]=' drivers/mtd/sm_ftl.c
-    blobname 'asihpi[/]dsp\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.bin' sound/pci/asihpi/hpidspcd.c
-    defsnc 'static[ ]unsigned[ ]long[ ]ident_map\[32\][ ]=' kernel/exec_domain.c
-    defsnc 'static[ ]uint[ ]patch_2000\[\][ ]__initdata[ ]=' arch/powerpc/sysdev/micropatch
-    # Are these ucode patches really data?!?  They were taken as such
-    # since gNewSense started cleaning up Linux, but they look awfully
-    # suspicious to me.
-    defsnc '\(static[ ]\)\?uint[ ]patch_2[0ef]00\[\][ ]\(__initdata[ ]\)\?=' arch/powerpc/sysdev/micropatch.c
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[4\][ ]=' arch/arm/mach-s5pc100/clock.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*[(]f2255usb\.bin[)][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/s2255drv.c
-
-    # New in 2.6.36:
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-
-    # New in 2.6.37, up to -rc5.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)\?-0[-0-9]*\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/README'
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/README'
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/wl_iw\.c'
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/phy/wlc_phy_cmn\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array[^\n]*\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|[mc][ec]\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\?\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-
-    # New in 2.6.39
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    blobname 'vntwusb\.fw' drivers/staging/vt6656/firmware.c
-    # New in 3.0.
-    accept 'resume[/]restore[,][ ]but[ ]they[ ]cannot[ ]do[ ]it[ ]by[ ]calling[ ]request_firmware[(][)]' Documentation/power/notifiers.txt
-    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	][	][	][	]0xe[0-7][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/p1022ds.dts
-    accept '[ ][ ][ ][ ]gzip[ ]-n[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]struct[ ]nvc0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.h
-    defsnc 'static[ ]const[ ]u8[ ]sht15_crc8_table\[\][ ]=' drivers/hwmon/sht15.c
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    blobname 'drxd-a2-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blobname 'drxd-b1-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blob '[/][*][	]if[ ][(]\(reject\|request\)_firmware[(][&]state->fw[,][ ]["]drxd\.fw["][,][ ]state->dev[)]<0[)][ ][*][/]'
-    blobname 'drxd\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    blobna 'www\.elandigitalsys[^\n]*download' drivers/mmc/host/Kconfig
-    blobname 'vub_\(default\.bin\|%04X%04X\)' drivers/mmc/host/vub300.c
-    blobna 'snprintf[(]vub300->vub_name[ ][+][^\n]*[,][ ]["]\.bin["][)][;]' drivers/mmc/host/vub300.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flexonenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(low\(est\)\?\|high\|mixed\)_ob_db\|high_power\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(radio\|baseband\|mac\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]u16[ ]mwifiex_data_rates\[MWIFIEX_SUPPORTED_RATES_EXT\][ ]=' drivers/net/wireless/mwifiex/cfp.c
-    accept '[	]\.helper[	][	]=[ ]NULL[,][\n][	]*\.firmware' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8787_uapsta\(_w1\)\?\.bin' drivers/net/wireless/mwifiex/main.h
-    blobname 'sd8787\.bin' drivers/net/wireless/mwifiex/sdio.c
-    blobna 'Copy[ ]sd8787\.bin[ ]to[^.]*[.]' drivers/net/wireless/mwifiex/README
-    blobname 'rtlwifi[/]rtl8192sefw\.bin' drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-    defsnc 'u32[ ]rtl8192sephy_reg_2t2rarray\[PHY_REG_2T2RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_changeto_1t[12]rarray\[PHY_CHANGETO_1T[12]RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_reg_array_pg\[PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seradioa_1t_array\[RADIOA_1T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192semac_2t_array\[MAC_2T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seagctab_array\[AGCTAB_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    accept 'Place[ ]isci_firmware\.bin[ ]in' drivers/scsi/isci/firmware/README
-    # This is not a code blob, it is just small data structures described in create_fw.[ch].
-    accept 'static[ ]const[ ]char[ ]blob_name\[\][ ]=[ ]["]isci_firmware\.bin["]' drivers/scsi/isci/create_fw.h
-    accept '[	][	]orom[ ]=[ ]isci_request_firmware' drivers/scsi/isci/init.c
-    accept 'MODULE_FIRMWARE[(]ISCI_FW_NAME[)][;]' drivers/scsi/isci/init.c
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    accept '[	]if[ ][(]request_firmware[(][&]fw[,][ ]ISCI_FW_NAME[,]' drivers/scsi/isci/probe_roms.c
-    accept '#define[ ]ISCI_FW_NAME[	][	]["]isci[/]isci_firmware\.bin["]' drivers/scsi/isci/probe_roms.h
-    defsnc 'static[ ]struct[ ]pll_limit[ ]\(cle266\|k800\|cx700\|vx855\)_pll_limits\[\][ ]=' drivers/video/via/hw.c
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    blobname 'wm8958_\(enh_eq\|mbc\(_vss\)\?\)\.wfw' sound/soc/codecs/wm8958-dsp2.c
-    blobname 'rtl_nic[/]rtl8168e-[12]\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e\[\][ ]=' drivers/net/r8169.c
-    blobname 'ti-connectivity[/]wl128x-fw\(-ap\)\?\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    defsnc 'static[ ]const[ ]u8[ ]tg3_tso_header\[\][ ]=' drivers/net/tg3.c
-    blobname 'ath6k[/]AR6003[/]hw2\.1\.1[/]\(otp\|athwlan\|athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    accept '[	]nvc0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*nvc0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    blobname 'nouveau[/]\(nv%02x_\)\?%s' 'drivers/gpu/drm/nouveau/nv[ce]0_graph\.c'
-    blobname 'radeon[/]SUMO2\?_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
-    blobname 'iwlwifi-\(105\|20[03]\?0\)-' drivers/net/iwlwifi/iwl-2000.c
-    blobname '__stringify[(]api[)][ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[1256]000\)\.c\)'
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    # New in 3.2
-    blobname 'ath6k[/]AR600[0-9.]*[/]hw[0-9.]*[/][^/"]*\.\(bin\|z77\)' drivers/net/wireless/ath/ath6kl/core.h
-    accept 'userspace[,][ ]using[ ]the[ ]request_firmware[(][)][ ]function' Documentation/power/suspend-and-cpuhotplug.txt
-    defsnc 'static[ ]struct[ ]sh_keysc_info[ ]keysc_platdata[ ]=[ ]' arch/arm/mach-shmobile/board-kota2.c
-    defsnc 'static[ ]const[ ]u32[ ]rir_offset\[MAX_RIR_RANGES\]\[MAX_RIR_WAY\][ ]=' drivers/edac/sb_edac.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]s32[ ]wmi_rate_tbl\[\]\[2\][ ]=' drivers/net/wireless/ath/ath6kl/wmi.c
-    defsnc '[	]struct[ ]lcn_tx_iir_filter[ ]tx_iir_filters_\(cck\|ofdm\)\[\][ ]=' drivers/net/wireless/b43/phy_lcn.c
-    defsnc 'const[ ]u32[ ]b43_httab_0x1a_0xc0_late\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_lcntab_0x[01][0-9a-f]\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc '[	]b43_lcntab_tx_gain_tbl_2ghz_ext_pa_rev0\[B43_LCNTAB_TX_GAIN_SIZE\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]struct[ ]channel_list[ ]ChannelPlan\[\][ ]=' drivers/staging/rtl8192e/dot11d.c
-    defsnc 'u32[ ]Rtl8192PciE\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)Array\[\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)ArrayLengthPciE\][ ]=' drivers/staging/rtl8192e/r8192E_hwimg.c
-    defsnc 'static[ ]u8[ 	]CCKSwingTable_\(Ch1_Ch13\|Ch14\)\[CCK_Table_length\]\[8\][ ]=' drivers/staging/rtl8192e/rtl_dm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(power\|emif[01]\)_pins\[\][ ]=' drivers/pinctrl/pinmux-u300.c
-    defsnc 'static[ ]const[ ]struct[ ]pll_div[ ]codec_\(master\|slave\)_pll_div\[\][ ]=' sound/soc/codecs/rt5631.c
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]\.download_firmware[ ]=[ ]it913x_download_firmware[,][\n][	]\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-it9137-01\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    blobname '%s[/]bdata\.%s\.bin' drivers/net/wireless/ath/ath6kl/init.c
-    blobna 'Used[ ][(]for[ ]now[)][^*]*\([*]\+[^/*][^*]*\)*[*]*["]bdata\.bin["][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/ath/ath6kl/init.c
-    blobname 'mrvl[/]pcie8766_uapsta\.bin' 'drivers/net/wireless/mwifiex/pcie\.[ch]'
-    blobname 'usbduxsigma_firmware\.bin' drivers/staging/comedi/drivers/usbduxsigma.c
-    blobname 'as102_data[12]_[sd]t\.hex' drivers/staging/media/as102/as102_fw.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)Array\[\(Boot\|Main\|Data\)ArrayLengthPciE\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192e/r8192E_hwimg.c
-    blobna '\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\)*' drivers/staging/rtl8192e/r8192E_firmware.c
-    blobname 'imx[/]sdma[/]sdma-imx5[13]\.bin' 'arch/arm/boot/dts/imx5[13]-\(babbage\|ard\|evk\|qsb\|smd\)\.dts'
-    blobname 'libertas[/]usb8388_olpc\.bin' drivers/net/wireless/libertas/if_usb.c
-    blobname 'rtlwifi[/]rtl8192cfwU\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-3\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'pcxhr[/]%s' sound/pci/pcxhr/pcxhr_hwdep.c
-    blobname 'mrvl[/]sd8797_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    blobname 's5p-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'rtl_nic[/]rtl8168f-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-
-    blobna '[/][*][\n][ ][*][ ]AMD[ ]microcode[ ]firmware[ ]naming[ ]convention[^*]*\([*]\+[^/*][^*]*\)*[*]*amd-ucode[/][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' arch/x86/kernel/microcode_amd.c
-    blobname 'amd-ucode[/]microcode_amd_fam\(%\.2x\|[0-9a-f]*\)h\.bin' arch/x86/kernel/microcode_amd.c
-
-    # New in 3.3.
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl2g_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_\(workaround\[2\]\[4\]\|wa_phy6_radio11_ghz2\)[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]da9052_chg_current_lim\[2\]\[DA9052_CHG_LIM_COLS\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]u32[ ]const[ ]vc_tbl\[3\]\[68\]\[2\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]const[ ]int[ ]PIO2_CHANNEL_BANK\[32\][ ]=' drivers/staging/vme/devices/vme_pio2.h
-    defsnc 'static[ ]const[ ]struct[ ]sirfsoc_baudrate_to_regv[ ]baudrate_to_regv\[\][ ]=' drivers/tty/serial/sirfsoc_uart.c
-    defsnc 'static[ ]const[ ]struct[ ]dispc_coef[ ]coef[35]_M\(1[123469]\|2[26]\|32\)\[8\][ ]=' drivers/video/omap2/dss/dispc_coefs.c
-    defsnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]=' lib/clz_tab.c
-    defsnc 'static[ ]struct[ ]cs42l73_mclk_div[ ]cs42l73_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs42l73.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
-    defsnc 'static[ ]int[ ]_process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' sound/soc/codecs/sigmadsp.c
-    defsnc 'int[ ]process_sigma_firmware\(_regmap\)\?[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*_process_sigma_firmware' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware_regmap[)]' sound/soc/codecs/sigmadsp.c
-    accept 'extern[ ]int[ ]process_sigma_firmware_regmap[(][^)]*[)][;]' sound/soc/codecs/sigmadsp.h
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
-    # These appear to be identifiers within the device itself,
-    # used to get information from it.
-    accept '#define[ ]LANCER_\(FW_DUMP\|VPD_[PV]F\)_FILE[	]*["][/]\(dbg[/]dump\.bin\|vpd[/]ntr_[pv]f\.vpd\)["]' drivers/net/ethernet/emulex/benet/be_cmds.h
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-it9135-0[12]\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-hauppauge-hvr930c-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'brcm[/]brcmfmac\.\(bin\|txt\)' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-
-    # New in 3.4
-    blobname 'dvb-fe-xc5000-1\.6\.114\.fw' drivers/media/common/tuners/xc5000.c
-    blobname 'dvb-fe-xc5000c-41\.024\.5\.fw' drivers/media/common/tuners/xc5000.c
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.\(SD3[12]\|WB31\|CUSTOM\|DB132\)\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.39
-    accept '[#]define[ ]FIRMWARE_AR7010[ 	]*["]ar7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]ar7010_1_1\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]ar9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.35
-    accept '[	]ATH9K_FW_USB_DEV[(]0x\(9271\|1006\)[,][ ]["]ar9271\.fw["][)][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]dev_info[(][&]hif_dev->udev->dev[,][ ]["]ath9k_htc:[^\n"]*["][,][\n][	 ]*["]ar9271\.fw["][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]fw_name[,][ ][&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-
-    # New in 3.10
-    accept '[ \t]*edid[ ]=[ ]\[00[ ]FF[ 0-9A-F\n\t]*\]' arch/powerpc/boot/dts/ac14xx.dts
-    accept 'K256:[\n][\t]\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx-asm.S
-    accept 'K256:[\n][\t]\.long[\t]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[\t][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx2-asm.S
-    accept 'K256:[\n][ ]*\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][ ]*\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-ssse3-asm.S
-    accept 'K512:[\n][\t]\.quad[ ]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[ ][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-\(avx\|ssse3\)-asm\.S'
-    accept 'K512:[\n][\t]\.quad[\t]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[\t][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-avx2-asm.S'
-    defsnc 'static[ ]const[ ]uint32_t[ ]axi_clkgen_lock_table\[\][ ]=' drivers/clk/clk-axi-clkgen.c
-    defsnc 'static[ ]const[ ]int[ ]arizona_micd_levels\[\][ ]=' drivers/extcon/extcon-arizona.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v13_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    defsnc 'static[ ]const[ ]u32[ ]\(evergreen\|cedar\|supersumo\|wrestler\|barts\|turks\|caicos\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cypress\|redwood\|cedar\|juniper\)_mgcg_init\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cayman\|dvst\|scrapper\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]\(r7xx\|rv7[1347]0\)_\(golden_registers\|mgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/rv770.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\|oland\|hainan\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]verde_pg_init\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]hainan_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]s16[ ]temp_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u8[ ]via_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]uint64_t[ ]crc_table\[256\][ ]=' drivers/md/bcache/util.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]ofsm_init_it9135_v[12]\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_it9135_\(38\|51\|52\|60\|61\|62\)\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsc 'static[ ]struct[ ]regdata[ ]mb86a20s_init2\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    defsnc 'static[ ]const[ ]u8[ ]channel_registers\[\][ ]=' drivers/media/i2c/tw2804.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]si476x_property_range[ ]valid_ranges\[\][ ]=' drivers/mfd/si476x-prop.c
-    defsnc '[\t]static[ ]const[ ]unsigned[ ]int[ ]t[45]_reg_ranges\[\][ ]=' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_wa_phy6_radio11_ghz2[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[4\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5592_xtal[24]0\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'u32[ ]RTL8188EEPHY_REG_\(1TARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EE_RADIOA_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEMAC_1T_ARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEAGCTAB_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsc 'static[ ]const[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'drivers/pinctrl/sh-pfc/pfc-\(r8a77\(40\|79\)\|sh72\(03\|69\)\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[ab]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]int[ ]ab8540_charge_\(output\|input\)_curr_map\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]ldo_vaux56_ab8540_voltages\[\][ ]=' drivers/regulator/ab8500.c
-    accept '[\t]rproc->firmware[ ]=[ ]p[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]vop_6010_\(ntsc\|pal\)_\(d1\|cif\)\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
-    defsnc 'u8[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]u32[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6656/tcrc.c
-    defsnc 'const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]tas5086_reg_defaults\[\][ ]=' sound/soc/codecs/tas5086.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8688\(_helper\)\?\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8897_uapsta\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname '\(\(atsc\|tdmb\)_denver\|cmmb_\(ming_app\|venice_12mhz\)\|dvbh\?_rio\|fm_radio\(_rio\)\?\|isdbt_\(pele\|rio\)\)\.inp' drivers/media/common/siano/smscoreapi.h
-    blobname 'tigon[/]tg357766\.bin' drivers/net/ethernet/broadcom/tg3.c
-    blobname 'cxgb4[/]t5fw\.bin' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    blobname 'rtl_nic[/]rtl8106e-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-[23]\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'mwl8k[/]fmimage_8764_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'go7007[/]go7007fw\.bin' drivers/staging/media/go7007/go7007-driver.c
-    blobname 'go7007[/]go7007tv\.bin' drivers/staging/media/go7007/go7007-fw.c
-    blobname 'go7007[/]\(s2250-[12]\|px-\(m\|tv\)402u\|lr192\|wis-startrek\)\.fw' drivers/staging/media/go7007/go7007-loader.c
-    blobname 'intel[/]ibt-hw-%x\.%x\(\.%x-fw-%x\.%x\.%x\.%x\.%x\)\?\.bseq' drivers/bluetooth/btusb.c
-    blobname 'radeon[/]\(RV710\|CYPRESS\|SUMO\|TAHITI\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'imspcu\.fw' drivers/input/misc/ims-pcu.c
-    blobname 'fimc_is_fw\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'setfile\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'rtlwifi[/]rtl8188efw\.bin' drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-    ;;
-
-  */*freedo*.patch | */*logo*.patch)
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm
-    ;;
-
-  */patch-3.10*)
-    # Matches for the reversed patch.
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    accept '[	]return[ ]_request_firmware[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    # Matches of changes from 3.10 adjusted for patch.
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware[(]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9462_2p0_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]request_firmware_nowait[(]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[ ]request_firmware\?[(]' include/linux/firmware.h
-    # Present in 3.10, modified in 3.11 patch:
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_linux_clut224.ppm
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-    ;;
-
-  */patch-3.9*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load\(struct[*][/][;]\)\?' drivers/base/firmware_class.c
-    ;;
-
-  */patch-3.8*)
-    # Present in 3.8 but patched in stable releases.
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # Present in 3.8
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    # For 3.8-to-3.9 patch:
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_load\|_work_func\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_f\(c0011\[\][ ]=\)\?\(\([ ][{]\)\?[*][/][;]\)\?' drivers/media/dvb/frontends/af9033_priv.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=\([ ]\?[{]\?[*][/][;]\)\?' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[	]\.firmware[ ]=[ ]\(DW210[24]\|DW3101\|S630\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]\(P1100\|S660\|P7500\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_pos\(tamble\[\]\[5\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx\(_gain_table\[\]\[9\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=\([*][/][;]\)\?' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-    # Reverse 3.8-to-3.9 patch:
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_cleanup\|_prepare\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]*\(\(fw_priv\|ret\)[ ]=[ ]\)\?_\?request_firmware_\(load\|prepare\|cleanup\)' drivers/base/firmware_class.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    accept '[	]\.firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(SiS\|XGI\)_[ME]CLKData\(Struct\)\?[ ]XGI\(340\|27\)\(\(New\)\?_[ME]CLKData\[\][ ]*=\|N\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    ;;
-
-  */drm-qxl-driver.patch)
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    ;;
-
-  */patch-3.7*)
-    # Removed chunks matched by entries that don't appear in the patch context.
-    initnc '[	]0x019806b8[,][\n][	]0x1427f116[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0xf1160198[,][\n][	]0xb6041427[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    # Present in 3.7 and removed in the patch (for --reverse-patch).
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    # Chunks matched by other entries that don't appear in the patch context.
-    initnc '[	][{][ ]19200000[,][ ]216000000[,]' arch/arm/mach-tegra/tegra20_clocks_data.c
-    initnc '[	]0x16019806[,][\n][	]0x041427f1[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0x98069221[,][\n][	]0x27f11601[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '[	][{]0x0000a284\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    initnc '[	][{]0x0000a574\([,][ ]0x9c1fff0b\)*\([,][ ]0x5e001eeb\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a580[,][ ]0x00000000[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a584\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a0b4\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000982c\([,][ ]0x05eea6d4\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    initnc '[	][{][ ]184[,][ ]0x00[ ][}][,]' sound/soc/codecs/lm49453.c
-    # Already present in 3.7.
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-    ;;
-
-  */patch-3.6*)
-    # Present in patch for 3.6.4.
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # Present in patch for 3.6.5.
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    # Specific to the 3.7 patch
-    accept '[	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]7[)],[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][ ]request_firmware[(][)][ ]returns[ ]non-zero' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(]firmware_p[)][;]' drivers/base/firmware_class.c
-    accept '[ ][*][	]Asynchronous[ ]variant[ ]of[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware\(_nowait\)\?[(]' include/linux/firmware.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    accept '[	][{]0x00009e1c,[ ]0x0001cf9c,[ ]0x[0-9a-fx{},\n	 ]*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '[;][/][*]@@[ ]-391,17[ ][+]407,17[ ]@@[*][/][;][\n]\([ ]*[123],\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*1,\)*' scripts/dtc/dtc-lexer.lex.c_shipped
-    accept '[;][/][*]@@[ ]-395,16[ ][+]423,16[ ]@@[*][/][;][\n][ ]*0,\([ ]*2,\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*2,\)*' scripts/dtc/dtc-parser.tab.c_shipped
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[ 12][0-9],\)*[\n]\)*\([ ]*[12][0-9],\)*[ ]*24' scripts/dtc/dtc-parser.tab.c_shipped
-    
-    # Already in 3.6, but changed or moved thus present in patch to 3.7:
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    # Present in 3.6 but removed in the patch:
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    # Specific for the 3.7-to-3.6 reverse patch:
-    accept '[	]err[ ]=[ ]request_firmware[(]&fw,[ ]patch,[ ]dev[)][;]' sound/pci/hda/hda_hwdep.c
-    defsnc '\(static[ ]const[ ]struct[ ]\(stk1160\|saa7113\)config\|[}]\)[ ]\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    accept '[ ]kernel[(]driver[)]:[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[1-4],\)*[\n]\)*\([ ]*[ 1][0-9],\)*[ ]*12' scripts/dtc/dtc-parser.tab.c_shipped
-    ;;
-
-  */patch-3.5*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    # Present in 3.5 and in patch to 3.6:
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(high\|low\|mixed\)_\(power\|ob_db\)\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_wo_xlna_rx_gain\)\?_1_1\(_\(baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_1_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed[^\n]*[\n][	]*complete_all[(][&]rproc->firmware_loading_complete' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '[	][{]\(0x0000a288[,][ ]0x00000220\|0x0000a430[,][ ]0x1ce739ce\|0x0000a540[,][ ]0x\(49005e72\|4e02246c\)\|0x0000a5f4[,][ ]0x\(6f82bf16\|778a308c\)\|0x0000a50c[,][ ]0x10000023\|0x00009e04[,][ ]0x001c2020\|0x00009e44[,][ ]0x62321e27\)\([,][ ]0x[0-9a-f]*\)*[}][,]\([\n][	][{]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*[}][,]\)*' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    # For reversal of 3.5-to-3.6 patch only.
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc 'uint32_t[ ]nva3_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    initnc 'uint32_t[ ]nvc0_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc 'const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-    ;;
-
-  */patch-3.4*gnu*3.5*)
-    # This is far too general for deblobbing, but ok for patch checking.
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[*][/][;][\n][	][{]0x0000\(9830\|a288\|a0b4\|a138\)[,][ ]0x00000[0-9a-f]*[}]\?[,]' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    # Already present in 3.4, but moved or changed in 3.5:
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.SD31\|\.DB132\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-    # Required for reverse patch only:
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    ;;
-
-  */patch-3.3*gnu*)
-    # These patterns are *way* too broad for general use, but they're fine
-    # for patches between deblob-checked releases.
-    accept 'static[ ]\(int\|void\)[ ]_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware[(]const' drivers/base/firmware_class.c
-    accept '[	]*ret[ ]=[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]*_request_firmware_cleanup' drivers/base/firmware_class.c
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	]0x43[,][ ]11[,][	]0x00[,][0-9xa-f, 	\n]*' drivers/media/video/gspca/pac7302.c
-    accept '\([ 	][{][ ]0x[12][02][,][ ]0x[0-9a-f][0-9a-f][,][ ]0x[0-9a-f][0-9a-f][ ][}][,][\n]\?\)\+[	][{][ ]0[ ][}][ ][/][*][ ]TERMINATING[ ]ENTRY[ ][*][/]' sound/usb/6fire/control.c
-    # Some of the above were present before, but not covered by these
-    # specific patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # New in 3.4.
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-    # Removed in 3.4, for --reverse-patch only.
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    accept '-3[,]-2[,]-2[,]-1[,]-1[,]0[,][0-9,\n]*[}][;]' drivers/hwmon/via686a.c
-    accept '[	][{]0xa1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,]\([\n][	][{]0x[ac]1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,][}][,]\)*' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */3.4.1-stable-queue.patch* | */patch-3.4*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43legacy_request_firmware[(]s[^\n]*[*][/][;]' drivers/net/wireless/b43legacy/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    ;;
-
-  */atl1c_net_next_update-3.[34].patch)
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    ;;
-
-  */drivers-media-update.patch)
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    accept '[	]0x43,[ ]11,[	][0-9a-fx, 	\n]*' drivers/media/video/gspca/pac7302.c
-    # Entries above are in 3.3; below are for 3.4.
-    blobname 'dvb-usb-terratec-h7-drxk\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-terratec-h7-az6007\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-fe-xc5000\(-1\.6\.114\|c-41\.024\.5-31875\)\.fw' drivers/media/common/tuners/xc5000.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6007.c
-    accept '[	]*\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	]*\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/af9035.c
-    ;;
-
-  */brcm80211.patch)
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    ;;
-
-  */patch*-3.1.*)
-    defsnc 'static[ ]const[ ]u8[ ]ak4642_reg\[AK4642_CACHEREGNUM\][ ]=' sound/soc/codecs/ak4642.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */media-DiBcom*.patch)
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-3.1-rc*)
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/staging/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    defsnc '[ ][ ]static[ ]\(const[ ]\)\?unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=[ ][{][*][/][;]' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]config[ ]FIRMWARE_IN_KERNEL[*][/][;].*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/ov9740.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    # for reverse patch
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,]' drivers/firmware/sigma.c
-    accept '[	][	]pr_debug[(]["]%s:[ ]request_firmware[(][)][ ]failed' drivers/firmware/sigma.c
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    # this was a bug in an earlier deblob
-    accept '#define[ ]WL_4329_NVRAM_FILE[ ]["][^"]*["]' drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' drivers/staging/brcm80211/brcmfmac/bcmchip.h
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'static[ ]struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'u16[]LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057_rev5[ ]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'struct[ ]radio_\(20xx_\)\?regs[ ]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    ;;
-
-  */patch*-3.0-rc*)
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    ;;
-
-  */patch*-2.6.39-rc*)
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sn9c20x.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKDataStruct[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    # The above match the reversed patch
-    defsnc 'static[ ]unsigned[ ]char[ ]bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]\(firmware_p\|fw\),' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware_nowait[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    # New in 2.6.39 below, present in earlier versions above
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    ;;
-
-  */rtl8180*.patch)
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    ;;
-
-  */patch*-2.6.38-rc*)
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_asm.S
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|m[ec]\)\.bin' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_\(wo_xlna_\)\?rx_gain\)\?_1_0\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_\(high\|low\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # Above is for patterns new in 2.6.38, below is for older patterns.
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?const[ ]u32[ ]b43_ntab_framestruct\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/b43/tables_nphy.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]tones\[2048\][ ]=\([ ][{][*][/][;]\)\?' drivers/staging/easycap/easycap_testcard.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc '\(static[ ]\)\?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\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225\(z2\)\?_\(agc\|ofdm\|\(tx_\)\?\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    ;;
-
-  */patch*-2.6.38*)
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    ;;
-
-  */patch*-2.6.37-rc*) # up to -rc8-git3
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]const[ ]A_INT32[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)-0[-0-9]*\.fw' drivers/staging/brcm80211/README
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.bin' drivers/staging/brcm80211/brcmfmac/README
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-    # Above is for patterns new in 2.6.37, below is for older patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[pxm]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]int[ ]be_load_fw[(][^\n;{]*[)][*][/][;][\n][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware' drivers/net/benet/be_main.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([ ][{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    defsnc '\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    accept '[*][ ]drivers[/]staging[/]ft1000[/]ft1000-\(pcmcia\|usb\)[/]ft[13]000\.img:[ ]Removed\.' 'patch-libre.*'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    ;;
-
-  */patch*-2.6.36.*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    ;;
-
-  */patch*-2.6.36-rc*)
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?const[ ]u32[ ]r[67]xx_default_state\[\][ ]=\([*][/][;]\)\?' drivers/gpu/drm/radeon/r600_blit_shaders.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]void[ ]get_regs[(]struct[ ]net_device[ ][*]dev,\([^\n]*[*][/][;]\)\?' drivers/net/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]__devinit[ ]bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h 
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{]\([*][/][;]\)\?[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-    # New in 2.6.36-rc3:
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[px]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ][{][^}]*[}][ ]\(stk1160\|saa7113\)config\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    ;;
-
-  */hid-support*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-    ;;
-
-  */sched*)
-    accept 'CPU[ ]\+before[ ]\+after[\n]\([\n][01][0-9][ ]\+:[ ][0-9]\+[ ]\+:[ ][67]\)*'
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    accept '\(All[ ]CPUS[ ]idle[ ]for[ ]10[ ]seconds[ ][(]HZ=1000[)]\|One[ ]CPU[ ]busy[ ]rest[ ]idle[ ]for[ ]10[ ]seconds\|All[ ]CPUs[ ]busy[ ]for[ ]10[ ]seconds\)[\n][0-9 \n]*'
-    accept 'domainstats:[ ]*domain0[\n][ ]*cpu[ ]*cnt[ ]*bln[ ]*fld[ ]*imb[ ]*gain[ ]*hgain[ ]*nobusyq[ ]*nobusyg[\n 0-9:]*'    
-    ;;
-
-  */*-loongson.patch)
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]rtl8225bcd_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_agc\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'static[ ]u32[ ]MAC_REG_TABLE\[\]\[3\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]ZEBRA2_CCK_OFDM_GAIN_SETTING\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u16[ ]rtl8225z2_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]rtl8225z2_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    ;;
-
-  */patch*-2.6.34-rc*)
-    # New in 2.6.34, should be duplicated in the main pattern set.
-    blobname 'cxgb4[/]t4fw\.bin' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '#[ ]\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    # Pattern present prior to 2.6.34, or already adjusted for 2.6.34 in
-    # the main pattern set.
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blob 'sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|cx\(23\(1xx\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    accept '\([/][*][*][\n]\)\?[ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[ ]of[ ]request_firmware' drivers/base/firmware_class.c
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sunplus.c
-    # above is in -rc1, below in -rc2
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    blobname '%s%[du]%s["],[\n 	]*name_pre,[ ]\(priv->fw_\)\?index,[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    ;;
-
-  */patch*-2.6.33-rc*)
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\([\n]\+[}]\)\?' include/linux/firmware.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    defsnc 'struct[ ]nv17_tv_norm_params[ ]nv17_tv_norms\[NUM_TV_NORMS\][ ]=' drivers/gpu/drm/nouveau/nv17_tv_modes.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' drivers/net/wireless/prism54/islpci_dev.c
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func[(]void[ ][*]arg[)][*][/][;][\n]\([^\n]*[\n]\)\+\([	]ret[ ]=[ ]_request_firmware[(]\|request_firmware_nowait[(]\)\?' drivers/base/firmware_class.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ]af9015_properties\(\[\]\)\?[ ]=[ ][{][*][/][;][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]bridge_start_ov965x\[\]\[2\][ ]=[ ][{][*][/][;][\n]' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_init\[\]\[8\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271_1_0\[\]\[[26]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?int[ ]request_firmware\(_nowait\)\?[(]\(const[ ]struct[ ]firmware[ ][*][*]\|[\n][	]struct[ ]module[ ][*]\)' include/linux/firmware.h
-    blobname 'isl38\(77\|86\|90\)' drivers/net/wireless/prism54/islpci_dev.c
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    accept '#include[ ]["]rf\.h["][\n]#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt30[79]0[/]\)\?\)\?firmware\.h["]' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-    # The above are covered by the main Linux patterns.  The patterns
-    # below are to be kept in sync in the 2.6.33 block within the main
-    # Linux patterns, until 2.6.33 is released.
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'const[ ]static[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_largepage[ ]=' drivers/mtd/nand/mxc_nand.c
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' drivers/net/bnx2x_main.c
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' drivers/net/bnx2x_main.c
-    blob '#define[ ]FW_VERSION\([ ]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ ]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_302x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]u16[ ]bios_to_linux_keycode\[256\][ ]=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname 'sndscape\.co\([?dx01234]\|%d\)' 'sound/\(isa/\(Kconfig\|sscape\.c\)\|oss/README\.OSS\)'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    ;;
-
-  */patch*-2.6.27*|*/patch*-2.6.31.*)
-    accept '[	]request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-2.6.30*)
-    initnc '[}][ ]bclk_divs\[\][ ]=[ ][{]' sound/soc/codecs/wm8903.c
-    ;;
-
-  */patch*-2.6.28-rc*)
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]UINT32[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]snr_table[ ]\(qpsk\|qam\(16\|64\)\)_snr_table\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    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
-
-    # Non-Free license in entire file.
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]saharadbgdownload\.h["]' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-
-    # ok from earlier releases
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix.txt|Documentation/serial/specialix.txt'
-    defsnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/pci/delkin_cb\.c\|drivers/ide/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-
-    # These are removed in 2.6.28, they're here so --reverse-patch tests pass.
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    initc '[	]static[ ]const[ ]__u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov7630_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */patch*-2.6.27-rc* | */patch*-2.6.26-git* | */git-linus.diff)
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]des3_ede_cbc_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF[\n]' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    initnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    initnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    initnc 'static[ ]const[ ]__u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]spca561_init_data\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    initnc 'static[ ]const[ ]__u16[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[MAX_[A-Z]*\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]__u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(mi13[12]0\|po3130\|hv7131r\|ov76[67]0\)_\(\(soc\)\?initQ\?VGA_\(JPG\|data\)\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    initnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' 'Documentation/bt8xxgpio.txt'
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]=[*][/][;]' scripts/genksyms/parse.c_shipped
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" arch/arm/inlcude/asm/hardware/entry-macro-iomd.S
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\(60\|48\)\)_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    ;;
-
-  */linux-2.6-gspca-git.patch)
-    # Probably for 2.6.28 or .29.
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    # Already in 2.6.27.
-    initnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc '[	][/][*][ ]Some[ ]more[ ]unknown[ ]stuff[ ][*][/]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]ov7648_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # No merge needed
-    defsnc '#if[ ]0[\n][	][{]0x30,[ ]0x0154,[ ]0x0008[}],' drivers/media/video/gspca/sunplus.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
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    ;;
-
-  */patch*-2.6.26-rc*)
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    initnc 'static[ ]struct[ ]hash_testvec[ ]\(hmac_sha\(224\|256\)\|aes_xcbc128\|crc32c\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]\(bf_cbc\|serpent\|tnepres\|aes\(_\(cbc\|ctr\|xts\)\)\?\|x\?tea\|anubis\(_cbc\)\?\|xeta\|camellia_cbc\|cts_mode\)_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{"]' crypto/tcrypt.h
-    initnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' drivers/ide/legacy/umc8672.c
-    initnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]\(ini\|act\|rco\)_time_value\[\]\[8\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c
-    initnc 'u16[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    oprepline '#define[ ]AR5K_RATES_11[ABG][ ]' drivers/net/wireless/ath5k/ath5k.h
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]1000,[ ]2,[ ]139,[ ]1[ ][}],[	]' drivers/net/wireless/ath5k/ath5k.h
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    # new in 2.6.26
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]=' drivers/media/video/cx18/cx18-av-vbi.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    blob 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\)[ ]=[ ]'"$sepx$blobpat*$sepx[;]" drivers/s390/net/qeth_core_mpc.c # from drivers/s390/net/qeth_mpc.c in 2.6.25
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    accept "[ ][ ][{][ ]0x00014284,[ ][ ]19688[ ][}],[\n][ ][ ][{][ ]0x00011104,[ ][ ]20400[ ][}],[\n][ ][ ][{][ ]$blobpat*[ ][}]," drivers/video/geode/lxfb_ops.c # won't be necessary in rc3
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_blackfin_clut224.ppm
-    ;;
-  */patch*-2.6.25-rc*)
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]=[ ][{][*][/][;]'
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]='
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^[]*\[\][ ]='
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{]'
-    initnc 'static[ ]struct[ ][^\n]*_testvec[ ][^\n]*_tv_template\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]='
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11\([ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    accept '[ ][ ][ ][ ][ ]\([ ]49,\)*[\n]\([ 0-9,]*[\n]\)*[ ][ ][ ][ ][ ]\([ ]49,\)*$'
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]='
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$'
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    accept '[	]24[ ]=>[ ]\[[\n]\([^\n]*[\n]\)*[	]\]\(,[ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    accept '[	][	]'"[']"'0x[^\n]*[\n]\([^\n]*[\n]\)*[	]\]\([,][ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    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 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.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
-    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
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv1[07]_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-
-    # drm-upgrayedd.patch
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-
-    # Although the developers of the drivers are not trying to stop
-    # anyone from modifying it or understanding it, they acknowledge
-    # 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.
-
-    # initnc 'static[ ]uint32_t[ ]nv\(4[013467ace]\|49_4b\|8[46]\)_ctx_\(voodoo\|prog\)\[\][ ]=' 'drivers/char/drm/nv40_graph.c|.*'
-    ;;
-  */linux-2.6*-lirc.patch | */lirc-*.patch)
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    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
-    ;;
-  */v4l1*.patch)
-    accept '[(]at[ ]which[ ]point[ ]it[ ]should[ ]use[ ]request_firmware'
-    ;;
-  */linux-2.6-v4l-dvb*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-  # post 2.6.37 fixes start here
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_p1g_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.identify_state[ ]*=[ ]technisat_usb2_identify_state,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    # present in 2.6.37
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    # post 2.6.35 fixes start here
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxxx.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ][*][/][;][\n][	]\.firmware[ ]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["],[\n][	]\.download_firmware[ ]=[ ]m920x_firmware_download' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    blobname 'v4l-cx23885-enc\.fw' drivers/media/video/cx23885/cx23885-417.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]brit_7660\[\]\[7\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]contrast_7660\[\]\[31\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]colors_7660\[\]\[6\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    # removed bits
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    # post 2.6.33 fixes start here
-    defsnc 'static[ ]struct[ ]i2c_reg_u8[ ]ov9655_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # rebase-gspca-to-latest 2.6.33ish starts here
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov6650_sensor_init\[\]\[8\][ ]=[*][/][;]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]hv7131r_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]po1030_sensor_param1\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    # rebase-gspca-to-latest ends here
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u16[ ]spca508_vista_init_data\[\]\[3\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/spca508.c
-    defsc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]mi1310_socinitVGA_JPG\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/vc032x.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    ;;
-  */linux-2.6-modsign-mpilib.patch)
-    initnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]='
-    ;;
-  */linux-2.6-netdev*.patch | \
-  */linux-2.6.27-net-r8169-2.6.28.patch)
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    ;;
-  */linux-2.6-wireless*.patch | */linux-2.6-ath5k.patch | \
-  */git-wireless-dev.patch | */linux-2.6-zd1211rw-mac80211.patch)
-    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\)\[\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]='
-    initnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11A[ ]'
-    oprepline '#define[ ]AR5K_RATES_11B[ ]'
-    oprepline '#define[ ]AR5K_RATES_11G[ ]'
-    oprepline '#define[ ]AR5K_RATES_TURBO[ ]'
-    oprepline '#define[ ]AR5K_RATES_XR[ ]'
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c # ?
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-
-    # git logs
-    accept '[ ][ ][ ]sudo[ ]modprobe[ ]ath5k[ ]debug=0x00000400[\n][ 	]*[\n]\([ 	]*Band[^\n]*[\n]\([ 	]*\(\(channels\|rates\):\|[- 	0-9a-f]*\|\[\.\.\.[ ]etc[ ]\]\)[\n]\)\+\)\+[ ][ ][ ][ ][ ][ ][ ]540[ ]000c[ ]0000[ ]0000'
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]3000,[ ]1,[ ]150,[ ]3[ ][}],'
-
-    # Fedora 8ish kernel-xen builds
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5211_ini_mode\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5212_rf511[12]_ini_mode\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_gain_cck_ofdm\[\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]rf_vals_abg_5222\[\][ ]='
-    ;;
-
-  */linux-2.6-netdev-e1000e*.patch)
-    initnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    ;;
-
-  */deblob-check-testsuite/*)
-    accept 'accept[(][^)]*[)]'
-    blobname 'blob[(][^)]*[)]'
-    blobname 'blobeol[^\n]*[\n]'
-    ;;
-  esac
-}
-
-# Regular expression that matches a literal constant.
-constx="[0-9][0-9a-fA-FxX]*"
-# Regular expression that matches a separator between consecutive
-# literal constants.
-sepx="\\([ 	\\n]*\\(\\([ 	\\n]\\|[,:{}LlUu\"\'\\\\][,:{} 	\\nLlUu\"\'\\\\]*\\)[xX\$]\\?\\|[.][a-zA-Z][a-zA-Z0-9]*[ 	][ 	]*[\$]\\?\\)\\)"
-
-# Regular expression that matches a continuation of a blob, after an
-# initial constant.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobcont="\\($sepx$constx\\)"
-
-# Regular expression that matches the initial constant of a blob plus
-# its continuation.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobpat="$constx$blobcont"
-
-# Regular expression that matches a blob with at least the number of
-# constants specified as sensitivity.
-blobseq="$blobpat\\{$sens,\\}"
-
-# Regular expression that matches the beginning of the pattern or a
-# line break.  It must be \(\)ed, such that it can be named in
-# replacement patterns.
-bol="\\(^\\|[\\n]\\)"
-
-# Regular expression that matches the end of the pattern or a line
-# break.  It must be \(\)ed, such that it can be named in replacement
-# patterns.
-eol="\\([\\n]\\|\$\\)"
-
-# Regular expression that matches a C-style comment.
-comment="\\([/][*][^*]*\\([*]\\+[^*/][^*]*\\)*[*]\\+[/]\\|[/][/][^\\n]*[\\n]\\)"
-
-# Regular expression that matches comments typically used in assembly.
-asmcomment="\\($comment\\|[;#][^\\n]*[\\n]\\)"
-
-# Regular expression that matches a braced initializer containing at
-# least one blob.
-initblob="[^\\n=]*=\\([ 	\\n\\\\]\\|$comment\\)*[{]\\([^;]\\|$comment\\)*$blobseq\\([^;]\\|$comment\\)*[}]\\?\\([ 	\\n\\\\]*\\|$comment\\)[;]\\?"
-
-# Regular expression that matches a C (possibly multi-line) #define
-# that contains a blob.
-defineblob='[ 	]*#[ 	]*define[ 	][^\n]*\([\\][\n][^\n]*\)*'"$blobseq"'\([^\n]*\\[\n]\)*'
-
-# Regular expression that matches an assembly label followed by a blob
-# without any intervening label.
-asmblob="[a-zA-Z_.][^\\n:;#/ 	]*:\\([^:{}]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
-
-# Set up the sed script that will go through the (processed) input,
-# looking for sequences of blobs and printing whatever was requested.
-# It accepts 3 arguments.
-
-# $1 is the action in case blobs were found in the input.
-
-# $2 is the action in case no blobs were found, not even false positives.
-
-# $3 is the action in case false positives were located.
-
-# $4 is the action for every complete input pattern.
-
-set_sed_main () {
-  falsepos=`${SED-sed} -n 's,^[+]\^*,,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-  blobs=`${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-
-  # Regular expression that matches one or more blobs without
-  # intervening line breaks.
-  sblobctx="\\(\\([^\\n]\\|[/][*](DEBLOB-\\nBED)[*][/]\\)*$blobs\\)\\+"
-
-  # Regular expression that matches the context for a long blob match.
-  lblobctx="\\($initblob\\|$defineblob\\|$asmblob\\|$sblobctx\\)"
-
-  if test "X$falsepos" != X; then
-    check_false_positives="$v:???falsepos
-/$bol$falsepos/!b blob
-$v:+++falsepos
-h
-s/$bol$falsepos/\\1;\/**\/;/g
-# See if, after removing all matches, we end up without any blobs.
-$v:???blobs
-/$blobs/!{
-  g
-  b falsepos
-}
-g
-"
-  else
-    falsepos="$.^"
-    check_false_positives=
-  fi
-
-  $echo "#! /bin/sed -nf
-
-/^$/N
-/^[\\n]\\?;[/][*]\\(end .*\\)\\?[*][/];$/{
-  $4
-  d
-}
-# /^;[/][*]begin /!{
-#   : internal_error
-#   $v:internal_error
-#   s,.*,Internal error at\\n&[\\n]/*(DEBLOB-\\nERROR)*/,;
-#   q 2
-# }
-$v:reading file in
-h
-n
-: read_more
-/^;[/][*]end [^\\n]*[*][/];$/! {
-  H
-  n
-  b read_more
-}
-H
-g
-$4
-$v:read all
-s/^\\(;[/][*]begin [^\\n]*[\\n]\\)*//
-s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//
-$v:???!blobs
-/$blobs/!b clean
-$check_false_positives
-# Fall through.
-: blob
-$v:blob
-$1
-d
-: clean
-$v:clean
-$2
-d
-: falsepos
-$v:falsepos
-$3
-d
-
-: print_matches
-$v:print_matches
-/^$falsepos/! {
-  $v:delete unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  : print_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_matches_nomatch_loop
-  }
-  x
-  b print_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/ {
-  i\\
-::: $file :::
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_matches
-
-: print_marked_matches
-$v:print_marked_matches
-/^$falsepos/! {
-  h
-  s/[\\n]$falsepos.*//
-  : print_marked_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_matches_nomatch_loop
-  }
-  x
-  b print_marked_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  i\\
-::: $file :::
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_marked_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_matches
-
-: print_blobs
-$v:print_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_blobs_match_loop
-    }
-    G
-    b print_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_blobs_nomatch_loop
-  }
-  x
-  b print_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_blobs
-
-: print_marked_blobs
-$v:print_marked_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_blobs_match_loop
-    }
-    G
-    b print_marked_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^falsepos//
-    b print_marked_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_marked_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_blobs_nomatch_loop
-  }
-  x
-  b print_marked_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_marked_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_blobs
-
-: print_cblobs
-$v:print_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_cblobs_match_loop
-    }
-    G
-    b print_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_cblobs_nomatch_loop
-  }
-  x
-  b print_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_cblobs
-
-: print_marked_cblobs
-$v:print_marked_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_cblobs_match_loop
-    }
-    G
-    b print_marked_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_marked_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_marked_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_cblobs_nomatch_loop
-  }
-  x
-  b print_marked_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_marked_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_cblobs
-
-: print_both
-$v:print_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_both_nomatch_loop
-  }
-  x
-  b print_both_delete_to_eol
-}
-h
-i\\
-::: $file :::
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: print_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_both
-
-: list_matches
-$v:list_matches
-/^$falsepos/! {
-  $v:print unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  p
-  : list_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_matches_nomatch_loop
-  }
-  x
-  b list_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-}
-p
-g
-s/^\\($falsepos[^\\n]*\\)//
-: list_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_matches
-
-: list_blobs
-$v:list_blobs
-/^$falsepos/ {
-  $v:print false positive
-  # This is tricky.  We don't want to deblob the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:print false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1\\n/
-    : list_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      P
-      s/^[^\\n]*[\\n]//
-      x
-      b list_blobs_match_loop
-    }
-    G
-    b list_blobs_delete_to_eol
-  }
-  h
-  s/^\\($falsepos[^\\n]*\\)[\\n].*/\\1/
-  p
-  g
-  s/^\\($falsepos[^\\n]*\\)//
-  b list_blobs_delete_to_eol
-}
-/^[^\\n]*$blobs/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_blobs_nomatch_loop
-  }
-  x
-  b list_blobs_delete_to_eol
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: list_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_blobs
-
-: list_both
-$v:list_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_both_nomatch_loop
-  }
-  x
-  b list_both_delete_to_eol
-}
-h
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: list_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_both
-
-" > "$scriptname"
-
-  scriptcmd='${SED-sed} -n -f "$scriptname"'
-
-  case $vp in
-  [01]) xv= ;;
-  2) xv='# ';;
-  esac
-
-  sedunbreak='
-: restart
-/[/][*](DEBLOB-$/ {
-  N
-  /[/][*](DEBLOB-[\n]ERROR)[*][/]/{q 1;}'"
-$xv"'s,[/][*](DEBLOB-[\n]BED)[*][/],,
-  b restart
-}
-p
-'
-  scriptcmd2='${SED-sed} -n -e "$sedunbreak"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_python_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  cat >> "$scriptname" <<EOF
-#! /usr/bin/python
-
-import sys
-import re
-
-# Should we replace blobs and false positives with replacement?
-replace_blob = 0
-replace_falsepos = 0
-replacement = '/*(DEBLOBBED)*/'
-
-# Should we print lines containing blobs, false positives, and neither?
-print_blob = 0
-with_context = 0
-print_falsepos = 0
-print_nomatch = 0
-
-# Should we print the input stack if we find blobs or false positives?
-list_blob = 0
-list_falsepos = 0
-
-# Should we forget everything we know about false positives?
-falsepos = None
-no_falsepos = 0
-
-verbose = $vp
-
-# Which of the defaults above should we override?
-$@ = 1
-
-EOF
-
-  if test "X$DEBLOB_CHECK_PYTHON_REGEX" = Xdebug; then
-    ${SED-sed} -e 's,^[+-],,' -e "$adjust_rx" \
-	-e "s,.*,re.compile (r'&'),g" \
-	< "$regex_name" >> "$scriptname"
-  fi
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,falsepos = r'(?P<falsepos>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,blob = r'(?P<blob>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,cblob = r'(?P<cblob>\\1)'," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-if no_falsepos or falsepos is None:
-    falsepos = r'(?!)'
-
-rx = '^%s|%s' % (falsepos, blob)
-
-if with_context:
-    rx += '|^' + cblob
-
-rxc = re.compile('(?<=.)(?:%s)' % rx, re.M | re.S)
-
-filenames = None
-
-s = '\n'
-
-for line in sys.stdin:
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if line[:3] == ';/*' and line[-4:] == '*/;\n':
-        if line[3:9] == 'begin ':
-            nextfilenames = (line[9:-4], filenames)
-            if s == '\n':
-                filenames = nextfilenames
-                del nextfilenames
-                continue
-        elif line[3:7] == 'end ':
-	    #if print_blob and not print_nomatch:
-	    # from time import time
-	    # sys.stderr.write('%i %i %s\n' % (time(), len(s), filenames[0]))
-            assert line[7:-4] == filenames[0]
-            nextfilenames = filenames[1]
-        else:
-            assert filenames != None
-            s += line
-            continue
-    else:
-        assert filenames != None
-        s += line
-        continue
-
-    if verbose:
-            print('looking for matches')
-            sfilenames = filenames
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print(filenames[0] + ' within')
-                filenames = filenames[1]
-            filenames = sfilenames
-
-    if s[-1] == '\n':
-        s = s[:-1]
-
-    pp = 1
-    p = pend = 0
-    match = rxc.search (s, p)
-    while match != None:
-        firstmatch = match
-        blobs = falses = 0
-        while 1:
-            if verbose:
-                print('found match')
-            what = match.lastgroup
-
-            if what == 'cblob':
-                if verbose: print('match is a blob context')
-                pend = s.find ('\n', match.end()) + 1
-                if pend == 0:
-                    pend = len(s)
-                p = match.start() + 1
-                blob_p = 2
-            else:
-                blob_p = what == 'blob'
-                assert blob_p or what == 'falsepos'
-
-                if blob_p:
-                    if verbose: print('match is a blob')
-                    blobs += 1
-                else:
-                    if verbose: print('match is a false positive')
-                    falses += 1
-
-                if blob_p and replace_blob or not blob_p and replace_falsepos:
-                    s = s[:match.start(what)] + replacement + s[match.end(what):]
-                    p = match.start(what) + len(replacement)
-                    if pend > match.start(what):
-                        pend += p - match.end(what)
-                else:
-                    p = match.end(what)
-
-                if p > pend:
-                    pend = s.find ('\n', p) + 1
-                    if (pend == 0):
-                        pend = len(s)
-
-            match = rxc.search (s, p)
-            if match is None or match.start () >= pend or \
-	       (blob_p and not print_blob and not falses) or \
-	       (not blob_p and not print_falsepos and not blobs):
-                break
-
-        if print_nomatch:
-            sys.stdout.write (s[pp:firstmatch.start() + 1])
-            pp = firstmatch.start() + 1
-        else:
-            pp = s.rfind ('\n', 0, firstmatch.start () + 1) + 1
-
-        if print_blob and blobs or print_falsepos and falses:
-            if not print_nomatch:
-                sfilenames = filenames
-                while filenames != None:
-                    print('::: ' + filenames[0] + ' :::')
-                    filenames = filenames[1]
-                filenames = sfilenames
-            sys.stdout.write (s[pp:pend])
-            pp = pend
-
-        if list_blob and blobs or list_falsepos and falses:
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print (filenames[0] + ' within')
-                filenames = filenames[1]
-            exit (1)
-
-    if print_nomatch:
-        sys.stdout.write(s[pp:])
-
-    if verbose:
-        print('no further matches')
-
-    s = '\n'
-    filenames = nextfilenames
-    del nextfilenames
-
-assert filenames is None
-
-exit (0)
-EOF
-
-  scriptcmd="${PYTHON-python} "'"$scriptname"'
-}
-
-set_perl_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  # Add $ before arguments
-  set `echo "$@" | sed 's,\(^\|= *\),&$,g'`
-
-  cat >> "$scriptname" <<\EOF
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-# Should we replace blobs and false positives with replacement?
-my $replace_blob = 0;
-my $replace_falsepos = 0;
-my $replacement = '/*(DEBLOBBED)*/';
-
-# Should we print lines containing blobs, false positives, and neither?
-my $print_blob = 0;
-my $with_context = 0;
-my $print_falsepos = 0;
-my $print_nomatch = 0;
-
-# Should we print the input stack and exit if we find blobs or false positives?
-my $list_blob = 0;
-my $list_falsepos = 0;
-
-# Should we forget everything we know about false positives?
-my $falsepos;
-my $no_falsepos = 0;
-
-EOF
-
-  cat >> "$scriptname" <<EOF
-my \$verbose = $vp;
-
-# Which of the defaults above should we override?
-$@ = 1;
-
-EOF
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,\$falsepos = qr'(?<falsepos>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,my \$blob = qr'(?<blob>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,my \$cblob = qr'(?<cblob>\\1)'ms if \$with_context;," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-$falsepos = qr/(?<falsepos>(?!))/ if $no_falsepos || ! defined $falsepos;
-
-my $rx = qr/^$falsepos|$blob/ms;
-
-$rx = qr/$rx|^$cblob/ms if $with_context;
-
-my @filenames;
-my $nfilenames = 0;
-my $nextnfilenames;
-
-my $s = '';
-
-while (<STDIN>) {
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if (m:^[;][/][*](begin|end) (.*)[*][/][;]$:) {
-	if ($1 eq 'begin') {
-	    print "entering $2\n" if $verbose;
-	    $filenames[$nfilenames] = $2;
-	    $nextnfilenames = $nfilenames + 1;
-	    if ($s eq '') {
-		$nfilenames = $nextnfilenames;
-		next;
-	    }
-	} else {
-	    $nextnfilenames = $nfilenames - 1;
-	    print "processing $filenames[$nextnfilenames]\n" if $verbose;
-	}
-    } else {
-	$s .= $_;
-	next;
-    }
-
-    if ($verbose) {
-	print "looking for matches in\n";
-	for (my $i = $nfilenames; --$i > 0; ) {
-	    print $filenames[$i], " within\n";
-	}
-	print $filenames[0], "\n";
-    }
-
-    $s =~ s/[\n]$//;
-
-    my $pp = my $p = 0;
-
-    my $matchfound = substr ($s, $p) =~ /$rx/o;
-    while ($matchfound) {
-	print "found first match\n" if $verbose;
-	my $firstmatchstart = $-[0] + $p;
-	my $blobs = my $falses = 0;
-	my $matchstart = $-[0] + $p;
-	my $pend = -1;
-	my $blob_p;
-	do {{
-	    my $matchend = $+[0] + $p;
-	    print "found match $matchstart..$matchend\n" if $verbose;
-	    print "$&" if $verbose > 1;
-
-	    if (defined $+{'cblob'}) {
-		print "match is a blob context\n" if ($verbose);
-		$pend = index ($s, "\n", $matchend) + 1;
-		$pend = length $s if !$pend;
-	    }
-
-	    if (defined $+{'falsepos'}) {
-		print "match is a false positive\n" if ($verbose);
-		# $matchend -= $+[0] - $+[1];
-		$blob_p = 0;
-		$falses++;
-	    } elsif (defined $+{'blob'}) {
-		$blob_p = 1;
-		$blobs++;
-		print "match is a blob at $matchstart\n" if ($verbose);
-	    } else {
-		$blob_p = 2;
-		$p = $matchstart;
-		print "searching up to $pend\n" if $verbose;
-		next;
-	    }
-
-	    if ($blob_p ? $replace_blob : $replace_falsepos) {
-		substr ($s, $matchstart, $matchend - $matchstart,
-			$replacement);
-		$p = $matchstart + length $replacement;
-		$pend += $p - $matchend if $pend >= $matchstart;
-	    } else {
-		$p = $matchend;
-	    }
-
-	    $pend = index ($s, "\n", $p) + 1 if $p >= $pend;
-	    $pend = length $s if !$pend;
-	    print "searching up to $pend\n" if $verbose;
-	    $p--;
-	}} while (($matchfound = (substr ($s, $p) =~ /(?<=.)$rx/mso))
-		  && ($matchstart = $-[0] + $p) < $pend
-		  && !($blob_p
-		       ? (!$print_blob && !$falses)
-		       : (!$print_falsepos && !$blobs)));
-
-	print "last match before $pend\n" if $verbose;
-
-	if ($print_nomatch) {
-	    print substr ($s, $pp, $firstmatchstart - $pp);
-	    $pp = $firstmatchstart;
-	} elsif (($print_blob || $print_falsepos) && $firstmatchstart > 0) {
-	    $pp = rindex ($s, "\n", $firstmatchstart - 1) + 1;
-	}
-
-	if (($print_blob && $blobs) || ($print_falsepos && $falses)) {
-	    if (!$print_nomatch) {
-		for (my $i = $nfilenames; $i-- > 0;) {
-		    print "::: ", $filenames[$i], " :::\n";
-		}
-	    }
-
-	    print substr ($s, $pp, $pend - $pp);
-	    $pp = $pend;
-	}
-
-	if (($list_blob && $blobs) || ($list_falsepos && $falses)) {
-	    for (my $i = $nfilenames; --$i > 0;) {
-		print $filenames[$i], " within ";
-	    }
-	    print $filenames[0], "\n";
-	    exit (1);
-	}
-    }
-
-    print substr ($s, $pp) if $print_nomatch;
-
-    print "no further matches\n" if $verbose;
-
-    $s = '';
-    $nfilenames = $nextnfilenames;
-}
-
-exit (0);
-EOF
-
-  scriptcmd="${PERL-perl} "'"$scriptname"'
-}
-
-set_awk_main () {
-  adjust_rx='
-s,[$]$,([\\n]|$),;
-s,\[^\],[^\\],g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  case " = $@ = " in
-  *" = no_falsepos = "*) falsepos='$.^';;
-  *) falsepos=`
-    ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'
-    `
-     case $falsepos in "") falsepos='$.^';; esac;;
-  esac
-
-  blob=`
-    ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'`
-
-  case " = $@ = " in
-  *" = with_context = "*) cblob=`
-    $echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx"
-   `;;
-  *) cblob='$.^';;
-  esac
-
-  xrs= nrs="# " eor="RT" eormatch='RT ~ ' eornl='[\n]' eornlsz=1
-  # Uncomment the line below to disable the use of a regular
-  # expression for the awk Record Separator, a GNU awk extension.
-  # Using this extension appears to save a lot of memory for long
-  # deblob-check runs.
-  # xrs="# " nrs= eor='$0' eormatch='' eornl= eornlsz=0
-
-  cat >> "$scriptname" <<EOF
-#! /bin/gawk --re-interval -f
-
-BEGIN {
-    # Should we replace blobs and false positives with replacement?
-    replace_blob = 0;
-    replace_falsepos = 0;
-    replacement = "/*(DEBLOBBED)*/";
-
-    # Should we print lines containing blobs, false positives, and neither?
-    print_blob = 0;
-    with_context = 0;
-    print_falsepos = 0;
-    print_nomatch = 0;
-
-    # Should we print the input stack and exit if we find blobs or
-    # false positives?
-    list_blob = 0;
-    list_falsepos = 0;
-
-    # Should we forget everything we know about false positives?
-    no_falsepos = 0;
-
-    verbose = $vp;
-
-    nfilenames = 0;
-    s = "\n";
-
-    # Which of the defaults above should we override?
-    $@ = 1;
-
-    # requires GNU awk RS extension:
-$xrs	RS = "[;][/][*](begin|end) [^\n]*[*][/][;][\n]";
-}
-# requires GNU awk RS extension:
-$xrs { s = s \$0; }
-# does not require GNU awk RS extension:
-$nrs !/^[;][/][*].*[*][/][;]$/ {
-$nrs	 s = s \$0 "\n";
-$nrs	 next;
-$nrs }
-$eormatch /^[;][/][*]begin .*[*][/][;]$eornl$/ {
-    filenames[nfilenames] = substr($eor, 10, length ($eor) - 12 - $eornlsz);
-    if (verbose) print "entering " nfilenames ": " filenames[nfilenames];
-    nextnfilenames = nfilenames + 1;
-    if (s == "\n") {
-	nfilenames = nextnfilenames;
-	next;
-    }
-}
-$eormatch /^[;][/][*]end .*[*][/][;]$eornl$/ {
-    nextnfilenames = nfilenames - 1;
-    if (verbose)
-	print "got to the end of " nextnfilenames ": " filenames[nextnfilenames];
-}
-{
-    if (verbose) {
-	print "looking for matches";
-	for (i = nfilenames; --i > 0;)
-	    print filenames[i] " within";
-	print filenames[0]
-    }
-
-    s = substr (s, 1, length (s) - 1)
-
-    pp = 2;
-    p = pend = 1;
-    if (verbose > 1) print "searching starting at", substr (s, p, 10)
-    matchfound = match (substr (s, p),
-			/[\n]($falsepos)|[\n]($cblob)|.($blob)/);
-    while (matchfound) {
-	blobs = falses = 0;
-	firstmatchstart = RSTART + p;
-	for (;;) {
-	    matchstart = RSTART + p - 1;
-	    matchlen = RLENGTH;
-	    if (verbose) {
-		print "found match", matchstart, matchlen;
-		if (verbose > 1)
-		    print substr (s, matchstart + 1, matchlen - 1);
-	    }
-
-	    if (match (substr (s, matchstart, matchlen), /^[\n]($falsepos)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a false positive of length", matchlen;
-		blob_p = 0;
-		falses++;
-	    } else if (match (substr (s, matchstart, matchlen), /^.($blob)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a blob of length", matchlen;
-		blob_p = 1;
-		blobs++;
-	    } else if (match (substr (s, matchstart, matchlen), /^[\n]($cblob)$/) == 1) {
-		if (verbose) print "match is a blob context";
-		pend = index (substr (s, matchstart + matchlen), "\n");
-		if (pend)
-		    pend += matchstart + matchlen;
-		else
-		    pend = length (s);
-		p = matchstart + 1;
-		blob_p = 2;
-		if (verbose > 1) print "range is:", substr (s, p, pend - p);
-	    }
-
-	    if (blob_p < 2) {
-		if (blob_p ? replace_blob : replace_falsepos) {
-		    s = substr (s, 1, matchstart)		\\
-			replacement				\\
-			substr (s, matchstart + matchlen);
-		    p = matchstart + length (replacement) - 1;
-		    pend += (p + 1 - matchstart - matchlen);
-		} else
-		    p = matchstart + matchlen - 1;
-
-		if (p >= pend) {
-		    i = index (substr (s, p + 1), "\n");
-		    if (i)
-			pend = p + 1 + i;
-		    else
-			pend = length (s)
-		}
-	    }
-
-	    if (verbose) print "search until", pend;
-
-	    if (!(matchfound = match (substr (s, p),
-				      /[\n]($falsepos)|[\n]($cblob)|.($blob)/)) ||
-		p + RSTART >= pend ||
-		(blob_p ?
-		 (!print_blob && !falses) :
-		 (!print_falsepos && !blobs)))
-		break;
-	}
-
-	if (print_nomatch)
-	    printf "%s", substr (s, pp, firstmatchstart - pp);
-	else if (print_blob || print_falsepos) {
-	    lastline = substr (s, pp, firstmatchstart - pp);
-	    sub (/.*[\n]/, "", lastline);
-	    if (verbose) print "lastline: " lastline "\\\\n"
-	    firstmatchstart -= length (lastline);
-	}
-	pp = firstmatchstart;
-
-	if (verbose) print "match set range:", pp, pend
-
-	if ((print_blob && blobs) || (print_falsepos && falses)) {
-	    if (!print_nomatch)
-		for (i = nfilenames; i-- > 0;)
-		    print "::: " filenames[i] " :::";
-	    printf "%s", substr (s, pp, pend - pp);
-	    pp = pend;
-	}
-
-	if ((list_blob && blobs) || (list_falsepos && falses)) {
-	    for (i = nfilenames; --i > 0;)
-		print filenames[i] " within";
-	    print filenames[0];
-	    exit (1);
-	}
-    }
-
-    if (print_nomatch)
-	printf "%s", substr (s, pp)
-
-    if (verbose)
-	print "no further matches";
-
-    s = "\n";
-    nfilenames = nextnfilenames;
-    next;
-}
-EOF
-
-  scriptcmd="${AWK-gawk} --re-interval -f "'"$scriptname"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_save_script_input_main () {
-  savename=`mktemp -t deblob-check-input-XXXXXX`
-  scriptcmd="{ echo saving input in $savename && cat > $savename && echo done; }"
-}
-
-# Process an input file named in $1 and run it through the blob
-# recognizer.  Functions set_except and set_sed_cmd provide additional
-# arguments on a per-file and per-action basis.
-
-check () {
-  case "$#" in 1) ;; *) echo ICE >&2; exit 1;; esac
-
-  input=$1
-
-  # Add $1 to falsepos.  Its usage makes it implicitly anchored to the
-  # beginning of the line.  $2, if present, will some day narrow the
-  # falsepos matches to files that match it.
-  addx () {
-    $echo "+^$1" >> $regex_name
-  }
-
-  # Add $1 to falseneg.  Unlike addx, it is NOT implicitly anchored to
-  # the beginning of the line.  $2, if present, will some day narrow
-  # the falseneg matches to files that match it.
-  badx () {
-    $echo "-$1" >> $regex_name
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';'.  $2 may optionally name the files in which this
-  # match is to be disregarded as a potential blob.
-  initnc () {
-    addx "$1[^;]*[;]\\?" $2
-  }
-
-  # Same as initnc, but require the terminating semicolon.
-  defsnc () {
-    addx "$1[^;]*[;]" $2
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';' that's not within comments.
-  initc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]\\?" $2
-  }
-
-  # Same as initc, but require the terminating semicolon.
-  defsc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]" $2
-  }
-
-  # Accept as a non-blob an expression $1 that would have otherwise
-  # triggered blob detection.  The expression must end in a way that
-  # would trigger the blob detection machinery.
-  accept () {
-    addx "$1" $2
-  }
-
-  # Match up to the end a comment started in $1.
-  ocomment () {
-    addx "$1[/]*\\([*]*[^*/][/]*\\)*[*]\+[/]" $2
-  }
-
-  # Match $1 followed by backslash-terminated lines and a last
-  # non-backslash-terminated line.
-  oprepline () {
-    addx "$1\\([^\\\\\\n]*[\\\\][\\n]\\)*[^\\\\\\n]*$" $2
-  }
-
-  # Match $1 in $2 as a blob.  Not anchored.
-  blobna () {
-    badx "$1" $2
-  }
-
-  # Match $1 as a blob anywhere.  $2 is just for documentation purposes.
-  blobname () {
-    badx "$1"
-  }
-
-  # Match $1 in $2 as a blob.  The expectation is a match in the
-  # beginning of line, but we don't do anchoring of blob patterns ATM.
-  blob () {
-    badx "$1" $2
-  }
-
-  regex_name=`mktemp -t deblob-check-regex-XXXXXX`
-  tempfiles="$regex_name"
-
-  set_except "$input"
-
-  # Check that all regular expressions match our requirements.
-  ${SED-sed} -n '
-s,^\(-\^\?\|[+]\^\),,
-h
-s,[$]$,,
-s,\([^\\]\|^\)\(\(\\\\\)*\)\(\[^\?[]]\?[^]]\+\]\([*]\|\\[+?]\)\?\(\\\\\)*\)\+,\1\2,g
-/\([^\\]\|^\)\(\\\\\)*\([{(|)}?+^$"'"'"'; 	]\)\|^$/{
-  g
-  i\
-BAD regular expression:
-  p
-  q 1
-}' $regex_name >&2 || exit 1
-
-  scriptname=`mktemp -t deblob-check-script-XXXXXX`
-  tempfiles="$tempfiles $scriptname"
-
-  scriptcmd=false
-  scriptcmd2=
-
-  $set_cmd "$input"
-
-  for f in $tempfiles; do
-    case $f in "$scriptname") ;;
-    *) rm -f "$f" ;;
-    esac
-  done
-  tempfiles="$scriptname"
-
-  # Choose the input source...
-  case $input in
-  -) in= ;;
-  *) in='< "$input"' ;;
-  esac
-
-  set fnord # shifted out below
-
-  # Decompress as needed...
-  case $input in
-  *.bz2) cmd='bunzip2' ;;
-  *.xz) cmd='unxz' ;;
-  *.lz) cmd='lzip -d' ;;
-  *.gz | *.tgz) cmd='gunzip' ;;
-  *) cmd= ;;
-  esac
-  if test -n "$cmd"; then
-    set "$@" "$cmd"
-  fi
-
-  # Extract or otherwise munge...
-  case /$input in
-  *.tar*)
-    cmd="tar -xf - --to-command='echo \";/*begin \$TAR_FILENAME*/;\"; cat; echo; echo \";/*end \$TAR_FILENAME*/;\"'"
-    ;;
-  *.patch | *.patch.*z* | */patch-* | *.diff | *.diff.*z*)
-    if $reverse_patch; then
-      s=- r=+
-    else
-      s=+ r=-
-    fi
-    sedpatch="
-      /^[$r]/b testlastline;
-      # /^[*!]/ {
-      # 	s,^,context diffs are not properly supported\\n,;
-      # 	W /dev/stderr
-      # 	d;
-      # }
-      /^\\(@@ \\|$s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^\\($s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^$s$s$s / {
-	H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	s,^$s$s$s \\(.*\\)$,;/*begin \\1*/;,;
-	p;
-	d;
-      }
-      /^@@ / {
-        H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	# A number of patterns for patches depend on the ;/*@@ lines for
-	# context.
-	s,^.*$,;/*begin &*/;\\n;/*&*/;,;
-	p;
-	d;
-      }
-      s,^[ !$s],,
-      p;
-      :testlastline
-      $ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      d;"
-    cmd='${SED-sed} "$sedpatch"'
-    ;;
-  *)
-    cmd='cat'
-    ;;
-  esac
-  cmd="{ echo \";/*begin $input*/;\"; $cmd; echo; echo \";/*end $input*/;\"; }"
-  set "$@" "$cmd"
-
-  case $input in
-  *.tar*)
-    cmd="{ cat; cat > /dev/null; }"
-    set "$@" "$cmd"
-    ;;
-  esac
-
-  # Then run through the selected action.
-  set "$@" "$scriptcmd"
-
-  case $scriptcmd2 in "" | cat) ;;
-  *) set "$@" "$scriptcmd2"
-  esac
-
-  # test $# = 1 || set "$@" "cat"
-
-  shift # fnord goes out here
-
-  pipe=
-  for cmd
-  do
-    if test -z "$pipe"; then
-      pipe="$cmd $in"
-    else
-      pipe="$pipe | $cmd"
-    fi
-  done
-
-  eval "$pipe"
-  status=$?
-
-  $rm $tempfiles
-  tempfiles=
-
-  (exit $status)
-}
-
-# If no input given, use stdin.
-case $# in
-0)
-  test -t 0 && echo reading from standard input >&2
-  set fnord -
-  shift
-  ;;
-esac
-
-# The lines below commented out out #list: can be used to get a list
-# of matching inputs.  ATM this is useless, so we just use a shell
-# boolean.
-
-#list: n=$#
-pass=:
-
-tempfiles=
-trap "status=$?; test -z \"$tempfiles\" || rm -f $tempfiles; (exit $status); exit" 0 1 2 15
-
-process_arg=
-
-# Go through each of the input files in the command line.
-for file
-do
-  case $process_arg in
-  "") ;;
-  --implied-prefix | --prefix | -i)
-    prefix=$file
-    case $prefix in
-    /*/) ;;
-    */) prefix=/$prefix ;;
-    /*) prefix=$prefix/ ;;
-    *) prefix=/$prefix/ ;;
-    esac
-    process_arg=
-    continue
-    ;;
-  *)
-    echo Internal error with process_arg=$process_arg >&2
-    exit 1
-    ;;
-  esac
-
-  case $sawdashdash$file in
-  --implied-prefix | --prefix | -i)
-    process_arg=$file
-    continue
-    ;;
-  esac
-
-  # If we print anything whatsoever (even a blank line) while
-  # processing it, we've failed.
-  if check "$file"; then
-    :
-  else
-    pass=false
-    #list: set fnord "$@" "$file"
-    #list: shift
-  fi
-done
-
-case $process_arg in
-"") ;;
-*)
-  echo Missing argument to $process_arg >&2
-  exit 1
-  ;;
-esac
-
-#list: shift $n
-
-#list: exec test $# = 0
-$pass
-exit
diff --git a/helpers/DATA/linux-lts-saucy/firmware/.gitignore b/helpers/DATA/linux-lts-saucy/firmware/.gitignore
deleted file mode 100644
index d9c69017b..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.gen.S
-*.fw
-*.bin
-*.csp
-*.dsp
-ihex2fw
diff --git a/helpers/DATA/linux-lts-saucy/firmware/Makefile b/helpers/DATA/linux-lts-saucy/firmware/Makefile
deleted file mode 100644
index f3d9a7b6e..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/Makefile
+++ /dev/null
@@ -1,251 +0,0 @@
-#
-# kbuild file for firmware/
-#
-
-# Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
-# leading /, it's relative to $(srctree).
-fwdir := $(subst ",,$(CONFIG_EXTRA_FIRMWARE_DIR))
-fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
-
-fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
-
-# There are three cases to care about:
-# 1. Building kernel with CONFIG_FIRMWARE_IN_KERNEL=y -- $(fw-shipped-y) should
-#    include the firmware files to include, according to .config
-# 2. 'make modules_install', which will install firmware for modules, and 
-#    _also_ for the in-kernel drivers when CONFIG_FIRMWARE_IN_KERNEL=n
-# 3. 'make firmware_install', which installs all firmware, unconditionally.
-
-# For the former two cases we want $(fw-shipped-y) and $(fw-shipped-m) to be
-# accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
-# But be aware that the config file might not be included at all.
-
-ifdef CONFIG_ACENIC_OMIT_TIGON_I
-acenic-objs := $(DEBLOBBED)
-fw-shipped- += $(DEBLOBBED)
-else
-acenic-objs := $(DEBLOBBED) $(DEBLOBBED)
-endif
-fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
-fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += $(DEBLOBBED) \
-					 $(DEBLOBBED)
-fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
-fw-shipped-$(CONFIG_ATM_AMBASSADOR) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_BNX2X) += $(DEBLOBBED) \
-			      $(DEBLOBBED) \
-			      $(DEBLOBBED)
-fw-shipped-$(CONFIG_BNX2) += $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED)
-fw-shipped-$(CONFIG_CASSINI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_CHELSIO_T3) += $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_MGA) += $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_R128) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_RADEON) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
-fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_E100) += $(DEBLOBBED) $(DEBLOBBED) \
-			     $(DEBLOBBED)
-fw-shipped-$(CONFIG_MYRI_SBUS) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_PCNET) += $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_3C589) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_3C574) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SERIAL_8250_CS) += $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_ADVANSYS) += $(DEBLOBBED) $(DEBLOBBED) \
-				      $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += $(DEBLOBBED) $(DEBLOBBED) \
-					 $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_INFINIBAND_QIB) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_KORG1212) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_MAESTRO3) += $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_SB16_CSP) += $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) \
-				     $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_YMFPCI) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_WAVEFRONT) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_TEHUTI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_TIGON3) += $(DEBLOBBED) $(DEBLOBBED) \
-			       $(DEBLOBBED)
-fw-shipped-$(CONFIG_TYPHOON) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_EMI26) += $(DEBLOBBED) $(DEBLOBBED) \
-				  $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_EMI62) += $(DEBLOBBED) $(DEBLOBBED) \
-				  $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_KAWETH) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED)
-ifdef CONFIG_FIRMWARE_IN_KERNEL
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += $(DEBLOBBED)
-else
-fw-shipped- += $(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)	\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)		\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)		\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)
-endif
-fw-shipped-$(CONFIG_USB_SERIAL_TI) += $(DEBLOBBED) $(DEBLOBBED) \
-				      $(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += $(DEBLOBBED) $(DEBLOBBED) \
-					    $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += $(DEBLOBBED) $(DEBLOBBED) \
-					   # $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
-fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
-fw-shipped-$(CONFIG_USB_VICAM) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_VIDEO_CPIA2) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_YAM) += $(DEBLOBBED) $(DEBLOBBED)
-
-fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
-
-# Directories which we _might_ need to create, so we have a rule for them.
-firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
-
-quiet_cmd_mkdir = MKDIR   $(patsubst $(objtree)/%,%,$@)
-      cmd_mkdir = mkdir -p $@
-
-quiet_cmd_ihex  = IHEX    $@
-      cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
-
-quiet_cmd_ihex2fw  = IHEX2FW $@
-      cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
-
-quiet_cmd_h16tofw  = H16TOFW $@
-      cmd_h16tofw  = $(objtree)/$(obj)/ihex2fw -w $< $@
-
-quiet_cmd_fwbin = MK_FW   $@
-      cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)";		     \
-		  FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst	     \
-				firmware/%.gen.S,%,$@))))";		     \
-		  ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long);		     \
-		  ASM_ALIGN=$(if $(CONFIG_64BIT),3,2);			     \
-		  PROGBITS=$(if $(CONFIG_ARM),%,@)progbits;		     \
-		  echo "/* Generated by firmware/Makefile */"		> $@;\
-		  echo "    .section .rodata"				>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "_fw_$${FWSTR}_bin:"				>>$@;\
-		  echo "    .incbin \"$(2)\""				>>$@;\
-		  echo "_fw_end:"					>>$@;\
-		  echo "   .section .rodata.str,\"aMS\",$${PROGBITS},1"	>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "_fw_$${FWSTR}_name:"				>>$@;\
-		  echo "    .string \"$$FWNAME\""			>>$@;\
-		  echo "    .section .builtin_fw,\"a\",$${PROGBITS}"	>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "    $${ASM_WORD} _fw_$${FWSTR}_name"		>>$@;\
-		  echo "    $${ASM_WORD} _fw_$${FWSTR}_bin"		>>$@;\
-		  echo "    $${ASM_WORD} _fw_end - _fw_$${FWSTR}_bin"	>>$@;
-
-# One of these files will change, or come into existence, whenever
-# the configuration changes between 32-bit and 64-bit. The .S files
-# need to change when that happens.
-wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
-		include/config/ppc32.h include/config/ppc64.h \
-		include/config/superh32.h include/config/superh64.h \
-		include/config/x86_32.h include/config/x86_64.h)
-
-# Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
-# It'll end up depending on these targets, so make them a PHONY rule which
-# depends on _all_ the directories in $(firmware-dirs), and it'll work out OK.
-PHONY += $(objtree)/$$(%) $(objtree)/$(obj)/$$(%)
-$(objtree)/$$(%) $(objtree)/$(obj)/$$(%): $(firmware-dirs)
-	@true
-
-# For the $$(dir %) trick, where we need % to be expanded first.
-.SECONDEXPANSION:
-
-$(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps) \
-		| $(objtree)/$$(dir %)
-	$(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
-$(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
-		include/config/extra/firmware/dir.h | $(objtree)/$$(dir %)
-	$(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
-
-# The .o files depend on the binaries directly; the .S files don't.
-$(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
-$(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
-
-# .ihex is used just as a simple way to hold binary files in a source tree
-# where binaries are frowned upon. They are directly converted with objcopy.
-$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,ihex)
-
-# Don't depend on ihex2fw if we're installing and it already exists.
-# Putting it after | in the dependencies doesn't seem sufficient when
-# we're installing after a cross-compile, because ihex2fw has dependencies
-# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and 
-# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
-# is exported read-only for someone to run 'make install'.
-ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
-ihex2fw_dep :=
-else
-ihex2fw_dep := $(obj)/ihex2fw
-endif
-
-# .HEX is also Intel HEX, but where the offset and length in each record
-# is actually meaningful, because the firmware has to be loaded in a certain
-# order rather than as a single binary blob. Thus, we convert them into our
-# more compact binary representation of ihex records (<linux/ihex.h>)
-$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,ihex2fw)
-
-# .H16 is our own modified form of Intel HEX, with 16-bit length for records.
-$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,h16tofw)
-
-$(firmware-dirs):
-	$(call cmd,mkdir)
-
-obj-y				 += $(patsubst %,%.gen.o, $(fw-external-y))
-obj-$(CONFIG_FIRMWARE_IN_KERNEL) += $(patsubst %,%.gen.o, $(fw-shipped-y))
-
-# Remove .S files and binaries created from ihex
-# (during 'make clean' .config isn't included so they're all in $(fw-shipped-))
-targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
-				$(shell find $(obj) -name \*.gen.S 2>/dev/null))
-
-# Without this, built-in.o won't be created when it's empty, and the
-# final vmlinux link will fail.
-obj-n := dummy
-
-hostprogs-y := ihex2fw
diff --git a/helpers/DATA/linux-lts-saucy/firmware/README.AddingFirmware b/helpers/DATA/linux-lts-saucy/firmware/README.AddingFirmware
deleted file mode 100644
index 463b1e42b..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/README.AddingFirmware
+++ /dev/null
@@ -1,23 +0,0 @@
-
-	DO NOT ADD FIRMWARE TO THIS DIRECTORY.
-	======================================
-
-This directory is only here to contain firmware images extracted from old
-device drivers which predate the common use of request_firmware().
-
-As we update those drivers to use request_firmware() and keep a clean
-separation between code and firmware, we put the extracted firmware
-here.
-
-/*(DEBLOBBED)*/
-      Ben Hutchings <ben@decadent.org.uk>
-
-Your commit should include an update to the WHENCE file clearly
-identifying the licence under which the firmware is available, and
-that it is redistributable. If the licence is long and involved, it's
-permitted to include it in a separate file and refer to it from the
-WHENCE file.
-
-Ideally, your commit should contain a Signed-Off-By: from someone
-authoritative on the licensing of the firmware in question (i.e. from
-within the company that owns the code).
diff --git a/helpers/DATA/linux-lts-saucy/firmware/WHENCE b/helpers/DATA/linux-lts-saucy/firmware/WHENCE
deleted file mode 100644
index dd74f94c1..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/WHENCE
+++ /dev/null
@@ -1,61 +0,0 @@
-             **********
-             * WHENCE *
-             **********
-
-This file attempts to document the origin and licensing information,
-if known, for each piece of firmware distributed for use with the Linux
-kernel.
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: keyspan_pda -- USB Keyspan PDA single-port serial device
-
-File: keyspan_pda/keyspan_pda.fw
-Source: keyspan_pda/keyspan_pda.S
-
-File: keyspan_pda/xircom_pgs.fw
-Source: keyspan_pda/xircom_pgs.S
-
-Licence: GPLv2+
-
-Compiled from original 8051 source into Intel HEX, used in our binary ihex form.
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: ATARI_DSP56K - Atari DSP56k support
-
-File: dsp56k/bootstrap.bin
-Source: dsp56k/bootstrap.asm
-
-Licence: GPLv2 or later
-
-DSP56001 assembler, possibly buildable with a56 from 
-http://www.zdomain.com/a56.html
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: DVB AV7110 -- AV7110 cards
-
-File: av7110/bootcode.bin
-
-Licence: GPLv2 or later
-
-ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
diff --git a/helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_rx.bin.ihex b/helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_rx.bin.ihex
deleted file mode 100644
index dfb2abc3f..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_rx.bin.ihex
+++ /dev/null
@@ -1 +0,0 @@
-:/*(DEBLOBBED)*/
diff --git a/helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_tx.bin.ihex b/helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_tx.bin.ihex
deleted file mode 100644
index dfb2abc3f..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/adaptec/starfire_tx.bin.ihex
+++ /dev/null
@@ -1 +0,0 @@
-:/*(DEBLOBBED)*/
diff --git a/helpers/DATA/linux-lts-saucy/firmware/atmsar11.HEX b/helpers/DATA/linux-lts-saucy/firmware/atmsar11.HEX
deleted file mode 100644
index c9b880e0b..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/atmsar11.HEX
+++ /dev/null
@@ -1,14 +0,0 @@
-:/*(DEBLOBBED)*/
-/*
-  Madge Ambassador ATM Adapter microcode.
-  Copyright (C) 1995-1999  Madge Networks Ltd.
-
-  This microcode data is placed under the terms of the GNU General
-  Public License. The GPL is contained in /usr/doc/copyright/GPL on a
-  Debian system and in the file COPYING in the Linux kernel source.
-
-  We would prefer you not to distribute modified versions without
-  consultation and not to ask for assembly/other microcode source.
-*/
-
-First record is start address in a __be32.
diff --git a/helpers/DATA/linux-lts-saucy/firmware/av7110/Boot.S b/helpers/DATA/linux-lts-saucy/firmware/av7110/Boot.S
deleted file mode 100644
index d562fdc29..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/av7110/Boot.S
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-   Boot.S: boot loader for Siemens DVB-S card
-
-   Copyright (C) 2001 Convergence integrated media GmbH
-	              Written by Ralph Metzler
-		                 <rjkm@convergence.de>
-   Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
-
-   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 the Free Software Foundation; either version 2
-   of the License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
-
-*/
-
-/*
-	check AV711x_3_1.pdf for some hardware infos
-	build it with :
-	$ cc -mbig-endian -c Boot.S
-	$ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
-	$ objcopy -Obinary Boot
-*/
-
-	.text
-	.align
-	.globl _start
-_start:
-	b reset			// reset vector
-	movs  pc, r14           // undefined
-	subs  pc, r14, #4       // SWI
-	subs  pc, r14, #4       // prefetch abort
-	subs  pc, r14, #8       // data abort
-	subs  pc, r14, #4       // reserved
-	subs  pc, r14, #4       // IRQ
-	subs  pc, r14, #4       // FIQ
-
-	.word tbl               // table needed by firmware ROM
-tbl:	.word (endtbl - tbl)
-	.word 0
-  	.word conf
-endtbl:	.word 0
-conf:	.word 0xa5a55a5a
-	.word 0x001f1555
-	.word 0x00000009
-
-reset:	ldr	r13, buffer
-	ldr	r4, flag
-	mov	r0, #0
-	str	r0, [r4]
-	str	r0, [r4, #4]
-
-	ldr		r1, wait_address
-	ldr		r2, flag_address
-	ldr		r3, sram
-
-copycode: // copy the code HW Sram
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
-	cmp		r1, r2
-	ble 	copycode
-	ldr		pc, sram // jump to the copied code
-
-wait:	ldrh	r1, [r4]        // wait for flag!=0
- 	cmp	r1, #0
-	beq	wait
-
-	mov	r1, r13         // buffer address
- 	ldr	r3, [r4,#4]     // destaddr
-
- 	ldrh	r2, [r4,#2]     // get segment length
-	add     r2, r2, #63     // round length to next 64 bytes
-	movs	r2, r2, lsr #6  // and divide by 64
-	moveq	r0, #2          // if 0, set flag to 2, else signal
-	strh	r0, [r4]        // that buffer is accepted by setting to 0
-        beq wait
-	
-copyloop:
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
- 	subs	r2, r2, #1
- 	bne	copyloop
-
-	eor     r13, r13, #0x1400    // switch to other buffer
-	b	wait
-
-// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
-// destaddr at 0x2c0003fc
-
-flag:	.word	0x2c0003f8
-
-
-// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
-
-buffer:	.word	0x2c000400
-
-sram: .word   0x9e000800
-wait_address: .word   wait
-flag_address: .word   flag
diff --git a/helpers/DATA/linux-lts-saucy/firmware/av7110/bootcode.bin.ihex b/helpers/DATA/linux-lts-saucy/firmware/av7110/bootcode.bin.ihex
deleted file mode 100644
index 26a2993e0..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/av7110/bootcode.bin.ihex
+++ /dev/null
@@ -1,15 +0,0 @@
-:10000000EA00000EE1B0F00EE25EF004E25EF00401
-:10001000E25EF008E25EF004E25EF004E25EF0040C
-:100020002C0000240000000C000000002C00003414
-:1000300000000000A5A55A5A001F15550000000930
-:10004000E59FD07CE59F4074E3A00000E5840000BC
-:10005000E5840004E59F1070E59F2070E59F306403
-:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
-:10007000E59FF050E1D410B0E35100000AFFFFFC0F
-:10008000E1A0100DE5943004E1D420B2E282203FDB
-:10009000E1B0232203A00002E1C400B00AFFFFF494
-:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
-:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
-:1000C0002C0003F82C0004009E0008002C00007493
-:0400D0002C0000C040
-:00000001FF
diff --git a/helpers/DATA/linux-lts-saucy/firmware/cis/.gitignore b/helpers/DATA/linux-lts-saucy/firmware/cis/.gitignore
deleted file mode 100644
index 1de39847f..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/cis/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.cis
diff --git a/helpers/DATA/linux-lts-saucy/firmware/cpia2/stv0672_vp4.bin.ihex b/helpers/DATA/linux-lts-saucy/firmware/cpia2/stv0672_vp4.bin.ihex
deleted file mode 100644
index 866b76faa..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/cpia2/stv0672_vp4.bin.ihex
+++ /dev/null
@@ -1,21 +0,0 @@
-:/*(DEBLOBBED)*/
-
-  Copyright 2001, STMicrolectronics, Inc.
-  Contact:  steve.miller@st.com
-
-  Description:
-     This file contains patch data for the CPiA2 (stv0672) VP4.
-
-  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
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.asm b/helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.asm
deleted file mode 100644
index a411047e6..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.asm
+++ /dev/null
@@ -1,98 +0,0 @@
-; Author: Frederik Noring <noring@nocrew.org>
-;
-; This file is subject to the terms and conditions of the GNU General Public
-; License.  See the file COPYING in the main directory of this archive
-; for more details.
-
-; DSP56k loader
-
-; Host Interface
-M_BCR   EQU     $FFFE           ; Port A Bus Control Register
-M_PBC   EQU     $FFE0           ; Port B Control Register
-M_PBDDR EQU     $FFE2           ; Port B Data Direction Register
-M_PBD   EQU     $FFE4           ; Port B Data Register
-M_PCC   EQU     $FFE1           ; Port C Control Register
-M_PCDDR EQU     $FFE3           ; Port C Data Direction Register
-M_PCD   EQU     $FFE5           ; Port C Data Register
-
-M_HCR   EQU     $FFE8           ; Host Control Register
-M_HSR   EQU     $FFE9           ; Host Status Register
-M_HRX   EQU     $FFEB           ; Host Receive Data Register
-M_HTX   EQU     $FFEB           ; Host Transmit Data Register
-
-; SSI, Synchronous Serial Interface
-M_RX    EQU     $FFEF           ; Serial Receive Data Register
-M_TX    EQU     $FFEF           ; Serial Transmit Data Register
-M_CRA   EQU     $FFEC           ; SSI Control Register A
-M_CRB   EQU     $FFED           ; SSI Control Register B
-M_SR    EQU     $FFEE           ; SSI Status Register
-M_TSR   EQU     $FFEE           ; SSI Time Slot Register
-
-; Exception Processing
-M_IPR   EQU     $FFFF           ; Interrupt Priority Register
-
-        org     P:$0
-start   jmp     <$40
-
-        org     P:$40
-;       ; Zero 16384 DSP X and Y words
-;       clr     A #0,r0
-;       clr     B #0,r4
-;       do      #64,<_block1
-;       rep     #256
-;       move    A,X:(r0)+ B,Y:(r4)+
-;_block1        ; Zero (32768-512) Program words
-;       clr     A #512,r0
-;       do      #126,<_block2
-;       rep     #256
-;       move    A,P:(r0)+
-;_block2
-
-        ; Copy DSP program control
-        move    #real,r0
-        move    #upload,r1
-        do      #upload_end-upload,_copy
-        movem    P:(r0)+,x0
-        movem    x0,P:(r1)+
-_copy   movep   #4,X:<<M_HCR
-        movep   #$c00,X:<<M_IPR
-        and     #<$fe,mr
-        jmp     upload
-
-real
-        org     P:$7ea9
-upload
-        movep   #1,X:<<M_PBC
-        movep   #0,X:<<M_BCR
-
-next    jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,A
-        move    #>3,x0
-        cmp     x0,A #>1,x0
-        jeq     <$0
-_get_address
-        jclr    #0,X:<<M_HSR,_get_address
-        movep   X:<<M_HRX,r0
-_get_length
-        jclr    #0,X:<<M_HSR,_get_length
-        movep   X:<<M_HRX,y0
-        cmp     x0,A #>2,x0
-        jeq     load_X
-        cmp     x0,A
-        jeq     load_Y
-
-load_P  do      y0,_load_P
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,P:(r0)+
-_load_P jmp     next
-load_X  do      y0,_load_X
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,X:(r0)+
-_load_X jmp     next
-load_Y  do      y0,_load_Y
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,Y:(r0)+
-_load_Y jmp     next
-
-upload_end
-        end
diff --git a/helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.bin.ihex b/helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.bin.ihex
deleted file mode 100644
index 233f21fe7..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/dsp56k/bootstrap.bin.ihex
+++ /dev/null
@@ -1,26 +0,0 @@
-:100000000C004000000000000000000000000000A4
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C00060F40000004F61F400007EA9062E80005D
-:1000D000004707D88407598408F4A800000408F4EE
-:1000E000BF000C0000FEB80AF080007EA908F4A052
-:1000F00000000108F4BE0000000AA980007EAD08DF
-:100100004E2B44F40000000344F4450000010EA00F
-:10011000000AA980007EB508502B0AA980007EB88D
-:1001200008462B44F4450000020AF0AA007EC920CC
-:1001300000450AF0AA007ED006C600007EC60AA9C5
-:1001400080007EC408586B0AF080007EAD06C600B1
-:10015000007ECD0AA980007ECB0858AB0AF0800053
-:100160007EAD06C600007ED40AA980007ED2085863
-:07017000EB0AF080007EADF8
-:00000001FF
-/* DSP56001 bootstrap code */
diff --git a/helpers/DATA/linux-lts-saucy/firmware/edgeport/boot.H16 b/helpers/DATA/linux-lts-saucy/firmware/edgeport/boot.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/edgeport/boot.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-saucy/firmware/edgeport/boot2.H16 b/helpers/DATA/linux-lts-saucy/firmware/edgeport/boot2.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/edgeport/boot2.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-saucy/firmware/edgeport/down.H16 b/helpers/DATA/linux-lts-saucy/firmware/edgeport/down.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/edgeport/down.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-saucy/firmware/edgeport/down2.H16 b/helpers/DATA/linux-lts-saucy/firmware/edgeport/down2.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/edgeport/down2.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-saucy/firmware/edgeport/down3.bin.ihex b/helpers/DATA/linux-lts-saucy/firmware/edgeport/down3.bin.ihex
deleted file mode 100644
index 6597b8df0..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/edgeport/down3.bin.ihex
+++ /dev/null
@@ -1,6 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport Binary Image (for TI based products)
-//* Generated by TIBin2C v2.00 (watchport)
-//* Copyright (C) 2001 Inside Out Networks, All rights reserved.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-saucy/firmware/ihex2fw.c b/helpers/DATA/linux-lts-saucy/firmware/ihex2fw.c
deleted file mode 100644
index cf38e1591..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/ihex2fw.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Parser/loader for IHEX formatted data.
- *
- * Copyright © 2008 David Woodhouse <dwmw2@infradead.org>
- * Copyright © 2005 Jan Harkes <jaharkes@cs.cmu.edu>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <stdint.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-
-struct ihex_binrec {
-	struct ihex_binrec *next; /* not part of the real data structure */
-        uint32_t addr;
-        uint16_t len;
-        uint8_t data[];
-};
-
-/**
- * nybble/hex are little helpers to parse hexadecimal numbers to a byte value
- **/
-static uint8_t nybble(const uint8_t n)
-{
-       if      (n >= '0' && n <= '9') return n - '0';
-       else if (n >= 'A' && n <= 'F') return n - ('A' - 10);
-       else if (n >= 'a' && n <= 'f') return n - ('a' - 10);
-       return 0;
-}
-
-static uint8_t hex(const uint8_t *data, uint8_t *crc)
-{
-       uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);
-       *crc += val;
-       return val;
-}
-
-static int process_ihex(uint8_t *data, ssize_t size);
-static void file_record(struct ihex_binrec *record);
-static int output_records(int outfd);
-
-static int sort_records = 0;
-static int wide_records = 0;
-static int include_jump = 0;
-
-static int usage(void)
-{
-	fprintf(stderr, "ihex2fw: Convert ihex files into binary "
-		"representation for use by Linux kernel\n");
-	fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
-	fprintf(stderr, "       -w: wide records (16-bit length)\n");
-	fprintf(stderr, "       -s: sort records by address\n");
-	fprintf(stderr, "       -j: include records for CS:IP/EIP address\n");
-	return 1;
-}
-
-int main(int argc, char **argv)
-{
-	int infd, outfd;
-	struct stat st;
-	uint8_t *data;
-	int opt;
-
-	while ((opt = getopt(argc, argv, "wsj")) != -1) {
-		switch (opt) {
-		case 'w':
-			wide_records = 1;
-			break;
-		case 's':
-			sort_records = 1;
-			break;
-		case 'j':
-			include_jump = 1;
-			break;
-			return usage();
-		}
-	}
-
-	if (optind + 2 != argc)
-		return usage();
-
-	if (!strcmp(argv[optind], "-"))
-	    infd = 0;
-	else
-		infd = open(argv[optind], O_RDONLY);
-	if (infd == -1) {
-		fprintf(stderr, "Failed to open source file: %s",
-			strerror(errno));
-		return usage();
-	}
-	if (fstat(infd, &st)) {
-		perror("stat");
-		return 1;
-	}
-	data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
-	if (data == MAP_FAILED) {
-		perror("mmap");
-		return 1;
-	}
-
-	if (!strcmp(argv[optind+1], "-"))
-	    outfd = 1;
-	else
-		outfd = open(argv[optind+1], O_TRUNC|O_CREAT|O_WRONLY, 0644);
-	if (outfd == -1) {
-		fprintf(stderr, "Failed to open destination file: %s",
-			strerror(errno));
-		return usage();
-	}
-	if (process_ihex(data, st.st_size))
-		return 1;
-
-	return output_records(outfd);
-}
-
-static int process_ihex(uint8_t *data, ssize_t size)
-{
-	struct ihex_binrec *record;
-	uint32_t offset = 0;
-	uint32_t data32;
-	uint8_t type, crc = 0, crcbyte = 0;
-	int i, j;
-	int line = 1;
-	int len;
-
-	i = 0;
-next_record:
-	/* search for the start of record character */
-	while (i < size) {
-		if (data[i] == '\n') line++;
-		if (data[i++] == ':') break;
-	}
-
-	/* Minimum record length would be about 10 characters */
-	if (i + 10 > size) {
-		fprintf(stderr, "Can't find valid record at line %d\n", line);
-		return -EINVAL;
-	}
-
-	len = hex(data + i, &crc); i += 2;
-	if (wide_records) {
-		len <<= 8;
-		len += hex(data + i, &crc); i += 2;
-	}
-	record = malloc((sizeof (*record) + len + 3) & ~3);
-	if (!record) {
-		fprintf(stderr, "out of memory for records\n");
-		return -ENOMEM;
-	}
-	memset(record, 0, (sizeof(*record) + len + 3) & ~3);
-	record->len = len;
-
-	/* now check if we have enough data to read everything */
-	if (i + 8 + (record->len * 2) > size) {
-		fprintf(stderr, "Not enough data to read complete record at line %d\n",
-			line);
-		return -EINVAL;
-	}
-
-	record->addr  = hex(data + i, &crc) << 8; i += 2;
-	record->addr |= hex(data + i, &crc); i += 2;
-	type = hex(data + i, &crc); i += 2;
-
-	for (j = 0; j < record->len; j++, i += 2)
-		record->data[j] = hex(data + i, &crc);
-
-	/* check CRC */
-	crcbyte = hex(data + i, &crc); i += 2;
-	if (crc != 0) {
-		fprintf(stderr, "CRC failure at line %d: got 0x%X, expected 0x%X\n",
-			line, crcbyte, (unsigned char)(crcbyte-crc));
-		return -EINVAL;
-	}
-
-	/* Done reading the record */
-	switch (type) {
-	case 0:
-		/* old style EOF record? */
-		if (!record->len)
-			break;
-
-		record->addr += offset;
-		file_record(record);
-		goto next_record;
-
-	case 1: /* End-Of-File Record */
-		if (record->addr || record->len) {
-			fprintf(stderr, "Bad EOF record (type 01) format at line %d",
-				line);
-			return -EINVAL;
-		}
-		break;
-
-	case 2: /* Extended Segment Address Record (HEX86) */
-	case 4: /* Extended Linear Address Record (HEX386) */
-		if (record->addr || record->len != 2) {
-			fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
-				type, line);
-			return -EINVAL;
-		}
-
-		/* We shouldn't really be using the offset for HEX86 because
-		 * the wraparound case is specified quite differently. */
-		offset = record->data[0] << 8 | record->data[1];
-		offset <<= (type == 2 ? 4 : 16);
-		goto next_record;
-
-	case 3: /* Start Segment Address Record */
-	case 5: /* Start Linear Address Record */
-		if (record->addr || record->len != 4) {
-			fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
-				type, line);
-			return -EINVAL;
-		}
-
-		memcpy(&data32, &record->data[0], sizeof(data32));
-		data32 = htonl(data32);
-		memcpy(&record->data[0], &data32, sizeof(data32));
-
-		/* These records contain the CS/IP or EIP where execution
-		 * starts. If requested output this as a record. */
-		if (include_jump)
-			file_record(record);
-		goto next_record;
-
-	default:
-		fprintf(stderr, "Unknown record (type %02X)\n", type);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static struct ihex_binrec *records;
-
-static void file_record(struct ihex_binrec *record)
-{
-	struct ihex_binrec **p = &records;
-
-	while ((*p) && (!sort_records || (*p)->addr < record->addr))
-		p = &((*p)->next);
-
-	record->next = *p;
-	*p = record;
-}
-
-static int output_records(int outfd)
-{
-	unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0};
-	struct ihex_binrec *p = records;
-
-	while (p) {
-		uint16_t writelen = (p->len + 9) & ~3;
-
-		p->addr = htonl(p->addr);
-		p->len = htons(p->len);
-		if (write(outfd, &p->addr, writelen) != writelen)
-			return 1;
-		p = p->next;
-	}
-	/* EOF record is zero length, since we don't bother to represent
-	   the type field in the binary version */
-	if (write(outfd, zeroes, 6) != 6)
-		return 1;
-	return 0;
-}
diff --git a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.HEX b/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.HEX
deleted file mode 100644
index 6fcf02bb4..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.HEX
+++ /dev/null
@@ -1,83 +0,0 @@
-:03000000020200F9
-:0400230002055F0073
-:0400430002010000B6
-:050030000000000000CB
-:10010000020296000200000002000000020000004F
-:1001100002000000020000000200000002000000D7
-:1001200002000000020000000204610002048900D5
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC7402907F9DF07400907FC0
-:1002300097F07486907F9EF0907F957403F0907F86
-:10024000AFE0D2E0F07401907FABF0907FAEF09021
-:100250007FAC7404F0907FAD7404F0907FC9F074AB
-:1002600084907F98F07400F59875C8307B059120D4
-:10027000D2CA759850D2E8D2AFD2AC7400F586904D
-:100280007FD67402F0792E7A007B00DBFEDAFAD991
-:10029000F67406F080FEC086C082C083C084C0852C
-:1002A000C0E0E591C2E4F591907FAB7401F0907FDE
-:1002B000E8E0F9A3E0FAA3E0FBA3E0FCE95460B4B2
-:1002C0000003020339B4406EBA000B12042040034D
-:1002D00002040202040ABA010302040ABA02030277
-:1002E000040ABA0303020444BA041EBB000A907F46
-:1002F00095E04402F0020402907F98E054FDF090F3
-:100300007F95E054FDF0020402BA050302040ABA24
-:100310000619BB0008E533D395320203DEBB0108A2
-:10032000E532C395330203DE02040ABA07058B34B3
-:1003300002040202040A02040ABA0020B9801090E2
-:100340007F00E4F0A3F0907FB57402F0020402B9DC
-:10035000820280EBB9810280E602040ABA010FBB77
-:10036000000302040ABB010302040202040ABA03E6
-:100370000FBB000302040ABB010302040202040AC9
-:10038000BA0656BC010F907FD47406F0907FD574E6
-:1003900012F0020402BC0212BB006F907FD47406FC
-:1003A000F0907FD57424F0020402BC03297404C3C6
-:1003B0009B40576055EB2B9006442582F5827400D4
-:1003C0003583F583E0F9A3E0FA907FD4E9F0907FDC
-:1003D000D5EAF002040202040ABA080F7401907F01
-:1003E00000F07401907FB5F0020402BA0903020420
-:1003F00002BA0A0574000203DEBA0B030204020209
-:10040000040A907FB47402F08009907FB4E0440144
-:10041000F08000D0E0D085D084D083D082D08632E6
-:10042000EB20E71EC3940A5019EB2324FEF58274D7
-:10043000053400F583E0F5CBF5CDA3E0F5CAF5CCA6
-:10044000C322D322B94111EB64FF5484FB907F98FF
-:10045000E0547B4BF0020402907F9BE064FF0203B8
-:10046000DEC086C082C083C084C085C0E0E591C282
-:10047000E4F591907FA97404F01205A0D0E0D08536
-:10048000D084D083D082D08632C086C082C083C060
-:1004900084C085C0E0E591C2E4F591907FAA740420
-:1004A000F0907FC9E0F9E4F586907DC075851085F0
-:1004B0003284E005860584F0E584B53302800905C1
-:1004C000320586A3D9EC8000907FC9F0B131D0E02D
-:1004D000D085D084D083D082D08632E4F586907FD8
-:1004E000BCE020E14B907D00E532F0A3E533F0A3C2
-:1004F000E530F0A3E531F0A3E430000104F0A305FA
-:10050000869010007910E0A30586F0A30586D9F641
-:10051000058674FCF0A305869011007910E0A30510
-:1005200086F0A30586D9F6E4F586907FBD7426F0A3
-:1005300022200013E532B53301220533758310857F
-:100540003382E0F599D2007400B5340122E533D34B
-:100550009532C3953440F5753400D2010205A0C030
-:1005600086C082C083C084C085C0E0309907C2992C
-:10057000C20012053430980512058AC298D0E0D026
-:1005800085D084D083D082D0863275831185308225
-:100590000582E599F0E582B53101220530B1A0224E
-:1005A000907FB8E020E138200136E530B5310122F6
-:1005B000E4F5867583110586907E00F0A3058679A3
-:1005C00001E530B5310280100531853182E00586C4
-:1005D000F0A3058609B940E9907FB9E96001F022EE
-:1005E000C201E4F586907E007401F0A37402F090DD
-:1005F0007FB9F022C299F5993099FDC29922E55E42
-:10060000F63CFD8FFEC8FF64FFB2FFD9FFEDFFF39C
-:10061000FFFA12010001FFFFFF40CD06040189AB84
-:1006200001020301090220000101008032090400D7
-:100630000002FFFFFF0007058203400001070502DB
-:1006400002400000064C0650067206A0040300009B
-:100650002203410043004D00450020007500730057
-:100660006200200077006900640067006500740084
-:1006700073002E03410043004D004500200055004B
-:1006800053004200200073006500720069006100A1
-:100690006C0020007700690064006700650074004A
-:0606A000060334003700E0
-:00000001FF
diff --git a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.S b/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.S
deleted file mode 100644
index f3acc197a..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/keyspan_pda.S
+++ /dev/null
@@ -1,1124 +0,0 @@
-/*  $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- * 
- *  Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- *  the EzUSB microcontroller.
- * 
- *  (C) Copyright 2000 Brian Warner <warner@lothar.com>
- * 
- * 	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
- * 	the Free Software Foundation; either version 2 of the License, or
- * 	(at your option) any later version.
- * 
- *  "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- *  company.
- * 
- *  This serial adapter is basically an EzUSB chip and an RS-232 line driver
- *  in a little widget that has a DB-9 on one end and a USB plug on the other.
- *  It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- *  as a baud-rate generator. The wiring is:
- *   PC0/RxD0 <- rxd (DB9 pin 2)         PC4 <- dsr pin 6
- *   PC1/TxD0 -> txd pin 3               PC5 <- ri  pin 9
- *   PC2      -> rts pin 7               PC6 <- dcd pin 1
- *   PC3      <- cts pin 8               PC7 -> dtr pin 4
- *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
- * 
- * THEORY OF OPERATION:
- *
- *   There are two 256-byte ring buffers, one for tx, one for rx.
- *
- *   EP2out is pure tx data. When it appears, the data is copied into the tx
- *   ring and serial transmission is started if it wasn't already running. The
- *   "tx buffer empty" interrupt may kick off another character if the ring
- *   still has data. If the host is tx-blocked because the ring filled up,
- *   it will request a "tx unthrottle" interrupt. If sending a serial character
- *   empties the ring below the desired threshold, we set a bit that will send
- *   up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- *   EP2in (interrupt) is used to send both rx chars and rx status messages
- *   (only "tx unthrottle" at this time) back up to the host. The first byte
- *   of the rx message indicates data (0) or status msg (1). Status messages
- *   are sent before any data.
- *
- *   Incoming serial characters are put into the rx ring by the serial
- *   interrupt, and the EP2in buffer sent if it wasn't already in transit.
- *   When the EP2in buffer returns, the interrupt prompts us to send more
- *   rx chars (or status messages) if they are pending.
- *
- *   Device control happens through "vendor specific" control messages on EP0.
- *   All messages are destined for the "Interface" (with the index always 0,
- *   so that if their two-port device might someday use similar firmware, we
- *   can use index=1 to refer to the second port). The messages defined are:
- *
- *    bRequest = 0 : set baud/bits/parity
- *               1 : unused
- *               2 : reserved for setting HW flow control (CTSRTS)
- *               3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- *               4 : set break (on/off)
- *               5 : reserved for requesting interrupts on pin state change
- *               6 : query buffer room or chars in tx buffer
- *               7 : request tx unthrottle interrupt
- *
- *  The host-side driver is set to recognize the device ID values stashed in
- *  serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- *  start it running. This firmware will use EzUSB's "renumeration" trick by
- *  simulating a bus disconnect, then reconnect with a different device ID
- *  (encoded in the desc_device descriptor below). The host driver then
- *  recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- *  EzUSB Technical Reference Manual: <http://www.cypress.com/>
- *  8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- *   basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- *   use totally different registers!
- *  USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- *  AnchorChips, for making such an incredibly useful little microcontroller.
- *  KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- *           apart and trace with an ohmmeter.
- *
- * TODO:
- *  lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- *  control. Interrupting host upon change in DCD, etc, counting transitions.
- *  Need to find a safe device id to use (the one used by the Keyspan firmware
- *  under Windows would be ideal.. can anyone figure out what it is?). Parity.
- *  More baud rates. Oh, and the string-descriptor-length silicon bug
- *  workaround should be implemented, but I'm lazy, and the consequence is
- *  that the device name strings that show up in your kernel log will have
- *  lots of trailing binary garbage in them (appears as ????). Device strings
- *  should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- *  -Brian Warner <warner@lothar.com>
- *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTCCFG #0x7f95
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
-	.org 0
-	ljmp start
-	;; interrupt vectors
-	.org 23H
-	ljmp serial_int
-	.byte 0
-	
-	.org 43H
-	ljmp USB_Jump_Table
-	.byte 0			; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
-rx_ring_in:	.byte 0
-rx_ring_out:	.byte 0
-tx_ring_in:	.byte 0
-tx_ring_out:	.byte 0
-tx_unthrottle_threshold:	.byte 0
-		
-	.org 0x100H		; wants to be on a page boundary
-USB_Jump_Table:
-	ljmp	ISR_Sudav	; Setup Data Available
-	.byte 0
-	ljmp	0		; Start of Frame
-	.byte 0
-	ljmp	0		; Setup Data Loading
-	.byte 0
-	ljmp	0		; Global Suspend
-	.byte 	0
-	ljmp	0		; USB Reset  	
-	.byte	0
-	ljmp	0		; Reserved
-	.byte	0
-	ljmp	0		; End Point 0 In
-	.byte	0
-	ljmp	0		; End Point 0 Out
-	.byte	0
-	ljmp	0		; End Point 1 In
-	.byte	0
-	ljmp	0		; End Point 1 Out
-	.byte	0
-	ljmp	ISR_Ep2in
-	.byte	0
-	ljmp	ISR_Ep2out
-	.byte	0
-
-
-	.org 0x200
-		
-start:	mov SP,STACK-1 ; set stack
-	;; clear local variables
-	clr a
-	mov tx_ring_in, a
-	mov tx_ring_out, a
-	mov rx_ring_in, a
-	mov rx_ring_out, a
-	mov tx_unthrottle_threshold, a
-	clr TX_RUNNING
-	clr DO_TX_UNTHROTTLE
-	
-	;; clear fifo with "fe"
-	mov r1, 0
-	mov a, #0xfe
-	mov dptr, #tx_ring
-clear_tx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_tx_ring_loop
-
-	mov a, #0xfd
-	mov dptr, #rx_ring
-clear_rx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-	;; set OEB.1
-	mov a, #02H
-	mov dptr,OEB
-	movx @dptr,a
-	;; clear PB1
-	mov a, #00H
-	mov dptr,OUTB
-	movx @dptr,a
-	;; set OEC.[127]
-	mov a, #0x86
-	mov dptr,OEC
-	movx @dptr,a
-	;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
-	mov dptr, PORTCCFG
-	mov a, #0x03
-	movx @dptr, a
-	
-	;; set up interrupts, autovectoring
-	mov dptr, USBBAV
-	movx a,@dptr
-	setb acc.0		; AVEN bit to 0
-	movx @dptr, a
-
-	mov a,#0x01		; enable SUDAV:	setup data available (for ep0)
-	mov dptr, USBIRQ
-	movx @dptr, a		; clear SUDAVI
-	mov dptr, USBIEN
-	movx @dptr, a
-	
-	mov dptr, IN07IEN
-	mov a,#0x04		; enable IN2 int
-	movx @dptr, a
-	
-	mov dptr, OUT07IEN
-	mov a,#0x04		; enable OUT2 int
-	movx @dptr, a
-	mov dptr, OUT2BC
-	movx @dptr, a		; arm OUT2
-
-	mov a, #0x84		; turn on RTS, DTR
-	mov dptr,OUTC
-	movx @dptr, a
-	;; setup the serial port. 9600 8N1.
-	mov a,#01010011		; mode 1, enable rx, clear int
-	mov SCON, a
-	;;  using timer2, in 16-bit baud-rate-generator mode
-	;;   (xtal 12MHz, internal fosc 24MHz)
-	;;  RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
-	;;  57600: 0xFFF2.F, say 0xFFF3
-	;;   9600: 0xFFB1.E, say 0xFFB2
-	;;    300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
-	mov r3, #5
-	acall set_baud
-	setb TR2
-	mov SCON, #050h
-	
-#if 0
-	mov r1, #0x40
-	mov a, #0x41
-send:	
-	mov SBUF, a
-	inc a
-	anl a, #0x3F
-	orl a, #0x40
-;	xrl a, #0x02
-wait1:	
-	jnb TI, wait1
-	clr TI
-	djnz r1, send
-;done:	sjmp done
-
-#endif
-	
-	setb EUSB
-	setb EA
-	setb ES0
-	;acall dump_stat
-
-	;; hey, what say we RENUMERATE! (TRM p.62)
-	mov a, #0
-	mov dps, a
-	mov dptr, USBCS
-	mov a, #0x02		; DISCON=0, DISCOE=0, RENUM=1
-	movx @dptr, a
-	;; now presence pin is floating, simulating disconnect. wait 0.5s
-	mov r1, #46
-renum_wait1:
-	mov r2, #0
-renum_wait2:
-	mov r3, #0
-renum_wait3:
-	djnz r3, renum_wait3
-	djnz r2, renum_wait2
-	djnz r1, renum_wait1	; wait about n*(256^2) 6MHz clocks
-	mov a, #0x06		; DISCON=0, DISCOE=1, RENUM=1
-	movx @dptr, a
-	;; we are back online. the host device will now re-query us
-	
-	
-main:	sjmp main
-
-	
-
-ISR_Sudav:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
-	movx @dptr,a
-
-	;; get request type
-	mov dptr, SETUPDAT
-	movx a, @dptr
-	mov r1, a		; r1 = bmRequestType
-	inc dptr
-	movx a, @dptr
-	mov r2, a		; r2 = bRequest
-	inc dptr
-	movx a, @dptr
-	mov r3, a		; r3 = wValueL
-	inc dptr
-	movx a, @dptr
-	mov r4, a		; r4 = wValueH
-
-	;; main switch on bmRequest.type: standard or vendor
-	mov a, r1
-	anl a, #0x60
-	cjne a, #0x00, setup_bmreq_type_not_standard
-	;; standard request: now main switch is on bRequest
-	ljmp setup_bmreq_is_standard
-	
-setup_bmreq_type_not_standard:	
-	;; a still has bmreq&0x60
-	cjne a, #0x40, setup_bmreq_type_not_vendor
-	;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
-	;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
-	cjne r2, #0x00, setup_ctrl_not_00
-	;; 00 is set baud, wValue[0] has baud rate index
-	lcall set_baud		; index in r3, carry set if error
-	jc setup_bmreq_type_not_standard__do_stall
-	ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
-	ljmp setup_stall
-setup_ctrl_not_00:
-	cjne r2, #0x01, setup_ctrl_not_01
-	;; 01 is reserved for set bits (parity). TODO
-	ljmp setup_stall
-setup_ctrl_not_01:
-	cjne r2, #0x02, setup_ctrl_not_02
-	;; 02 is set HW flow control. TODO
-	ljmp setup_stall
-setup_ctrl_not_02:
-	cjne r2, #0x03, setup_ctrl_not_03
-	;; 03 is control pins (RTS, DTR).
-	ljmp control_pins	; will jump to setup_done_ack,
-				;  or setup_return_one_byte
-setup_ctrl_not_03:
-	cjne r2, #0x04, setup_ctrl_not_04
-	;; 04 is send break (really "turn break on/off"). TODO
-	cjne r3, #0x00, setup_ctrl_do_break_on
-	;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	orl a, #0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_do_break_on:
-	;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
-	mov dptr, OUTC
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_not_04:
-	cjne r2, #0x05, setup_ctrl_not_05
-	;; 05 is set desired interrupt bitmap. TODO
-	ljmp setup_stall
-setup_ctrl_not_05:
-	cjne r2, #0x06, setup_ctrl_not_06
-	;; 06 is query room
-	cjne r3, #0x00, setup_ctrl_06_not_00
-	;; 06, wValue[0]=0 is query write_room
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in	; out-1-in = 255 - (in-out)
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
-	cjne r3, #0x01, setup_ctrl_06_not_01
-	;; 06, wValue[0]=1 is query chars_in_buffer
-	mov a, tx_ring_in
-	clr c
-	subb a, tx_ring_out	; in-out
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_01:	
-	ljmp setup_stall
-setup_ctrl_not_06:
-	cjne r2, #0x07, setup_ctrl_not_07
-	;; 07 is request tx unthrottle interrupt
-	mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
-	ljmp setup_done_ack
-setup_ctrl_not_07:
-	ljmp setup_stall
-	
-setup_bmreq_type_not_vendor:
-	ljmp setup_stall
-
-
-setup_bmreq_is_standard:	
-	cjne r2, #0x00, setup_breq_not_00
-	;; 00:	Get_Status (sub-switch on bmRequestType: device, ep, int)
-	cjne r1, #0x80, setup_Get_Status_not_device
-	;; Get_Status(device)
-	;;  are we self-powered? no. can we do remote wakeup? no
-	;;   so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
-	mov dptr, IN0BUF
-	clr a
-	movx @dptr, a
-	inc dptr
-	movx @dptr, a
-	mov dptr, IN0BC
-	mov a, #2
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Status_not_device:
-	cjne r1, #0x82, setup_Get_Status_not_endpoint
-	;; Get_Status(endpoint)
-	;;  must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
-	;; for now: cheat. TODO
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
-	cjne r1, #0x81, setup_Get_Status_not_interface
-	;; Get_Status(interface): return two zeros
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:	
-	ljmp setup_stall
-	
-setup_breq_not_00:
-	cjne r2, #0x01, setup_breq_not_01
-	;; 01:	Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Clear_Feature_not_stall
-	;; Clear_Feature(stall). should clear a stall bit. TODO
-	ljmp setup_stall
-setup_Clear_Feature_not_stall:
-	cjne r3, #0x01, setup_Clear_Feature_not_rwake
-	;; Clear_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_01:
-	cjne r2, #0x03, setup_breq_not_03
-	;; 03:	Set_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Set_Feature_not_stall
-	;; Set_Feature(stall). Should set a stall bit. TODO
-	ljmp setup_stall
-setup_Set_Feature_not_stall:
-	cjne r3, #0x01, setup_Set_Feature_not_rwake
-	;; Set_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_03:	
-	cjne r2, #0x06, setup_breq_not_06
-	;; 06:	Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
-	cjne r4, #0x01, setup_Get_Descriptor_not_device
-	;; Get_Descriptor(device)
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_device)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_device)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
-	cjne r4, #0x02, setup_Get_Descriptor_not_config
-	;; Get_Descriptor(config[n])
-	cjne r3, #0x00, setup_stall; only handle n==0
-	;; Get_Descriptor(config[0])
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_config1)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_config1)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
-	cjne r4, #0x03, setup_Get_Descriptor_not_string
-	;; Get_Descriptor(string[wValueL])
-	;;  if (wValueL >= maxstrings) stall
-	mov a, #((desc_strings_end-desc_strings)/2)
-	clr c
-	subb a,r3		; a=4, r3 = 0..3 . if a<=0 then stall
-	jc  setup_stall
-	jz  setup_stall
-	mov a, r3
-	add a, r3		; a = 2*wValueL
-	mov dptr, #desc_strings
-	add a, dpl
-	mov dpl, a
-	mov a, #0
-	addc a, dph
-	mov dph, a		; dph = desc_strings[a]. big endian! (handy)
-	;; it looks like my adapter uses a revision of the EZUSB that
-	;; contains "rev D errata number 8", as hinted in the EzUSB example
-	;; code. I cannot find an actual errata description on the Cypress
-	;; web site, but from the example code it looks like this bug causes
-	;; the length of string descriptors to be read incorrectly, possibly
-	;; sending back more characters than the descriptor has. The workaround
-	;; is to manually send out all of the data. The consequence of not
-	;; using the workaround is that the strings gathered by the kernel
-	;; driver are too long and are filled with trailing garbage (including
-	;; leftover strings). Writing this out by hand is a nuisance, so for
-	;; now I will just live with the bug.
-	movx a, @dptr
-	mov r1, a
-	inc dptr
-	movx a, @dptr
-	mov r2, a
-	mov dptr, SUDPTRH
-	mov a, r1
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, r2
-	movx @dptr, a
-	;; done
-	ljmp setup_done_ack
-	
-setup_Get_Descriptor_not_string:
-	ljmp setup_stall
-	
-setup_breq_not_06:
-	cjne r2, #0x08, setup_breq_not_08
-	;; Get_Configuration. always 1. return one byte.
-	;; this is reusable
-	mov a, #1
-setup_return_one_byte:	
-	mov dptr, IN0BUF
-	movx @dptr, a
-	mov a, #1
-	mov dptr, IN0BC
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_breq_not_08:
-	cjne r2, #0x09, setup_breq_not_09
-	;; 09: Set_Configuration. ignored.
-	ljmp setup_done_ack
-setup_breq_not_09:
-	cjne r2, #0x0a, setup_breq_not_0a
-	;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
-	;;  since we only have one interface, ignore wIndexL, return a 0
-	mov a, #0
-	ljmp setup_return_one_byte
-setup_breq_not_0a:
-	cjne r2, #0x0b, setup_breq_not_0b
-	;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
-	ljmp setup_done_ack
-setup_breq_not_0b:
-	ljmp setup_stall
-
-		
-setup_done_ack:	
-	;; now clear HSNAK
-	mov dptr, EP0CS
-	mov a, #0x02
-	movx @dptr, a
-	sjmp setup_done
-setup_stall:	
-	;; unhandled. STALL
-	;EP0CS |= bmEPSTALL
-	mov dptr, EP0CS
-	movx a, @dptr
-	orl a, EP0STALLbit
-	movx @dptr, a
-	sjmp setup_done
-	
-setup_done:	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-;;; ==============================================================
-	
-set_baud:			; baud index in r3
-	;; verify a < 10
-	mov a, r3
-	jb ACC.7, set_baud__badbaud
-	clr c
-	subb a, #10
-	jnc set_baud__badbaud
-	mov a, r3
-	rl a			; a = index*2
-	add a, #LOW(baud_table)
-	mov dpl, a
-	mov a, #HIGH(baud_table)
-	addc a, #0
-	mov dph, a
-	;; TODO: shut down xmit/receive
-	;; TODO: wait for current xmit char to leave
-	;; TODO: shut down timer to avoid partial-char glitch
-	movx a,@dptr		; BAUD_HIGH
-	mov RCAP2H, a
-	mov TH2, a
-	inc dptr
-	movx a,@dptr		; BAUD_LOW
-	mov RCAP2L, a
-	mov TL2, a
-	;; TODO: restart xmit/receive
-	;; TODO: reenable interrupts, resume tx if pending
-	clr c			; c=0: success
-	ret
-set_baud__badbaud:
-	setb c			; c=1: failure
-	ret
-	
-;;; ==================================================
-control_pins:
-	cjne r1, #0x41, control_pins_in
-control_pins_out:
-	mov a, r3 ; wValue[0] holds new bits:	b7 is new DTR, b2 is new RTS
-	xrl a, #0xff		; 1 means active, 0V, +12V ?
-	anl a, #0x84
-	mov r3, a
-	mov dptr, OUTC
-	movx a, @dptr		; only change bits 7 and 2
-	anl a, #0x7b		; ~0x84
-	orl a, r3
-	movx @dptr, a		; other pins are inputs, bits ignored
-	ljmp setup_done_ack
-control_pins_in:
-	mov dptr, PINSC
-	movx a, @dptr
-	xrl a, #0xff
-	ljmp setup_return_one_byte
-
-;;; ========================================
-	
-ISR_Ep2in:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-	lcall start_in
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-ISR_Ep2out:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-
-	;; copy data into buffer. for now, assume we will have enough space
-	mov dptr, OUT2BC	; get byte count
-	movx a,@dptr
-	mov r1, a
-	clr a
-	mov dps, a
-	mov dptr, OUT2BUF	; load DPTR0 with source
-	mov dph1, #HIGH(tx_ring)	; load DPTR1 with target
-	mov dpl1, tx_ring_in
-OUT_loop:
-	movx a,@dptr		; read
-	inc dps			; switch to DPTR1: target
-	inc dpl1		; target = tx_ring_in+1
-	movx @dptr,a		; store
-	mov a,dpl1
-	cjne a, tx_ring_out, OUT_no_overflow
-	sjmp OUT_overflow
-OUT_no_overflow:	
-	inc tx_ring_in		; tx_ring_in++
-	inc dps			; switch to DPTR0: source
-	inc dptr
-	djnz r1, OUT_loop
-	sjmp OUT_done
-OUT_overflow:
-	;; signal overflow
-	;; fall through
-OUT_done:	
-	;; ack
-	mov dptr,OUT2BC
-	movx @dptr,a
-
-	;; start tx
-	acall maybe_start_tx
-	;acall dump_stat
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-dump_stat:
-	;; fill in EP4in with a debugging message:
-	;;   tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
-	;;   tx_active
-	;;   tx_ring[0..15]
-	;;   0xfc
-	;;   rx_ring[0..15]
-	clr a
-	mov dps, a
-	
-	mov dptr, IN4CS
-	movx a, @dptr
-	jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
-	mov dptr, IN4BUF
-	
-	mov a, tx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, tx_ring_out
-	movx @dptr, a
-	inc dptr
-
-	mov a, rx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, rx_ring_out
-	movx @dptr, a
-	inc dptr
-	
-	clr a
-	jnb TX_RUNNING, dump_stat__no_tx_running
-	inc a
-dump_stat__no_tx_running:
-	movx @dptr, a
-	inc dptr
-	;; tx_ring[0..15]
-	inc dps
-	mov dptr, #tx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__tx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__tx_ring_loop
-	inc dps
-	
-	mov a, #0xfc
-	movx @dptr, a
-	inc dptr
-	
-	;; rx_ring[0..15]
-	inc dps
-	mov dptr, #rx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__rx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__rx_ring_loop
-	
-	;; now send it
-	clr a
-	mov dps, a
-	mov dptr, IN4BC
-	mov a, #38
-	movx @dptr, a
-dump_stat__done:	
-	ret
-		
-;;; ============================================================
-	
-maybe_start_tx:
-	;; make sure the tx process is running.
-	jb TX_RUNNING, start_tx_done
-start_tx:
-	;; is there work to be done?
-	mov a, tx_ring_in
-	cjne a,tx_ring_out, start_tx__work
-	ret			; no work
-start_tx__work:	
-	;; tx was not running. send the first character, setup the TI int
-	inc tx_ring_out		; [++tx_ring_out]
-	mov dph, #HIGH(tx_ring)
-	mov dpl, tx_ring_out
-	movx a, @dptr
-	mov sbuf, a
-	setb TX_RUNNING
-start_tx_done:
-	;; can we unthrottle the host tx process?
-	;;  step 1: do we care?
-	mov a, #0
-	cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
-	;; nope
-start_tx_really_done:
-	ret
-start_tx__maybe_unthrottle_tx:
-	;;  step 2: is there now room?
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in
-	;; a is now write_room. If thresh >= a, we can unthrottle
-	clr c
-	subb a, tx_unthrottle_threshold
-	jc start_tx_really_done	; nope
-	;; yes, we can unthrottle. remove the threshold and mark a request
-	mov tx_unthrottle_threshold, #0
-	setb DO_TX_UNTHROTTLE
-	;; prod rx, which will actually send the message when in2 becomes free
-	ljmp start_in
-	
-
-serial_int:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	jnb TI, serial_int__not_tx
-	;; tx finished. send another character if we have one
-	clr TI			; clear int
-	clr TX_RUNNING
-	lcall start_tx
-serial_int__not_tx:
-	jnb RI, serial_int__not_rx
-	lcall get_rx_char
-	clr RI			; clear int
-serial_int__not_rx:	
-	;; return
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-get_rx_char:
-	mov dph, #HIGH(rx_ring)
-	mov dpl, rx_ring_in
-	inc dpl			; target = rx_ring_in+1
-	mov a, sbuf
-	movx @dptr, a
-	;; check for overflow before incrementing rx_ring_in
-	mov a, dpl
-	cjne a, rx_ring_out, get_rx_char__no_overflow
-	;; signal overflow
-	ret
-get_rx_char__no_overflow:	
-	inc rx_ring_in
-	;; kick off USB INpipe
-	acall start_in
-	ret
-
-start_in:
-	;; check if the inpipe is already running.
-	mov dptr, IN2CS
-	movx a, @dptr
-	jb acc.1, start_in__done; int will handle it
-	jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
-	;; see if there is any work to do. a serial interrupt might occur
-	;; during this sequence?
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_in__have_work
-	ret			; nope
-start_in__have_work:	
-	;; now copy as much data as possible into the pipe. 63 bytes max.
-	clr a
-	mov dps, a
-	mov dph, #HIGH(rx_ring)	; load DPTR0 with source
-	inc dps
-	mov dptr, IN2BUF	; load DPTR1 with target
-	movx @dptr, a		; in[0] signals that rest of IN is rx data
-	inc dptr
-	inc dps
-	;; loop until we run out of data, or we have copied 64 bytes
-	mov r1, #1		; INbuf size counter
-start_in__loop:
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
-	sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
-	inc rx_ring_out
-	mov dpl, rx_ring_out
-	movx a, @dptr
-	inc dps
-	movx @dptr, a		; write into IN buffer
-	inc dptr
-	inc dps
-	inc r1
-	cjne r1, #64, start_in__loop; loop
-start_in__kick:
-	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
-	;; kick off IN
-	mov dptr, IN2BC
-	mov a, r1
-	jz start_in__done
-	movx @dptr, a
-	;; done
-start_in__done:
-	;acall dump_stat
-	ret
-start_in__do_tx_unthrottle:
-	;; special sequence: send a tx unthrottle message
-	clr DO_TX_UNTHROTTLE
-	clr a
-	mov dps, a
-	mov dptr, IN2BUF
-	mov a, #1
-	movx @dptr, a
-	inc dptr
-	mov a, #2
-	movx @dptr, a
-	mov dptr, IN2BC
-	movx @dptr, a
-	ret
-	
-putchar:
-	clr TI
-	mov SBUF, a
-putchar_wait:
-	jnb TI, putchar_wait
-	clr TI
-	ret
-
-	
-baud_table:			; baud_high, then baud_low
-	;; baud[0]: 110
-	.byte BAUD_HIGH(110)
-	.byte BAUD_LOW(110)
-	;; baud[1]: 300
-	.byte BAUD_HIGH(300)
-	.byte BAUD_LOW(300)
-	;; baud[2]: 1200
-	.byte BAUD_HIGH(1200)
-	.byte BAUD_LOW(1200)
-	;; baud[3]: 2400
-	.byte BAUD_HIGH(2400)
-	.byte BAUD_LOW(2400)
-	;; baud[4]: 4800
-	.byte BAUD_HIGH(4800)
-	.byte BAUD_LOW(4800)
-	;; baud[5]: 9600
-	.byte BAUD_HIGH(9600)
-	.byte BAUD_LOW(9600)
-	;; baud[6]: 19200
-	.byte BAUD_HIGH(19200)
-	.byte BAUD_LOW(19200)
-	;; baud[7]: 38400
-	.byte BAUD_HIGH(38400)
-	.byte BAUD_LOW(38400)
-	;; baud[8]: 57600
-	.byte BAUD_HIGH(57600)
-	.byte BAUD_LOW(57600)
-	;; baud[9]: 115200
-	.byte BAUD_HIGH(115200)
-	.byte BAUD_LOW(115200)
-
-desc_device:
-	.byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
-	.byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-	
-desc_config1:
-	.byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
-	.byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
-	.byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
-	.byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
-	.word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids:	.byte string_langids_end-string_langids
-	.byte 3
-	.word 0
-string_langids_end:
-
-	;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
-	;; *that* is a pain in the ass to encode. And they are little-endian
-	;; too. Use this perl snippet to get the bytecodes:
-	/* while (<>) {
-	    @c = split(//);
-	    foreach $c (@c) {
-	     printf("0x%02x, 0x00, ", ord($c));
-	    }
-	   }
-	*/
-
-string_mfg:	.byte string_mfg_end-string_mfg
-	.byte 3
-;	.byte "ACME usb widgets"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-	
-string_product:	.byte string_product_end-string_product
-	.byte 3
-;	.byte "ACME USB serial widget"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-	
-string_serial:	.byte string_serial_end-string_serial
-	.byte 3
-;	.byte "47"
-	.byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-		
-;;; ring buffer memory
-	;; tx_ring_in+1 is where the next input byte will go
-	;; [tx_ring_out] has been sent
-	;; if tx_ring_in == tx_ring_out, theres no work to do
-	;; there are (tx_ring_in - tx_ring_out) chars to be written
-	;; dont let _in lap _out
-	;;   cannot inc if tx_ring_in+1 == tx_ring_out
-	;;  write [tx_ring_in+1] then tx_ring_in++
-	;;   if (tx_ring_in+1 == tx_ring_out), overflow
-	;;   else tx_ring_in++
-	;;  read/send [tx_ring_out+1], then tx_ring_out++
-
-	;; rx_ring_in works the same way
-	
-	.org 0x1000
-tx_ring:
-	.skip 0x100		; 256 bytes
-rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
diff --git a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.HEX b/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.HEX
deleted file mode 100644
index e9b00d702..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.HEX
+++ /dev/null
@@ -1,87 +0,0 @@
-:03000000020200F9
-:0400230002059B0037
-:050030000000000000CB
-:0400430002010000B6
-:100100000202BA000200000002000000020000002B
-:1001100002000000020000000200000002000000D7
-:100120000200000002000000020485000204B90081
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC907F9474BFF0907F957477
-:10023000EFF07410907F9EF07400907F98F07440FF
-:10024000907F9DF07400907F97F07482907F9EF075
-:10025000907F957403F0907FAFE0D2E0F07401904E
-:100260007FABF0907FAEF0907FAC7404F0907FADE8
-:100270007404F0907FC9F07407907FAFF074209001
-:100280007F9CF07480907F98F07453F59875C83017
-:100290007B059144D2CA759850D2E8D2AFD2AC74E3
-:1002A00000F586907FD67402F0792E7A007B00DB11
-:1002B000FEDAFAD9F67406F080FEC086C082C083EA
-:1002C000C084C085C0E0E591C2E4F591907FAB7435
-:1002D00001F0907FE8E0F9A3E0FAA3E0FBA3E0FCE3
-:1002E000E95460B4000302035DB4406EBA000B121F
-:1002F0000444400302042602042EBA010302042E21
-:10030000BA020302042EBA0303020468BA041EBB35
-:10031000000A907F95E04402F0020426907F98E066
-:1003200054FDF0907F95E054FDF0020426BA0503D9
-:1003300002042EBA0619BB0008E533D39532020435
-:1003400002BB0108E532C3953302040202042EBA4F
-:1003500007058B3402042602042E02042EBA002064
-:10036000B98010907F00E4F0A3F0907FB57402F0A4
-:10037000020426B9820280EBB9810280E602042ED3
-:10038000BA010FBB000302042EBB010302042602C4
-:10039000042EBA030FBB000302042EBB01030204A8
-:1003A0002602042EBA0656BC010F907FD47406F0C4
-:1003B000907FD5745AF0020426BC0212BB006F90E5
-:1003C0007FD47406F0907FD5746CF0020426BC03D1
-:1003D000297404C39B40576055EB2B90068C2582F3
-:1003E000F58274003583F583E0F9A3E0FA907FD4B9
-:1003F000E9F0907FD5EAF002042602042EBA080F35
-:100400007401907F00F07401907FB5F0020426BA69
-:100410000903020426BA0A057400020402BA0B0397
-:1004200002042602042E907FB47402F08009907FAB
-:10043000B4E04401F08000D0E0D085D084D083D0F7
-:1004400082D08632EB20E71EC3940A5019EB232496
-:1004500046F58274063400F583E0F5CBF5CDA3E0D4
-:10046000F5CAF5CCC322D322B94111EB64FF548005
-:10047000FB907F98E0547F4BF0020426907F9BE036
-:1004800064FF020402C086C082C083C084C085C0ED
-:10049000E0E591C2E4F591907FA97404F074209096
-:1004A0007F9CF01205DC7420907F9CF0D0E0D0851A
-:1004B000D084D083D082D08632C086C082C083C030
-:1004C00084C085C0E07410907F9CF0E591C2E4F593
-:1004D00091907FAA7404F0907FC9E0F9E4F58690CA
-:1004E0007DC0758510853284E005860584F0E5843D
-:1004F000B53302800905320586A3D9EC8000907FD0
-:10050000C9F0B16D7420907F9CF0D0E0D085D0848C
-:10051000D083D082D08632E4F586907FBCE020E1A3
-:100520004B907D00E532F0A3E533F0A3E530F0A376
-:10053000E531F0A3E430000104F0A305869010003B
-:100540007910E0A30586F0A30586D9F6058674FC2C
-:10055000F0A305869011007910E0A30586F0A305AD
-:1005600086D9F6E4F586907FBD7426F0222000132C
-:10057000E532B53301220533758310853382E0F50A
-:1005800099D2007400B5340122E533D39532C39576
-:100590003440F5753400D2010205DCC086C082C04B
-:1005A00083C084C085C0E0309907C299C20012059B
-:1005B000703098051205C6C298D0E0D085D084D09E
-:1005C00083D082D086327583118530820582E59989
-:1005D000F0E582B53101220530B1DC227410907F44
-:1005E0009CF0907FB8E020E13E20013CE530B53141
-:1005F0000122E4F5867583110586907E00F0A3053F
-:10060000867901E530B5310280100531853182E00F
-:100610000586F0A3058609B940E97410907F9CF027
-:10062000907FB9E96001F022C201E4F586907E0076
-:100630007401F0A37402F0907FB9F022C299F59989
-:100640003099FDC29922E55EF63CFD8FFEC8FF643D
-:10065000FFB2FFD9FFEDFFF3FFFA12010001FFFF28
-:10066000FF40CD06040189AB01020301090220000D
-:1006700001010080320904000002FFFFFF000705AE
-:10068000820340000107050202400000069406981C
-:1006900006BA06E8040300002203410043004D00AF
-:1006A000450020007500730062002000770069009B
-:1006B000640067006500740073002E03410043006E
-:1006C0004D004500200055005300420020007300FB
-:1006D00065007200690061006C002000770069000D
-:0E06E0006400670065007400060334003700F4
-:00000001FF
diff --git a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.S b/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.S
deleted file mode 100644
index 0b79bbf0a..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/keyspan_pda/xircom_pgs.S
+++ /dev/null
@@ -1,1192 +0,0 @@
-/*  $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- * 
- *  Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- *  the EzUSB microcontroller.
- * 
- *  (C) Copyright 2000 Brian Warner <warner@lothar.com>
- * 
- * 	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
- * 	the Free Software Foundation; either version 2 of the License, or
- * 	(at your option) any later version.
- * 
- *  "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- *  company.
- * 
- *  This serial adapter is basically an EzUSB chip and an RS-232 line driver
- *  in a little widget that has a DB-9 on one end and a USB plug on the other.
- *  It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- *  as a baud-rate generator. The wiring is:
- *   PC0/RxD0 <- rxd (DB9 pin 2)         PC4 <- dsr pin 6
- *   PC1/TxD0 -> txd pin 3               PC5 <- ri  pin 9
- *   PC2      -> rts pin 7               PC6 <- dcd pin 1
- *   PC3      <- cts pin 8               PC7 -> dtr pin 4
- *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
- * 
- * THEORY OF OPERATION:
- *
- *   There are two 256-byte ring buffers, one for tx, one for rx.
- *
- *   EP2out is pure tx data. When it appears, the data is copied into the tx
- *   ring and serial transmission is started if it wasn't already running. The
- *   "tx buffer empty" interrupt may kick off another character if the ring
- *   still has data. If the host is tx-blocked because the ring filled up,
- *   it will request a "tx unthrottle" interrupt. If sending a serial character
- *   empties the ring below the desired threshold, we set a bit that will send
- *   up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- *   EP2in (interrupt) is used to send both rx chars and rx status messages
- *   (only "tx unthrottle" at this time) back up to the host. The first byte
- *   of the rx message indicates data (0) or status msg (1). Status messages
- *   are sent before any data.
- *
- *   Incoming serial characters are put into the rx ring by the serial
- *   interrupt, and the EP2in buffer sent if it wasn't already in transit.
- *   When the EP2in buffer returns, the interrupt prompts us to send more
- *   rx chars (or status messages) if they are pending.
- *
- *   Device control happens through "vendor specific" control messages on EP0.
- *   All messages are destined for the "Interface" (with the index always 0,
- *   so that if their two-port device might someday use similar firmware, we
- *   can use index=1 to refer to the second port). The messages defined are:
- *
- *    bRequest = 0 : set baud/bits/parity
- *               1 : unused
- *               2 : reserved for setting HW flow control (CTSRTS)
- *               3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- *               4 : set break (on/off)
- *               5 : reserved for requesting interrupts on pin state change
- *               6 : query buffer room or chars in tx buffer
- *               7 : request tx unthrottle interrupt
- *
- *  The host-side driver is set to recognize the device ID values stashed in
- *  serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- *  start it running. This firmware will use EzUSB's "renumeration" trick by
- *  simulating a bus disconnect, then reconnect with a different device ID
- *  (encoded in the desc_device descriptor below). The host driver then
- *  recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- *  EzUSB Technical Reference Manual: <http://www.cypress.com/>
- *  8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- *   basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- *   use totally different registers!
- *  USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- *  AnchorChips, for making such an incredibly useful little microcontroller.
- *  KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- *           apart and trace with an ohmmeter.
- *
- * TODO:
- *  lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- *  control. Interrupting host upon change in DCD, etc, counting transitions.
- *  Need to find a safe device id to use (the one used by the Keyspan firmware
- *  under Windows would be ideal.. can anyone figure out what it is?). Parity.
- *  More baud rates. Oh, and the string-descriptor-length silicon bug
- *  workaround should be implemented, but I'm lazy, and the consequence is
- *  that the device name strings that show up in your kernel log will have
- *  lots of trailing binary garbage in them (appears as ????). Device strings
- *  should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- *  -Brian Warner <warner@lothar.com>
- *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTBCFG #0x7f94
-#define PORTCCFG #0x7f95
-#define OEA	#0x7f9c
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
-	.org 0
-	ljmp start
-	;; interrupt vectors
-	.org 23H
-	ljmp serial_int
-	.byte 0
-	
-	.org 43H
-	ljmp USB_Jump_Table
-	.byte 0			; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
-rx_ring_in:	.byte 0
-rx_ring_out:	.byte 0
-tx_ring_in:	.byte 0
-tx_ring_out:	.byte 0
-tx_unthrottle_threshold:	.byte 0
-		
-	.org 0x100H		; wants to be on a page boundary
-USB_Jump_Table:
-	ljmp	ISR_Sudav	; Setup Data Available
-	.byte 0
-	ljmp	0		; Start of Frame
-	.byte 0
-	ljmp	0		; Setup Data Loading
-	.byte 0
-	ljmp	0		; Global Suspend
-	.byte 	0
-	ljmp	0		; USB Reset  	
-	.byte	0
-	ljmp	0		; Reserved
-	.byte	0
-	ljmp	0		; End Point 0 In
-	.byte	0
-	ljmp	0		; End Point 0 Out
-	.byte	0
-	ljmp	0		; End Point 1 In
-	.byte	0
-	ljmp	0		; End Point 1 Out
-	.byte	0
-	ljmp	ISR_Ep2in
-	.byte	0
-	ljmp	ISR_Ep2out
-	.byte	0
-
-
-	.org 0x200
-		
-start:	mov SP,STACK-1 ; set stack
-	;; clear local variables
-	clr a
-	mov tx_ring_in, a
-	mov tx_ring_out, a
-	mov rx_ring_in, a
-	mov rx_ring_out, a
-	mov tx_unthrottle_threshold, a
-	clr TX_RUNNING
-	clr DO_TX_UNTHROTTLE
-	
-	;; clear fifo with "fe"
-	mov r1, 0
-	mov a, #0xfe
-	mov dptr, #tx_ring
-clear_tx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_tx_ring_loop
-
-	mov a, #0xfd
-	mov dptr, #rx_ring
-clear_rx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-;;; on Xircom the STANDBY is wired to PB6 and PC4 
-	mov dptr, PORTBCFG
-        mov a, #0xBf
-        movx @dptr, a
-	mov dptr, PORTCCFG
-        mov a, #0xef
-        movx @dptr, a
-	
-	;; set OEC.4
-        mov a, #0x10
-        mov dptr,OEC
-        movx @dptr,a
-
-        ;; clear PC4
-        mov a, #0x00
-        mov dptr,OUTC
-        movx @dptr,a
-
-	;; set OEB.6
-	mov a, #0x40
-	mov dptr,OEB
-	movx @dptr,a
-
-	;; clear PB6
-	mov a, #0x00
-	mov dptr,OUTB
-	movx @dptr,a
-
-	;; set OEC.[17]
-	mov a, #0x82
-	mov dptr,OEC
-	movx @dptr,a
-
-
-	;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
-	mov dptr, PORTCCFG
-	mov a, #0x03
-	movx @dptr, a
-	
-	;; set up interrupts, autovectoring
-	;; set BKPT
-	mov dptr, USBBAV
-	movx a,@dptr
-	setb acc.0		; AVEN bit to 0
-	movx @dptr, a
-
-	mov a,#0x01		; enable SUDAV:	setup data available (for ep0)
-	mov dptr, USBIRQ
-	movx @dptr, a		; clear SUDAVI
-	mov dptr, USBIEN
-	movx @dptr, a
-	
-	mov dptr, IN07IEN
-	mov a,#0x04		; enable IN2 int
-	movx @dptr, a
-	
-	mov dptr, OUT07IEN
-	mov a,#0x04		; enable OUT2 int
-	movx @dptr, a
-	mov dptr, OUT2BC
-	movx @dptr, a		; arm OUT2
-
-;;	mov a, #0x84		; turn on RTS, DTR
-;;	mov dptr,OUTC
-;;	movx @dptr, a
-
-	mov a, #0x7             ; turn on  DTR
-        mov dptr,USBBAV
-        movx @dptr, a
-
-	mov a, #0x20             ; turn on the RED led 
-        mov dptr,OEA
-        movx @dptr, a
-
-	mov a, #0x80            ; turn on  RTS
-        mov dptr,OUTC
-        movx @dptr, a
-
-	;; setup the serial port. 9600 8N1.
-	mov a,#0x53		; mode 1, enable rx, clear int
-	mov SCON, a
-	;;  using timer2, in 16-bit baud-rate-generator mode
-	;;   (xtal 12MHz, internal fosc 24MHz)
-	;;  RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
-	;;  57600: 0xFFF2.F, say 0xFFF3
-	;;   9600: 0xFFB1.E, say 0xFFB2
-	;;    300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
-	mov r3, #5
-	acall set_baud
-	setb TR2
-	mov SCON, #050h
-	
-#if 0
-	mov r1, #0x40
-	mov a, #0x41
-send:	
-	mov SBUF, a
-	inc a
-	anl a, #0x3F
-	orl a, #0x40
-;	xrl a, #0x02
-wait1:	
-	jnb TI, wait1
-	clr TI
-	djnz r1, send
-;done:	sjmp done
-
-#endif
-	
-	setb EUSB
-	setb EA
-	setb ES0
-	;acall dump_stat
-
-	;; hey, what say we RENUMERATE! (TRM p.62)
-	mov a, #0
-	mov dps, a
-	mov dptr, USBCS
-	mov a, #0x02		; DISCON=0, DISCOE=0, RENUM=1
-	movx @dptr, a
-	;; now presence pin is floating, simulating disconnect. wait 0.5s
-	mov r1, #46
-renum_wait1:
-	mov r2, #0
-renum_wait2:
-	mov r3, #0
-renum_wait3:
-	djnz r3, renum_wait3
-	djnz r2, renum_wait2
-	djnz r1, renum_wait1	; wait about n*(256^2) 6MHz clocks
-	mov a, #0x06		; DISCON=0, DISCOE=1, RENUM=1
-	movx @dptr, a
-	;; we are back online. the host device will now re-query us
-	
-	
-main:	sjmp main
-
-	
-
-ISR_Sudav:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
-	movx @dptr,a
-
-	;; get request type
-	mov dptr, SETUPDAT
-	movx a, @dptr
-	mov r1, a		; r1 = bmRequestType
-	inc dptr
-	movx a, @dptr
-	mov r2, a		; r2 = bRequest
-	inc dptr
-	movx a, @dptr
-	mov r3, a		; r3 = wValueL
-	inc dptr
-	movx a, @dptr
-	mov r4, a		; r4 = wValueH
-
-	;; main switch on bmRequest.type: standard or vendor
-	mov a, r1
-	anl a, #0x60
-	cjne a, #0x00, setup_bmreq_type_not_standard
-	;; standard request: now main switch is on bRequest
-	ljmp setup_bmreq_is_standard
-	
-setup_bmreq_type_not_standard:	
-	;; a still has bmreq&0x60
-	cjne a, #0x40, setup_bmreq_type_not_vendor
-	;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
-	;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
-	cjne r2, #0x00, setup_ctrl_not_00
-	;; 00 is set baud, wValue[0] has baud rate index
-	lcall set_baud		; index in r3, carry set if error
-	jc setup_bmreq_type_not_standard__do_stall
-	ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
-	ljmp setup_stall
-setup_ctrl_not_00:
-	cjne r2, #0x01, setup_ctrl_not_01
-	;; 01 is reserved for set bits (parity). TODO
-	ljmp setup_stall
-setup_ctrl_not_01:
-	cjne r2, #0x02, setup_ctrl_not_02
-	;; 02 is set HW flow control. TODO
-	ljmp setup_stall
-setup_ctrl_not_02:
-	cjne r2, #0x03, setup_ctrl_not_03
-	;; 03 is control pins (RTS, DTR).
-	ljmp control_pins	; will jump to setup_done_ack,
-				;  or setup_return_one_byte
-setup_ctrl_not_03:
-	cjne r2, #0x04, setup_ctrl_not_04
-	;; 04 is send break (really "turn break on/off"). TODO
-	cjne r3, #0x00, setup_ctrl_do_break_on
-	;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	orl a, #0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_do_break_on:
-	;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
-	mov dptr, OUTC
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_not_04:
-	cjne r2, #0x05, setup_ctrl_not_05
-	;; 05 is set desired interrupt bitmap. TODO
-	ljmp setup_stall
-setup_ctrl_not_05:
-	cjne r2, #0x06, setup_ctrl_not_06
-	;; 06 is query room
-	cjne r3, #0x00, setup_ctrl_06_not_00
-	;; 06, wValue[0]=0 is query write_room
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in	; out-1-in = 255 - (in-out)
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
-	cjne r3, #0x01, setup_ctrl_06_not_01
-	;; 06, wValue[0]=1 is query chars_in_buffer
-	mov a, tx_ring_in
-	clr c
-	subb a, tx_ring_out	; in-out
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_01:	
-	ljmp setup_stall
-setup_ctrl_not_06:
-	cjne r2, #0x07, setup_ctrl_not_07
-	;; 07 is request tx unthrottle interrupt
-	mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
-	ljmp setup_done_ack
-setup_ctrl_not_07:
-	ljmp setup_stall
-	
-setup_bmreq_type_not_vendor:
-	ljmp setup_stall
-
-
-setup_bmreq_is_standard:	
-	cjne r2, #0x00, setup_breq_not_00
-	;; 00:	Get_Status (sub-switch on bmRequestType: device, ep, int)
-	cjne r1, #0x80, setup_Get_Status_not_device
-	;; Get_Status(device)
-	;;  are we self-powered? no. can we do remote wakeup? no
-	;;   so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
-	mov dptr, IN0BUF
-	clr a
-	movx @dptr, a
-	inc dptr
-	movx @dptr, a
-	mov dptr, IN0BC
-	mov a, #2
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Status_not_device:
-	cjne r1, #0x82, setup_Get_Status_not_endpoint
-	;; Get_Status(endpoint)
-	;;  must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
-	;; for now: cheat. TODO
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
-	cjne r1, #0x81, setup_Get_Status_not_interface
-	;; Get_Status(interface): return two zeros
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:	
-	ljmp setup_stall
-	
-setup_breq_not_00:
-	cjne r2, #0x01, setup_breq_not_01
-	;; 01:	Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Clear_Feature_not_stall
-	;; Clear_Feature(stall). should clear a stall bit. TODO
-	ljmp setup_stall
-setup_Clear_Feature_not_stall:
-	cjne r3, #0x01, setup_Clear_Feature_not_rwake
-	;; Clear_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_01:
-	cjne r2, #0x03, setup_breq_not_03
-	;; 03:	Set_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Set_Feature_not_stall
-	;; Set_Feature(stall). Should set a stall bit. TODO
-	ljmp setup_stall
-setup_Set_Feature_not_stall:
-	cjne r3, #0x01, setup_Set_Feature_not_rwake
-	;; Set_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_03:	
-	cjne r2, #0x06, setup_breq_not_06
-	;; 06:	Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
-	cjne r4, #0x01, setup_Get_Descriptor_not_device
-	;; Get_Descriptor(device)
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_device)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_device)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
-	cjne r4, #0x02, setup_Get_Descriptor_not_config
-	;; Get_Descriptor(config[n])
-	cjne r3, #0x00, setup_stall; only handle n==0
-	;; Get_Descriptor(config[0])
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_config1)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_config1)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
-	cjne r4, #0x03, setup_Get_Descriptor_not_string
-	;; Get_Descriptor(string[wValueL])
-	;;  if (wValueL >= maxstrings) stall
-	mov a, #((desc_strings_end-desc_strings)/2)
-	clr c
-	subb a,r3		; a=4, r3 = 0..3 . if a<=0 then stall
-	jc  setup_stall
-	jz  setup_stall
-	mov a, r3
-	add a, r3		; a = 2*wValueL
-	mov dptr, #desc_strings
-	add a, dpl
-	mov dpl, a
-	mov a, #0
-	addc a, dph
-	mov dph, a		; dph = desc_strings[a]. big endian! (handy)
-	;; it looks like my adapter uses a revision of the EZUSB that
-	;; contains "rev D errata number 8", as hinted in the EzUSB example
-	;; code. I cannot find an actual errata description on the Cypress
-	;; web site, but from the example code it looks like this bug causes
-	;; the length of string descriptors to be read incorrectly, possibly
-	;; sending back more characters than the descriptor has. The workaround
-	;; is to manually send out all of the data. The consequence of not
-	;; using the workaround is that the strings gathered by the kernel
-	;; driver are too long and are filled with trailing garbage (including
-	;; leftover strings). Writing this out by hand is a nuisance, so for
-	;; now I will just live with the bug.
-	movx a, @dptr
-	mov r1, a
-	inc dptr
-	movx a, @dptr
-	mov r2, a
-	mov dptr, SUDPTRH
-	mov a, r1
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, r2
-	movx @dptr, a
-	;; done
-	ljmp setup_done_ack
-	
-setup_Get_Descriptor_not_string:
-	ljmp setup_stall
-	
-setup_breq_not_06:
-	cjne r2, #0x08, setup_breq_not_08
-	;; Get_Configuration. always 1. return one byte.
-	;; this is reusable
-	mov a, #1
-setup_return_one_byte:	
-	mov dptr, IN0BUF
-	movx @dptr, a
-	mov a, #1
-	mov dptr, IN0BC
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_breq_not_08:
-	cjne r2, #0x09, setup_breq_not_09
-	;; 09: Set_Configuration. ignored.
-	ljmp setup_done_ack
-setup_breq_not_09:
-	cjne r2, #0x0a, setup_breq_not_0a
-	;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
-	;;  since we only have one interface, ignore wIndexL, return a 0
-	mov a, #0
-	ljmp setup_return_one_byte
-setup_breq_not_0a:
-	cjne r2, #0x0b, setup_breq_not_0b
-	;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
-	ljmp setup_done_ack
-setup_breq_not_0b:
-	ljmp setup_stall
-
-		
-setup_done_ack:	
-	;; now clear HSNAK
-	mov dptr, EP0CS
-	mov a, #0x02
-	movx @dptr, a
-	sjmp setup_done
-setup_stall:	
-	;; unhandled. STALL
-	;EP0CS |= bmEPSTALL
-	mov dptr, EP0CS
-	movx a, @dptr
-	orl a, EP0STALLbit
-	movx @dptr, a
-	sjmp setup_done
-	
-setup_done:	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-;;; ==============================================================
-	
-set_baud:			; baud index in r3
-	;; verify a < 10
-	mov a, r3
-	jb ACC.7, set_baud__badbaud
-	clr c
-	subb a, #10
-	jnc set_baud__badbaud
-	mov a, r3
-	rl a			; a = index*2
-	add a, #LOW(baud_table)
-	mov dpl, a
-	mov a, #HIGH(baud_table)
-	addc a, #0
-	mov dph, a
-	;; TODO: shut down xmit/receive
-	;; TODO: wait for current xmit char to leave
-	;; TODO: shut down timer to avoid partial-char glitch
-	movx a,@dptr		; BAUD_HIGH
-	mov RCAP2H, a
-	mov TH2, a
-	inc dptr
-	movx a,@dptr		; BAUD_LOW
-	mov RCAP2L, a
-	mov TL2, a
-	;; TODO: restart xmit/receive
-	;; TODO: reenable interrupts, resume tx if pending
-	clr c			; c=0: success
-	ret
-set_baud__badbaud:
-	setb c			; c=1: failure
-	ret
-	
-;;; ==================================================
-control_pins:
-	cjne r1, #0x41, control_pins_in
-control_pins_out:
-		;TODO BKPT is DTR
-	mov a, r3 ; wValue[0] holds new bits:	b7 is new RTS
-	xrl a, #0xff		; 1 means active, 0V, +12V ?
-	anl a, #0x80
-	mov r3, a
-	mov dptr, OUTC
-	movx a, @dptr		; only change bit 7 
-	anl a, #0x7F		; ~0x84
-	orl a, r3
-	movx @dptr, a		; other pins are inputs, bits ignored
-	ljmp setup_done_ack
-control_pins_in:
-	mov dptr, PINSC
-	movx a, @dptr
-	xrl a, #0xff
-	ljmp setup_return_one_byte
-
-;;; ========================================
-	
-ISR_Ep2in:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-	;; do stuff
-	lcall start_in
-
-	mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-ISR_Ep2out:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-
-        mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-
-	;; copy data into buffer. for now, assume we will have enough space
-	mov dptr, OUT2BC	; get byte count
-	movx a,@dptr
-	mov r1, a
-	clr a
-	mov dps, a
-	mov dptr, OUT2BUF	; load DPTR0 with source
-	mov dph1, #HIGH(tx_ring)	; load DPTR1 with target
-	mov dpl1, tx_ring_in
-OUT_loop:
-	movx a,@dptr		; read
-	inc dps			; switch to DPTR1: target
-	inc dpl1		; target = tx_ring_in+1
-	movx @dptr,a		; store
-	mov a,dpl1
-	cjne a, tx_ring_out, OUT_no_overflow
-	sjmp OUT_overflow
-OUT_no_overflow:	
-	inc tx_ring_in		; tx_ring_in++
-	inc dps			; switch to DPTR0: source
-	inc dptr
-	djnz r1, OUT_loop
-	sjmp OUT_done
-OUT_overflow:
-	;; signal overflow
-	;; fall through
-OUT_done:	
-	;; ack
-	mov dptr,OUT2BC
-	movx @dptr,a
-
-	;; start tx
-	acall maybe_start_tx
-	;acall dump_stat
-
-        mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-dump_stat:
-	;; fill in EP4in with a debugging message:
-	;;   tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
-	;;   tx_active
-	;;   tx_ring[0..15]
-	;;   0xfc
-	;;   rx_ring[0..15]
-	clr a
-	mov dps, a
-	
-	mov dptr, IN4CS
-	movx a, @dptr
-	jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
-	mov dptr, IN4BUF
-	
-	mov a, tx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, tx_ring_out
-	movx @dptr, a
-	inc dptr
-
-	mov a, rx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, rx_ring_out
-	movx @dptr, a
-	inc dptr
-	
-	clr a
-	jnb TX_RUNNING, dump_stat__no_tx_running
-	inc a
-dump_stat__no_tx_running:
-	movx @dptr, a
-	inc dptr
-	;; tx_ring[0..15]
-	inc dps
-	mov dptr, #tx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__tx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__tx_ring_loop
-	inc dps
-	
-	mov a, #0xfc
-	movx @dptr, a
-	inc dptr
-	
-	;; rx_ring[0..15]
-	inc dps
-	mov dptr, #rx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__rx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__rx_ring_loop
-	
-	;; now send it
-	clr a
-	mov dps, a
-	mov dptr, IN4BC
-	mov a, #38
-	movx @dptr, a
-dump_stat__done:	
-	ret
-		
-;;; ============================================================
-	
-maybe_start_tx:
-	;; make sure the tx process is running.
-	jb TX_RUNNING, start_tx_done
-start_tx:
-	;; is there work to be done?
-	mov a, tx_ring_in
-	cjne a,tx_ring_out, start_tx__work
-	ret			; no work
-start_tx__work:	
-	;; tx was not running. send the first character, setup the TI int
-	inc tx_ring_out		; [++tx_ring_out]
-	mov dph, #HIGH(tx_ring)
-	mov dpl, tx_ring_out
-	movx a, @dptr
-	mov sbuf, a
-	setb TX_RUNNING
-start_tx_done:
-	;; can we unthrottle the host tx process?
-	;;  step 1: do we care?
-	mov a, #0
-	cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
-	;; nope
-start_tx_really_done:
-	ret
-start_tx__maybe_unthrottle_tx:
-	;;  step 2: is there now room?
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in
-	;; a is now write_room. If thresh >= a, we can unthrottle
-	clr c
-	subb a, tx_unthrottle_threshold
-	jc start_tx_really_done	; nope
-	;; yes, we can unthrottle. remove the threshold and mark a request
-	mov tx_unthrottle_threshold, #0
-	setb DO_TX_UNTHROTTLE
-	;; prod rx, which will actually send the message when in2 becomes free
-	ljmp start_in
-	
-
-serial_int:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	jnb TI, serial_int__not_tx
-	;; tx finished. send another character if we have one
-	clr TI			; clear int
-	clr TX_RUNNING
-	lcall start_tx
-serial_int__not_tx:
-	jnb RI, serial_int__not_rx
-	lcall get_rx_char
-	clr RI			; clear int
-serial_int__not_rx:	
-	;; return
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-get_rx_char:
-	mov dph, #HIGH(rx_ring)
-	mov dpl, rx_ring_in
-	inc dpl			; target = rx_ring_in+1
-	mov a, sbuf
-	movx @dptr, a
-	;; check for overflow before incrementing rx_ring_in
-	mov a, dpl
-	cjne a, rx_ring_out, get_rx_char__no_overflow
-	;; signal overflow
-	ret
-get_rx_char__no_overflow:	
-	inc rx_ring_in
-	;; kick off USB INpipe
-	acall start_in
-	ret
-
-start_in:
-	;; check if the inpipe is already running.
-	mov  a,#0x10
-	mov dptr, OEA
-	movx @dptr,a
-
-	mov dptr, IN2CS
-	movx a, @dptr
-	jb acc.1, start_in__done; int will handle it
-	jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
-	;; see if there is any work to do. a serial interrupt might occur
-	;; during this sequence?
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_in__have_work
-	ret			; nope
-start_in__have_work:	
-	;; now copy as much data as possible into the pipe. 63 bytes max.
-	clr a
-	mov dps, a
-	mov dph, #HIGH(rx_ring)	; load DPTR0 with source
-	inc dps
-	mov dptr, IN2BUF	; load DPTR1 with target
-	movx @dptr, a		; in[0] signals that rest of IN is rx data
-	inc dptr
-	inc dps
-	;; loop until we run out of data, or we have copied 64 bytes
-	mov r1, #1		; INbuf size counter
-start_in__loop:
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
-	sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
-	inc rx_ring_out
-	mov dpl, rx_ring_out
-	movx a, @dptr
-	inc dps
-	movx @dptr, a		; write into IN buffer
-	inc dptr
-	inc dps
-	inc r1
-	cjne r1, #64, start_in__loop; loop
-start_in__kick:
-	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
-	;; kick off IN
-	mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
-	mov dptr, IN2BC
-	mov a, r1
-	jz start_in__done
-	movx @dptr, a
-	;; done
-start_in__done:
-	;acall dump_stat
-	ret
-start_in__do_tx_unthrottle:
-	;; special sequence: send a tx unthrottle message
-	clr DO_TX_UNTHROTTLE
-	clr a
-	mov dps, a
-	mov dptr, IN2BUF
-	mov a, #1
-	movx @dptr, a
-	inc dptr
-	mov a, #2
-	movx @dptr, a
-	mov dptr, IN2BC
-	movx @dptr, a
-	ret
-	
-putchar:
-	clr TI
-	mov SBUF, a
-putchar_wait:
-	jnb TI, putchar_wait
-	clr TI
-	ret
-
-	
-baud_table:			; baud_high, then baud_low
-	;; baud[0]: 110
-	.byte BAUD_HIGH(110)
-	.byte BAUD_LOW(110)
-	;; baud[1]: 300
-	.byte BAUD_HIGH(300)
-	.byte BAUD_LOW(300)
-	;; baud[2]: 1200
-	.byte BAUD_HIGH(1200)
-	.byte BAUD_LOW(1200)
-	;; baud[3]: 2400
-	.byte BAUD_HIGH(2400)
-	.byte BAUD_LOW(2400)
-	;; baud[4]: 4800
-	.byte BAUD_HIGH(4800)
-	.byte BAUD_LOW(4800)
-	;; baud[5]: 9600
-	.byte BAUD_HIGH(9600)
-	.byte BAUD_LOW(9600)
-	;; baud[6]: 19200
-	.byte BAUD_HIGH(19200)
-	.byte BAUD_LOW(19200)
-	;; baud[7]: 38400
-	.byte BAUD_HIGH(38400)
-	.byte BAUD_LOW(38400)
-	;; baud[8]: 57600
-	.byte BAUD_HIGH(57600)
-	.byte BAUD_LOW(57600)
-	;; baud[9]: 115200
-	.byte BAUD_HIGH(115200)
-	.byte BAUD_LOW(115200)
-
-desc_device:
-	.byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
-	.byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-	
-desc_config1:
-	.byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
-	.byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
-	.byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
-	.byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
-	.word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids:	.byte string_langids_end-string_langids
-	.byte 3
-	.word 0
-string_langids_end:
-
-	;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
-	;; *that* is a pain in the ass to encode. And they are little-endian
-	;; too. Use this perl snippet to get the bytecodes:
-	/* while (<>) {
-	    @c = split(//);
-	    foreach $c (@c) {
-	     printf("0x%02x, 0x00, ", ord($c));
-	    }
-	   }
-	*/
-
-string_mfg:	.byte string_mfg_end-string_mfg
-	.byte 3
-;	.byte "ACME usb widgets"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-	
-string_product:	.byte string_product_end-string_product
-	.byte 3
-;	.byte "ACME USB serial widget"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-	
-string_serial:	.byte string_serial_end-string_serial
-	.byte 3
-;	.byte "47"
-	.byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-		
-;;; ring buffer memory
-	;; tx_ring_in+1 is where the next input byte will go
-	;; [tx_ring_out] has been sent
-	;; if tx_ring_in == tx_ring_out, theres no work to do
-	;; there are (tx_ring_in - tx_ring_out) chars to be written
-	;; dont let _in lap _out
-	;;   cannot inc if tx_ring_in+1 == tx_ring_out
-	;;  write [tx_ring_in+1] then tx_ring_in++
-	;;   if (tx_ring_in+1 == tx_ring_out), overflow
-	;;   else tx_ring_in++
-	;;  read/send [tx_ring_out+1], then tx_ring_out++
-
-	;; rx_ring_in works the same way
-	
-	.org 0x1000
-tx_ring:
-	.skip 0x100		; 256 bytes
-rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
diff --git a/helpers/DATA/linux-lts-saucy/firmware/whiteheat.HEX b/helpers/DATA/linux-lts-saucy/firmware/whiteheat.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/whiteheat.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader.HEX b/helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader_debug.HEX b/helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader_debug.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux-lts-saucy/firmware/whiteheat_loader_debug.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux-lts-saucy/megaraid.patch b/helpers/DATA/linux-lts-saucy/megaraid.patch
deleted file mode 100644
index 8b74efa2e..000000000
--- a/helpers/DATA/linux-lts-saucy/megaraid.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -ru linux-2.6.35.orig/drivers/scsi/megaraid.c linux-2.6.35/drivers/scsi/megaraid.c
---- linux-2.6.35.orig/drivers/scsi/megaraid.c	2010-08-01 22:11:14.000000000 +0000
-+++ linux-2.6.35/drivers/scsi/megaraid.c	2011-05-02 20:30:39.000000000 +0000
-@@ -4995,9 +4995,14 @@
- 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
- 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
- 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-+        {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
-+                HP_SUBSYS_VID, HP_NETRAID1M_SUBSYS_DID, 0, 0, 0},
-+        {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
-+                HP_SUBSYS_VID, HP_NETRAID2M_SUBSYS_DID, 0, 0, 0},
- 	{0,}
- };
- MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
-+#define HBA_SIGNATURE 0x3344
- 
- static struct pci_driver megaraid_pci_driver = {
- 	.name		= "megaraid_legacy",
-diff -ru linux-2.6.35.orig/drivers/scsi/megaraid.h linux-2.6.35/drivers/scsi/megaraid.h
---- linux-2.6.35.orig/drivers/scsi/megaraid.h	2010-08-01 22:11:14.000000000 +0000
-+++ linux-2.6.35/drivers/scsi/megaraid.h	2011-05-02 20:31:01.000000000 +0000
-@@ -84,6 +84,9 @@
- #define LSI_SUBSYS_VID			0x1000
- #define INTEL_SUBSYS_VID		0x8086
- 
-+#define HP_NETRAID1M_SUBSYS_DID 0x60E7
-+#define HP_NETRAID2M_SUBSYS_DID 0x60E8
-+
- #define HBA_SIGNATURE	      		0x3344
- #define HBA_SIGNATURE_471	  	0xCCCC
- #define HBA_SIGNATURE_64BIT		0x0299
diff --git a/helpers/DATA/linux-lts-utopic/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r7-3.16.patch b/helpers/DATA/linux-lts-utopic/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r7-3.16.patch
deleted file mode 100644
index b900213ff..000000000
--- a/helpers/DATA/linux-lts-utopic/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r7-3.16.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From c21ab7dfe08353f54716a1361b541aade42c1dca Mon Sep 17 00:00:00 2001
-From: Paolo Valente <paolo.valente@unimore.it>
-Date: Thu, 22 May 2014 11:59:35 +0200
-Subject: [PATCH 1/3] block: cgroups, kconfig, build bits for BFQ-v7r7-3.16
-
-Update Kconfig.iosched and do the related Makefile changes to include
-kernel configuration options for BFQ. Also add the bfqio controller
-to the cgroups subsystem.
-
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
----
- block/Kconfig.iosched         | 32 ++++++++++++++++++++++++++++++++
- block/Makefile                |  1 +
- include/linux/cgroup_subsys.h |  4 ++++
- 3 files changed, 37 insertions(+)
-
-diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
-index 421bef9..0ee5f0f 100644
---- a/block/Kconfig.iosched
-+++ b/block/Kconfig.iosched
-@@ -39,6 +39,27 @@ config CFQ_GROUP_IOSCHED
- 	---help---
- 	  Enable group IO scheduling in CFQ.
- 
-+config IOSCHED_BFQ
-+	tristate "BFQ I/O scheduler"
-+	default n
-+	---help---
-+	  The BFQ I/O scheduler tries to distribute bandwidth among
-+	  all processes according to their weights.
-+	  It aims at distributing the bandwidth as desired, independently of
-+	  the disk parameters and with any workload. It also tries to
-+	  guarantee low latency to interactive and soft real-time
-+	  applications. If compiled built-in (saying Y here), BFQ can
-+	  be configured to support hierarchical scheduling.
-+
-+config CGROUP_BFQIO
-+	bool "BFQ hierarchical scheduling support"
-+	depends on CGROUPS && IOSCHED_BFQ=y
-+	default n
-+	---help---
-+	  Enable hierarchical scheduling in BFQ, using the cgroups
-+	  filesystem interface.  The name of the subsystem will be
-+	  bfqio.
-+
- choice
- 	prompt "Default I/O scheduler"
- 	default DEFAULT_CFQ
-@@ -52,6 +73,16 @@ choice
- 	config DEFAULT_CFQ
- 		bool "CFQ" if IOSCHED_CFQ=y
- 
-+	config DEFAULT_BFQ
-+		bool "BFQ" if IOSCHED_BFQ=y
-+		help
-+		  Selects BFQ as the default I/O scheduler which will be
-+		  used by default for all block devices.
-+		  The BFQ I/O scheduler aims at distributing the bandwidth
-+		  as desired, independently of the disk parameters and with
-+		  any workload. It also tries to guarantee low latency to
-+		  interactive and soft real-time applications.
-+
- 	config DEFAULT_NOOP
- 		bool "No-op"
- 
-@@ -61,6 +92,7 @@ config DEFAULT_IOSCHED
- 	string
- 	default "deadline" if DEFAULT_DEADLINE
- 	default "cfq" if DEFAULT_CFQ
-+	default "bfq" if DEFAULT_BFQ
- 	default "noop" if DEFAULT_NOOP
- 
- endmenu
-diff --git a/block/Makefile b/block/Makefile
-index a2ce6ac..a0fc06a 100644
---- a/block/Makefile
-+++ b/block/Makefile
-@@ -18,6 +18,7 @@ obj-$(CONFIG_BLK_DEV_THROTTLING)	+= blk-throttle.o
- obj-$(CONFIG_IOSCHED_NOOP)	+= noop-iosched.o
- obj-$(CONFIG_IOSCHED_DEADLINE)	+= deadline-iosched.o
- obj-$(CONFIG_IOSCHED_CFQ)	+= cfq-iosched.o
-+obj-$(CONFIG_IOSCHED_BFQ)	+= bfq-iosched.o
- 
- obj-$(CONFIG_BLOCK_COMPAT)	+= compat_ioctl.o
- obj-$(CONFIG_BLK_DEV_INTEGRITY)	+= blk-integrity.o
-diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
-index 98c4f9b..13b010d 100644
---- a/include/linux/cgroup_subsys.h
-+++ b/include/linux/cgroup_subsys.h
-@@ -35,6 +35,10 @@ SUBSYS(net_cls)
- SUBSYS(blkio)
- #endif
- 
-+#if IS_ENABLED(CONFIG_CGROUP_BFQIO)
-+SUBSYS(bfqio)
-+#endif
-+
- #if IS_ENABLED(CONFIG_CGROUP_PERF)
- SUBSYS(perf_event)
- #endif
--- 
-2.1.3
-
diff --git a/helpers/DATA/linux-lts-utopic/0002-block-introduce-the-BFQ-v7r7-I-O-sched-for-3.16.patch b/helpers/DATA/linux-lts-utopic/0002-block-introduce-the-BFQ-v7r7-I-O-sched-for-3.16.patch
deleted file mode 100644
index 278d6de09..000000000
--- a/helpers/DATA/linux-lts-utopic/0002-block-introduce-the-BFQ-v7r7-I-O-sched-for-3.16.patch
+++ /dev/null
@@ -1,6966 +0,0 @@
-From c48252ca31c542194e4dbc0dca09b443e95a523c Mon Sep 17 00:00:00 2001
-From: Paolo Valente <paolo.valente@unimore.it>
-Date: Thu, 9 May 2013 19:10:02 +0200
-Subject: [PATCH 2/3] block: introduce the BFQ-v7r7 I/O sched for 3.16
-
-Add the BFQ-v7r7 I/O scheduler to 3.16.
-The general structure is borrowed from CFQ, as much of the code for
-handling I/O contexts. Over time, several useful features have been
-ported from CFQ as well (details in the changelog in README.BFQ). A
-(bfq_)queue is associated to each task doing I/O on a device, and each
-time a scheduling decision has to be made a queue is selected and served
-until it expires.
-
-    - Slices are given in the service domain: tasks are assigned
-      budgets, measured in number of sectors. Once got the disk, a task
-      must however consume its assigned budget within a configurable
-      maximum time (by default, the maximum possible value of the
-      budgets is automatically computed to comply with this timeout).
-      This allows the desired latency vs "throughput boosting" tradeoff
-      to be set.
-
-    - Budgets are scheduled according to a variant of WF2Q+, implemented
-      using an augmented rb-tree to take eligibility into account while
-      preserving an O(log N) overall complexity.
-
-    - A low-latency tunable is provided; if enabled, both interactive
-      and soft real-time applications are guaranteed a very low latency.
-
-    - Latency guarantees are preserved also in the presence of NCQ.
-
-    - Also with flash-based devices, a high throughput is achieved
-      while still preserving latency guarantees.
-
-    - BFQ features Early Queue Merge (EQM), a sort of fusion of the
-      cooperating-queue-merging and the preemption mechanisms present
-      in CFQ. EQM is in fact a unified mechanism that tries to get a
-      sequential read pattern, and hence a high throughput, with any
-      set of processes performing interleaved I/O over a contiguous
-      sequence of sectors.
-
-    - BFQ supports full hierarchical scheduling, exporting a cgroups
-      interface.  Since each node has a full scheduler, each group can
-      be assigned its own weight.
-
-    - If the cgroups interface is not used, only I/O priorities can be
-      assigned to processes, with ioprio values mapped to weights
-      with the relation weight = IOPRIO_BE_NR - ioprio.
-
-    - ioprio classes are served in strict priority order, i.e., lower
-      priority queues are not served as long as there are higher
-      priority queues.  Among queues in the same class the bandwidth is
-      distributed in proportion to the weight of each queue. A very
-      thin extra bandwidth is however guaranteed to the Idle class, to
-      prevent it from starving.
-
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
----
- block/bfq-cgroup.c  |  936 ++++++++++++
- block/bfq-ioc.c     |   36 +
- block/bfq-iosched.c | 3902 +++++++++++++++++++++++++++++++++++++++++++++++++++
- block/bfq-sched.c   | 1214 ++++++++++++++++
- block/bfq.h         |  775 ++++++++++
- 5 files changed, 6863 insertions(+)
- create mode 100644 block/bfq-cgroup.c
- create mode 100644 block/bfq-ioc.c
- create mode 100644 block/bfq-iosched.c
- create mode 100644 block/bfq-sched.c
- create mode 100644 block/bfq.h
-
-diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
-new file mode 100644
-index 0000000..9ce6584
---- /dev/null
-+++ b/block/bfq-cgroup.c
-@@ -0,0 +1,936 @@
-+/*
-+ * BFQ: CGROUPS support.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Licensed under the GPL-2 as detailed in the accompanying COPYING.BFQ
-+ * file.
-+ */
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+
-+static DEFINE_MUTEX(bfqio_mutex);
-+
-+static bool bfqio_is_removed(struct bfqio_cgroup *bgrp)
-+{
-+	return bgrp ? !bgrp->online : false;
-+}
-+
-+static struct bfqio_cgroup bfqio_root_cgroup = {
-+	.weight = BFQ_DEFAULT_GRP_WEIGHT,
-+	.ioprio = BFQ_DEFAULT_GRP_IOPRIO,
-+	.ioprio_class = BFQ_DEFAULT_GRP_CLASS,
-+};
-+
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
-+{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
-+}
-+
-+static struct bfqio_cgroup *css_to_bfqio(struct cgroup_subsys_state *css)
-+{
-+	return css ? container_of(css, struct bfqio_cgroup, css) : NULL;
-+}
-+
-+/*
-+ * Search the bfq_group for bfqd into the hash table (by now only a list)
-+ * of bgrp.  Must be called under rcu_read_lock().
-+ */
-+static struct bfq_group *bfqio_lookup_group(struct bfqio_cgroup *bgrp,
-+					    struct bfq_data *bfqd)
-+{
-+	struct bfq_group *bfqg;
-+	void *key;
-+
-+	hlist_for_each_entry_rcu(bfqg, &bgrp->group_data, group_node) {
-+		key = rcu_dereference(bfqg->bfqd);
-+		if (key == bfqd)
-+			return bfqg;
-+	}
-+
-+	return NULL;
-+}
-+
-+static inline void bfq_group_init_entity(struct bfqio_cgroup *bgrp,
-+					 struct bfq_group *bfqg)
-+{
-+	struct bfq_entity *entity = &bfqg->entity;
-+
-+	/*
-+	 * If the weight of the entity has never been set via the sysfs
-+	 * interface, then bgrp->weight == 0. In this case we initialize
-+	 * the weight from the current ioprio value. Otherwise, the group
-+	 * weight, if set, has priority over the ioprio value.
-+	 */
-+	if (bgrp->weight == 0) {
-+		entity->new_weight = bfq_ioprio_to_weight(bgrp->ioprio);
-+		entity->new_ioprio = bgrp->ioprio;
-+	} else {
-+		if (bgrp->weight < BFQ_MIN_WEIGHT ||
-+		    bgrp->weight > BFQ_MAX_WEIGHT) {
-+			printk(KERN_CRIT "bfq_group_init_entity: "
-+					 "bgrp->weight %d\n", bgrp->weight);
-+			BUG();
-+		}
-+		entity->new_weight = bgrp->weight;
-+		entity->new_ioprio = bfq_weight_to_ioprio(bgrp->weight);
-+	}
-+	entity->orig_weight = entity->weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class = bgrp->ioprio_class;
-+	entity->my_sched_data = &bfqg->sched_data;
-+	bfqg->active_entities = 0;
-+}
-+
-+static inline void bfq_group_set_parent(struct bfq_group *bfqg,
-+					struct bfq_group *parent)
-+{
-+	struct bfq_entity *entity;
-+
-+	BUG_ON(parent == NULL);
-+	BUG_ON(bfqg == NULL);
-+
-+	entity = &bfqg->entity;
-+	entity->parent = parent->my_entity;
-+	entity->sched_data = &parent->sched_data;
-+}
-+
-+/**
-+ * bfq_group_chain_alloc - allocate a chain of groups.
-+ * @bfqd: queue descriptor.
-+ * @css: the leaf cgroup_subsys_state this chain starts from.
-+ *
-+ * Allocate a chain of groups starting from the one belonging to
-+ * @cgroup up to the root cgroup.  Stop if a cgroup on the chain
-+ * to the root has already an allocated group on @bfqd.
-+ */
-+static struct bfq_group *bfq_group_chain_alloc(struct bfq_data *bfqd,
-+					       struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *prev = NULL, *leaf = NULL;
-+
-+	for (; css != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		if (bfqg != NULL) {
-+			/*
-+			 * All the cgroups in the path from there to the
-+			 * root must have a bfq_group for bfqd, so we don't
-+			 * need any more allocations.
-+			 */
-+			break;
-+		}
-+
-+		bfqg = kzalloc(sizeof(*bfqg), GFP_ATOMIC);
-+		if (bfqg == NULL)
-+			goto cleanup;
-+
-+		bfq_group_init_entity(bgrp, bfqg);
-+		bfqg->my_entity = &bfqg->entity;
-+
-+		if (leaf == NULL) {
-+			leaf = bfqg;
-+			prev = leaf;
-+		} else {
-+			bfq_group_set_parent(prev, bfqg);
-+			/*
-+			 * Build a list of allocated nodes using the bfqd
-+			 * filed, that is still unused and will be
-+			 * initialized only after the node will be
-+			 * connected.
-+			 */
-+			prev->bfqd = bfqg;
-+			prev = bfqg;
-+		}
-+	}
-+
-+	return leaf;
-+
-+cleanup:
-+	while (leaf != NULL) {
-+		prev = leaf;
-+		leaf = leaf->bfqd;
-+		kfree(prev);
-+	}
-+
-+	return NULL;
-+}
-+
-+/**
-+ * bfq_group_chain_link - link an allocated group chain to a cgroup
-+ *                        hierarchy.
-+ * @bfqd: the queue descriptor.
-+ * @css: the leaf cgroup_subsys_state to start from.
-+ * @leaf: the leaf group (to be associated to @cgroup).
-+ *
-+ * Try to link a chain of groups to a cgroup hierarchy, connecting the
-+ * nodes bottom-up, so we can be sure that when we find a cgroup in the
-+ * hierarchy that already as a group associated to @bfqd all the nodes
-+ * in the path to the root cgroup have one too.
-+ *
-+ * On locking: the queue lock protects the hierarchy (there is a hierarchy
-+ * per device) while the bfqio_cgroup lock protects the list of groups
-+ * belonging to the same cgroup.
-+ */
-+static void bfq_group_chain_link(struct bfq_data *bfqd,
-+				 struct cgroup_subsys_state *css,
-+				 struct bfq_group *leaf)
-+{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *next, *prev = NULL;
-+	unsigned long flags;
-+
-+	assert_spin_locked(bfqd->queue->queue_lock);
-+
-+	for (; css != NULL && leaf != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+		next = leaf->bfqd;
-+
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		BUG_ON(bfqg != NULL);
-+
-+		spin_lock_irqsave(&bgrp->lock, flags);
-+
-+		rcu_assign_pointer(leaf->bfqd, bfqd);
-+		hlist_add_head_rcu(&leaf->group_node, &bgrp->group_data);
-+		hlist_add_head(&leaf->bfqd_node, &bfqd->group_list);
-+
-+		spin_unlock_irqrestore(&bgrp->lock, flags);
-+
-+		prev = leaf;
-+		leaf = next;
-+	}
-+
-+	BUG_ON(css == NULL && leaf != NULL);
-+	if (css != NULL && prev != NULL) {
-+		bgrp = css_to_bfqio(css);
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		bfq_group_set_parent(prev, bfqg);
-+	}
-+}
-+
-+/**
-+ * bfq_find_alloc_group - return the group associated to @bfqd in @cgroup.
-+ * @bfqd: queue descriptor.
-+ * @cgroup: cgroup being searched for.
-+ *
-+ * Return a group associated to @bfqd in @cgroup, allocating one if
-+ * necessary.  When a group is returned all the cgroups in the path
-+ * to the root have a group associated to @bfqd.
-+ *
-+ * If the allocation fails, return the root group: this breaks guarantees
-+ * but is a safe fallback.  If this loss becomes a problem it can be
-+ * mitigated using the equivalent weight (given by the product of the
-+ * weights of the groups in the path from @group to the root) in the
-+ * root scheduler.
-+ *
-+ * We allocate all the missing nodes in the path from the leaf cgroup
-+ * to the root and we connect the nodes only after all the allocations
-+ * have been successful.
-+ */
-+static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
-+					      struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct bfq_group *bfqg;
-+
-+	bfqg = bfqio_lookup_group(bgrp, bfqd);
-+	if (bfqg != NULL)
-+		return bfqg;
-+
-+	bfqg = bfq_group_chain_alloc(bfqd, css);
-+	if (bfqg != NULL)
-+		bfq_group_chain_link(bfqd, css, bfqg);
-+	else
-+		bfqg = bfqd->root_group;
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_bfqq_move - migrate @bfqq to @bfqg.
-+ * @bfqd: queue descriptor.
-+ * @bfqq: the queue to move.
-+ * @entity: @bfqq's entity.
-+ * @bfqg: the group to move to.
-+ *
-+ * Move @bfqq to @bfqg, deactivating it from its old group and reactivating
-+ * it on the new one.  Avoid putting the entity on the old group idle tree.
-+ *
-+ * Must be called under the queue lock; the cgroup owning @bfqg must
-+ * not disappear (by now this just means that we are called under
-+ * rcu_read_lock()).
-+ */
-+static void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			  struct bfq_entity *entity, struct bfq_group *bfqg)
-+{
-+	int busy, resume;
-+
-+	busy = bfq_bfqq_busy(bfqq);
-+	resume = !RB_EMPTY_ROOT(&bfqq->sort_list);
-+
-+	BUG_ON(resume && !entity->on_st);
-+	BUG_ON(busy && !resume && entity->on_st &&
-+	       bfqq != bfqd->in_service_queue);
-+
-+	if (busy) {
-+		BUG_ON(atomic_read(&bfqq->ref) < 2);
-+
-+		if (!resume)
-+			bfq_del_bfqq_busy(bfqd, bfqq, 0);
-+		else
-+			bfq_deactivate_bfqq(bfqd, bfqq, 0);
-+	} else if (entity->on_st)
-+		bfq_put_idle_entity(bfq_entity_service_tree(entity), entity);
-+
-+	/*
-+	 * Here we use a reference to bfqg.  We don't need a refcounter
-+	 * as the cgroup reference will not be dropped, so that its
-+	 * destroy() callback will not be invoked.
-+	 */
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
-+
-+	if (busy && resume)
-+		bfq_activate_bfqq(bfqd, bfqq);
-+
-+	if (bfqd->in_service_queue == NULL && !bfqd->rq_in_driver)
-+		bfq_schedule_dispatch(bfqd);
-+}
-+
-+/**
-+ * __bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bfqd: the queue descriptor.
-+ * @bic: the bic to move.
-+ * @cgroup: the cgroup to move to.
-+ *
-+ * Move bic to cgroup, assuming that bfqd->queue is locked; the caller
-+ * has to make sure that the reference to cgroup is valid across the call.
-+ *
-+ * NOTE: an alternative approach might have been to store the current
-+ * cgroup in bfqq and getting a reference to it, reducing the lookup
-+ * time here, at the price of slightly more complex code.
-+ */
-+static struct bfq_group *__bfq_bic_change_cgroup(struct bfq_data *bfqd,
-+						struct bfq_io_cq *bic,
-+						struct cgroup_subsys_state *css)
-+{
-+	struct bfq_queue *async_bfqq = bic_to_bfqq(bic, 0);
-+	struct bfq_queue *sync_bfqq = bic_to_bfqq(bic, 1);
-+	struct bfq_entity *entity;
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+
-+	bgrp = css_to_bfqio(css);
-+
-+	bfqg = bfq_find_alloc_group(bfqd, css);
-+	if (async_bfqq != NULL) {
-+		entity = &async_bfqq->entity;
-+
-+		if (entity->sched_data != &bfqg->sched_data) {
-+			bic_set_bfqq(bic, NULL, 0);
-+			bfq_log_bfqq(bfqd, async_bfqq,
-+				     "bic_change_group: %p %d",
-+				     async_bfqq, atomic_read(&async_bfqq->ref));
-+			bfq_put_queue(async_bfqq);
-+		}
-+	}
-+
-+	if (sync_bfqq != NULL) {
-+		entity = &sync_bfqq->entity;
-+		if (entity->sched_data != &bfqg->sched_data)
-+			bfq_bfqq_move(bfqd, sync_bfqq, entity, bfqg);
-+	}
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bic: the bic being migrated.
-+ * @cgroup: the destination cgroup.
-+ *
-+ * When the task owning @bic is moved to @cgroup, @bic is immediately
-+ * moved into its new parent group.
-+ */
-+static void bfq_bic_change_cgroup(struct bfq_io_cq *bic,
-+				  struct cgroup_subsys_state *css)
-+{
-+	struct bfq_data *bfqd;
-+	unsigned long uninitialized_var(flags);
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	if (bfqd != NULL) {
-+		__bfq_bic_change_cgroup(bfqd, bic, css);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+}
-+
-+/**
-+ * bfq_bic_update_cgroup - update the cgroup of @bic.
-+ * @bic: the @bic to update.
-+ *
-+ * Make sure that @bic is enqueued in the cgroup of the current task.
-+ * We need this in addition to moving bics during the cgroup attach
-+ * phase because the task owning @bic could be at its first disk
-+ * access or we may end up in the root cgroup as the result of a
-+ * memory allocation failure and here we try to move to the right
-+ * group.
-+ *
-+ * Must be called under the queue lock.  It is safe to use the returned
-+ * value even after the rcu_read_unlock() as the migration/destruction
-+ * paths act under the queue lock too.  IOW it is impossible to race with
-+ * group migration/destruction and end up with an invalid group as:
-+ *   a) here cgroup has not yet been destroyed, nor its destroy callback
-+ *      has started execution, as current holds a reference to it,
-+ *   b) if it is destroyed after rcu_read_unlock() [after current is
-+ *      migrated to a different cgroup] its attach() callback will have
-+ *      taken care of remove all the references to the old cgroup data.
-+ */
-+static struct bfq_group *bfq_bic_update_cgroup(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	struct bfq_group *bfqg;
-+	struct cgroup_subsys_state *css;
-+
-+	BUG_ON(bfqd == NULL);
-+
-+	rcu_read_lock();
-+	css = task_css(current, bfqio_cgrp_id);
-+	bfqg = __bfq_bic_change_cgroup(bfqd, bic, css);
-+	rcu_read_unlock();
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_flush_idle_tree - deactivate any entity on the idle tree of @st.
-+ * @st: the service tree being flushed.
-+ */
-+static inline void bfq_flush_idle_tree(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entity = st->first_idle;
-+
-+	for (; entity != NULL; entity = st->first_idle)
-+		__bfq_deactivate_entity(entity, 0);
-+}
-+
-+/**
-+ * bfq_reparent_leaf_entity - move leaf entity to the root_group.
-+ * @bfqd: the device data structure with the root group.
-+ * @entity: the entity to move.
-+ */
-+static inline void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
-+					    struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	BUG_ON(bfqq == NULL);
-+	bfq_bfqq_move(bfqd, bfqq, entity, bfqd->root_group);
-+	return;
-+}
-+
-+/**
-+ * bfq_reparent_active_entities - move to the root group all active
-+ *                                entities.
-+ * @bfqd: the device data structure with the root group.
-+ * @bfqg: the group to move from.
-+ * @st: the service tree with the entities.
-+ *
-+ * Needs queue_lock to be taken and reference to be valid over the call.
-+ */
-+static inline void bfq_reparent_active_entities(struct bfq_data *bfqd,
-+						struct bfq_group *bfqg,
-+						struct bfq_service_tree *st)
-+{
-+	struct rb_root *active = &st->active;
-+	struct bfq_entity *entity = NULL;
-+
-+	if (!RB_EMPTY_ROOT(&st->active))
-+		entity = bfq_entity_of(rb_first(active));
-+
-+	for (; entity != NULL; entity = bfq_entity_of(rb_first(active)))
-+		bfq_reparent_leaf_entity(bfqd, entity);
-+
-+	if (bfqg->sched_data.in_service_entity != NULL)
-+		bfq_reparent_leaf_entity(bfqd,
-+			bfqg->sched_data.in_service_entity);
-+
-+	return;
-+}
-+
-+/**
-+ * bfq_destroy_group - destroy @bfqg.
-+ * @bgrp: the bfqio_cgroup containing @bfqg.
-+ * @bfqg: the group being destroyed.
-+ *
-+ * Destroy @bfqg, making sure that it is not referenced from its parent.
-+ */
-+static void bfq_destroy_group(struct bfqio_cgroup *bgrp, struct bfq_group *bfqg)
-+{
-+	struct bfq_data *bfqd;
-+	struct bfq_service_tree *st;
-+	struct bfq_entity *entity = bfqg->my_entity;
-+	unsigned long uninitialized_var(flags);
-+	int i;
-+
-+	hlist_del(&bfqg->group_node);
-+
-+	/*
-+	 * Empty all service_trees belonging to this group before
-+	 * deactivating the group itself.
-+	 */
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++) {
-+		st = bfqg->sched_data.service_tree + i;
-+
-+		/*
-+		 * The idle tree may still contain bfq_queues belonging
-+		 * to exited task because they never migrated to a different
-+		 * cgroup from the one being destroyed now.  No one else
-+		 * can access them so it's safe to act without any lock.
-+		 */
-+		bfq_flush_idle_tree(st);
-+
-+		/*
-+		 * It may happen that some queues are still active
-+		 * (busy) upon group destruction (if the corresponding
-+		 * processes have been forced to terminate). We move
-+		 * all the leaf entities corresponding to these queues
-+		 * to the root_group.
-+		 * Also, it may happen that the group has an entity
-+		 * in service, which is disconnected from the active
-+		 * tree: it must be moved, too.
-+		 * There is no need to put the sync queues, as the
-+		 * scheduler has taken no reference.
-+		 */
-+		bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+		if (bfqd != NULL) {
-+			bfq_reparent_active_entities(bfqd, bfqg, st);
-+			bfq_put_bfqd_unlock(bfqd, &flags);
-+		}
-+		BUG_ON(!RB_EMPTY_ROOT(&st->active));
-+		BUG_ON(!RB_EMPTY_ROOT(&st->idle));
-+	}
-+	BUG_ON(bfqg->sched_data.next_in_service != NULL);
-+	BUG_ON(bfqg->sched_data.in_service_entity != NULL);
-+
-+	/*
-+	 * We may race with device destruction, take extra care when
-+	 * dereferencing bfqg->bfqd.
-+	 */
-+	bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+	if (bfqd != NULL) {
-+		hlist_del(&bfqg->bfqd_node);
-+		__bfq_deactivate_entity(entity, 0);
-+		bfq_put_async_queues(bfqd, bfqg);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+	BUG_ON(entity->tree != NULL);
-+
-+	/*
-+	 * No need to defer the kfree() to the end of the RCU grace
-+	 * period: we are called from the destroy() callback of our
-+	 * cgroup, so we can be sure that no one is a) still using
-+	 * this cgroup or b) doing lookups in it.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static void bfq_end_wr_async(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node)
-+		bfq_end_wr_async_queues(bfqd, bfqg);
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+/**
-+ * bfq_disconnect_groups - disconnect @bfqd from all its groups.
-+ * @bfqd: the device descriptor being exited.
-+ *
-+ * When the device exits we just make sure that no lookup can return
-+ * the now unused group structures.  They will be deallocated on cgroup
-+ * destruction.
-+ */
-+static void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	bfq_log(bfqd, "disconnect_groups beginning");
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node) {
-+		hlist_del(&bfqg->bfqd_node);
-+
-+		__bfq_deactivate_entity(bfqg->my_entity, 0);
-+
-+		/*
-+		 * Don't remove from the group hash, just set an
-+		 * invalid key.  No lookups can race with the
-+		 * assignment as bfqd is being destroyed; this
-+		 * implies also that new elements cannot be added
-+		 * to the list.
-+		 */
-+		rcu_assign_pointer(bfqg->bfqd, NULL);
-+
-+		bfq_log(bfqd, "disconnect_groups: put async for group %p",
-+			bfqg);
-+		bfq_put_async_queues(bfqd, bfqg);
-+	}
-+}
-+
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	struct bfqio_cgroup *bgrp = &bfqio_root_cgroup;
-+	struct bfq_group *bfqg = bfqd->root_group;
-+
-+	bfq_put_async_queues(bfqd, bfqg);
-+
-+	spin_lock_irq(&bgrp->lock);
-+	hlist_del_rcu(&bfqg->group_node);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	/*
-+	 * No need to synchronize_rcu() here: since the device is gone
-+	 * there cannot be any read-side access to its root_group.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
-+{
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+	int i;
-+
-+	bfqg = kzalloc_node(sizeof(*bfqg), GFP_KERNEL, node);
-+	if (bfqg == NULL)
-+		return NULL;
-+
-+	bfqg->entity.parent = NULL;
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	bgrp = &bfqio_root_cgroup;
-+	spin_lock_irq(&bgrp->lock);
-+	rcu_assign_pointer(bfqg->bfqd, bfqd);
-+	hlist_add_head_rcu(&bfqg->group_node, &bgrp->group_data);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	return bfqg;
-+}
-+
-+#define SHOW_FUNCTION(__VAR)						\
-+static u64 bfqio_cgroup_##__VAR##_read(struct cgroup_subsys_state *css, \
-+				       struct cftype *cftype)		\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	u64 ret = -ENODEV;						\
-+									\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	ret = bgrp->__VAR;						\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
-+
-+SHOW_FUNCTION(weight);
-+SHOW_FUNCTION(ioprio);
-+SHOW_FUNCTION(ioprio_class);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__VAR, __MIN, __MAX)				\
-+static int bfqio_cgroup_##__VAR##_write(struct cgroup_subsys_state *css,\
-+					struct cftype *cftype,		\
-+					u64 val)			\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	struct bfq_group *bfqg;						\
-+	int ret = -EINVAL;						\
-+									\
-+	if (val < (__MIN) || val > (__MAX))				\
-+		return ret;						\
-+									\
-+	ret = -ENODEV;							\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+	ret = 0;							\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	bgrp->__VAR = (unsigned short)val;				\
-+	hlist_for_each_entry(bfqg, &bgrp->group_data, group_node) {	\
-+		/*							\
-+		 * Setting the ioprio_changed flag of the entity        \
-+		 * to 1 with new_##__VAR == ##__VAR would re-set        \
-+		 * the value of the weight to its ioprio mapping.       \
-+		 * Set the flag only if necessary.			\
-+		 */							\
-+		if ((unsigned short)val != bfqg->entity.new_##__VAR) {  \
-+			bfqg->entity.new_##__VAR = (unsigned short)val; \
-+			/*						\
-+			 * Make sure that the above new value has been	\
-+			 * stored in bfqg->entity.new_##__VAR before	\
-+			 * setting the ioprio_changed flag. In fact,	\
-+			 * this flag may be read asynchronously (in	\
-+			 * critical sections protected by a different	\
-+			 * lock than that held here), and finding this	\
-+			 * flag set may cause the execution of the code	\
-+			 * for updating parameters whose value may	\
-+			 * depend also on bfqg->entity.new_##__VAR (in	\
-+			 * __bfq_entity_update_weight_prio).		\
-+			 * This barrier makes sure that the new value	\
-+			 * of bfqg->entity.new_##__VAR is correctly	\
-+			 * seen in that code.				\
-+			 */						\
-+			smp_wmb();                                      \
-+			bfqg->entity.ioprio_changed = 1;                \
-+		}							\
-+	}								\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
-+
-+STORE_FUNCTION(weight, BFQ_MIN_WEIGHT, BFQ_MAX_WEIGHT);
-+STORE_FUNCTION(ioprio, 0, IOPRIO_BE_NR - 1);
-+STORE_FUNCTION(ioprio_class, IOPRIO_CLASS_RT, IOPRIO_CLASS_IDLE);
-+#undef STORE_FUNCTION
-+
-+static struct cftype bfqio_files[] = {
-+	{
-+		.name = "weight",
-+		.read_u64 = bfqio_cgroup_weight_read,
-+		.write_u64 = bfqio_cgroup_weight_write,
-+	},
-+	{
-+		.name = "ioprio",
-+		.read_u64 = bfqio_cgroup_ioprio_read,
-+		.write_u64 = bfqio_cgroup_ioprio_write,
-+	},
-+	{
-+		.name = "ioprio_class",
-+		.read_u64 = bfqio_cgroup_ioprio_class_read,
-+		.write_u64 = bfqio_cgroup_ioprio_class_write,
-+	},
-+	{ },	/* terminate */
-+};
-+
-+static struct cgroup_subsys_state *bfqio_create(struct cgroup_subsys_state
-+						*parent_css)
-+{
-+	struct bfqio_cgroup *bgrp;
-+
-+	if (parent_css != NULL) {
-+		bgrp = kzalloc(sizeof(*bgrp), GFP_KERNEL);
-+		if (bgrp == NULL)
-+			return ERR_PTR(-ENOMEM);
-+	} else
-+		bgrp = &bfqio_root_cgroup;
-+
-+	spin_lock_init(&bgrp->lock);
-+	INIT_HLIST_HEAD(&bgrp->group_data);
-+	bgrp->ioprio = BFQ_DEFAULT_GRP_IOPRIO;
-+	bgrp->ioprio_class = BFQ_DEFAULT_GRP_CLASS;
-+
-+	return &bgrp->css;
-+}
-+
-+/*
-+ * We cannot support shared io contexts, as we have no means to support
-+ * two tasks with the same ioc in two different groups without major rework
-+ * of the main bic/bfqq data structures.  By now we allow a task to change
-+ * its cgroup only if it's the only owner of its ioc; the drawback of this
-+ * behavior is that a group containing a task that forked using CLONE_IO
-+ * will not be destroyed until the tasks sharing the ioc die.
-+ */
-+static int bfqio_can_attach(struct cgroup_subsys_state *css,
-+			    struct cgroup_taskset *tset)
-+{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	int ret = 0;
-+
-+	cgroup_taskset_for_each(task, tset) {
-+		/*
-+		 * task_lock() is needed to avoid races with
-+		 * exit_io_context()
-+		 */
-+		task_lock(task);
-+		ioc = task->io_context;
-+		if (ioc != NULL && atomic_read(&ioc->nr_tasks) > 1)
-+			/*
-+			 * ioc == NULL means that the task is either too
-+			 * young or exiting: if it has still no ioc the
-+			 * ioc can't be shared, if the task is exiting the
-+			 * attach will fail anyway, no matter what we
-+			 * return here.
-+			 */
-+			ret = -EINVAL;
-+		task_unlock(task);
-+		if (ret)
-+			break;
-+	}
-+
-+	return ret;
-+}
-+
-+static void bfqio_attach(struct cgroup_subsys_state *css,
-+			 struct cgroup_taskset *tset)
-+{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	struct io_cq *icq;
-+
-+	/*
-+	 * IMPORTANT NOTE: The move of more than one process at a time to a
-+	 * new group has not yet been tested.
-+	 */
-+	cgroup_taskset_for_each(task, tset) {
-+		ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);
-+		if (ioc) {
-+			/*
-+			 * Handle cgroup change here.
-+			 */
-+			rcu_read_lock();
-+			hlist_for_each_entry_rcu(icq, &ioc->icq_list, ioc_node)
-+				if (!strncmp(
-+					icq->q->elevator->type->elevator_name,
-+					"bfq", ELV_NAME_MAX))
-+					bfq_bic_change_cgroup(icq_to_bic(icq),
-+							      css);
-+			rcu_read_unlock();
-+			put_io_context(ioc);
-+		}
-+	}
-+}
-+
-+static void bfqio_destroy(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	/*
-+	 * Since we are destroying the cgroup, there are no more tasks
-+	 * referencing it, and all the RCU grace periods that may have
-+	 * referenced it are ended (as the destruction of the parent
-+	 * cgroup is RCU-safe); bgrp->group_data will not be accessed by
-+	 * anything else and we don't need any synchronization.
-+	 */
-+	hlist_for_each_entry_safe(bfqg, tmp, &bgrp->group_data, group_node)
-+		bfq_destroy_group(bgrp, bfqg);
-+
-+	BUG_ON(!hlist_empty(&bgrp->group_data));
-+
-+	kfree(bgrp);
-+}
-+
-+static int bfqio_css_online(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = true;
-+	mutex_unlock(&bfqio_mutex);
-+
-+	return 0;
-+}
-+
-+static void bfqio_css_offline(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = false;
-+	mutex_unlock(&bfqio_mutex);
-+}
-+
-+struct cgroup_subsys bfqio_cgrp_subsys = {
-+	.css_alloc = bfqio_create,
-+	.css_online = bfqio_css_online,
-+	.css_offline = bfqio_css_offline,
-+	.can_attach = bfqio_can_attach,
-+	.attach = bfqio_attach,
-+	.css_free = bfqio_destroy,
-+	.base_cftypes = bfqio_files,
-+};
-+#else
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
-+{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->sched_data = &bfqg->sched_data;
-+}
-+
-+static inline struct bfq_group *
-+bfq_bic_update_cgroup(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	return bfqd->root_group;
-+}
-+
-+static inline void bfq_bfqq_move(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq,
-+				 struct bfq_entity *entity,
-+				 struct bfq_group *bfqg)
-+{
-+}
-+
-+static void bfq_end_wr_async(struct bfq_data *bfqd)
-+{
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+static inline void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	bfq_put_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	kfree(bfqd->root_group);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
-+{
-+	struct bfq_group *bfqg;
-+	int i;
-+
-+	bfqg = kmalloc_node(sizeof(*bfqg), GFP_KERNEL | __GFP_ZERO, node);
-+	if (bfqg == NULL)
-+		return NULL;
-+
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	return bfqg;
-+}
-+#endif
-diff --git a/block/bfq-ioc.c b/block/bfq-ioc.c
-new file mode 100644
-index 0000000..7f6b000
---- /dev/null
-+++ b/block/bfq-ioc.c
-@@ -0,0 +1,36 @@
-+/*
-+ * BFQ: I/O context handling.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+/**
-+ * icq_to_bic - convert iocontext queue structure to bfq_io_cq.
-+ * @icq: the iocontext queue.
-+ */
-+static inline struct bfq_io_cq *icq_to_bic(struct io_cq *icq)
-+{
-+	/* bic->icq is the first member, %NULL will convert to %NULL */
-+	return container_of(icq, struct bfq_io_cq, icq);
-+}
-+
-+/**
-+ * bfq_bic_lookup - search into @ioc a bic associated to @bfqd.
-+ * @bfqd: the lookup key.
-+ * @ioc: the io_context of the process doing I/O.
-+ *
-+ * Queue lock must be held.
-+ */
-+static inline struct bfq_io_cq *bfq_bic_lookup(struct bfq_data *bfqd,
-+					       struct io_context *ioc)
-+{
-+	if (ioc)
-+		return icq_to_bic(ioc_lookup_icq(ioc, bfqd->queue));
-+	return NULL;
-+}
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-new file mode 100644
-index 0000000..97ee934
---- /dev/null
-+++ b/block/bfq-iosched.c
-@@ -0,0 +1,3902 @@
-+/*
-+ * Budget Fair Queueing (BFQ) disk scheduler.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Licensed under the GPL-2 as detailed in the accompanying COPYING.BFQ
-+ * file.
-+ *
-+ * BFQ is a proportional-share storage-I/O scheduling algorithm based on
-+ * the slice-by-slice service scheme of CFQ. But BFQ assigns budgets,
-+ * measured in number of sectors, to processes instead of time slices. The
-+ * device is not granted to the in-service process for a given time slice,
-+ * but until it has exhausted its assigned budget. This change from the time
-+ * to the service domain allows BFQ to distribute the device throughput
-+ * among processes as desired, without any distortion due to ZBR, workload
-+ * fluctuations or other factors. BFQ uses an ad hoc internal scheduler,
-+ * called B-WF2Q+, to schedule processes according to their budgets. More
-+ * precisely, BFQ schedules queues associated to processes. Thanks to the
-+ * accurate policy of B-WF2Q+, BFQ can afford to assign high budgets to
-+ * I/O-bound processes issuing sequential requests (to boost the
-+ * throughput), and yet guarantee a low latency to interactive and soft
-+ * real-time applications.
-+ *
-+ * BFQ is described in [1], where also a reference to the initial, more
-+ * theoretical paper on BFQ can be found. The interested reader can find
-+ * in the latter paper full details on the main algorithm, as well as
-+ * formulas of the guarantees and formal proofs of all the properties.
-+ * With respect to the version of BFQ presented in these papers, this
-+ * implementation adds a few more heuristics, such as the one that
-+ * guarantees a low latency to soft real-time applications, and a
-+ * hierarchical extension based on H-WF2Q+.
-+ *
-+ * B-WF2Q+ is based on WF2Q+, that is described in [2], together with
-+ * H-WF2Q+, while the augmented tree used to implement B-WF2Q+ with O(log N)
-+ * complexity derives from the one introduced with EEVDF in [3].
-+ *
-+ * [1] P. Valente and M. Andreolini, ``Improving Application Responsiveness
-+ *     with the BFQ Disk I/O Scheduler'',
-+ *     Proceedings of the 5th Annual International Systems and Storage
-+ *     Conference (SYSTOR '12), June 2012.
-+ *
-+ * http://algogroup.unimo.it/people/paolo/disk_sched/bf1-v1-suite-results.pdf
-+ *
-+ * [2] Jon C.R. Bennett and H. Zhang, ``Hierarchical Packet Fair Queueing
-+ *     Algorithms,'' IEEE/ACM Transactions on Networking, 5(5):675-689,
-+ *     Oct 1997.
-+ *
-+ * http://www.cs.cmu.edu/~hzhang/papers/TON-97-Oct.ps.gz
-+ *
-+ * [3] I. Stoica and H. Abdel-Wahab, ``Earliest Eligible Virtual Deadline
-+ *     First: A Flexible and Accurate Mechanism for Proportional Share
-+ *     Resource Allocation,'' technical report.
-+ *
-+ * http://www.cs.berkeley.edu/~istoica/papers/eevdf-tr-95.pdf
-+ */
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/blkdev.h>
-+#include <linux/cgroup.h>
-+#include <linux/elevator.h>
-+#include <linux/jiffies.h>
-+#include <linux/rbtree.h>
-+#include <linux/ioprio.h>
-+#include "bfq.h"
-+#include "blk.h"
-+
-+/* Max number of dispatches in one round of service. */
-+static const int bfq_quantum = 4;
-+
-+/* Expiration time of sync (0) and async (1) requests, in jiffies. */
-+static const int bfq_fifo_expire[2] = { HZ / 4, HZ / 8 };
-+
-+/* Maximum backwards seek, in KiB. */
-+static const int bfq_back_max = 16 * 1024;
-+
-+/* Penalty of a backwards seek, in number of sectors. */
-+static const int bfq_back_penalty = 2;
-+
-+/* Idling period duration, in jiffies. */
-+static int bfq_slice_idle = HZ / 125;
-+
-+/* Default maximum budget values, in sectors and number of requests. */
-+static const int bfq_default_max_budget = 16 * 1024;
-+static const int bfq_max_budget_async_rq = 4;
-+
-+/*
-+ * Async to sync throughput distribution is controlled as follows:
-+ * when an async request is served, the entity is charged the number
-+ * of sectors of the request, multiplied by the factor below
-+ */
-+static const int bfq_async_charge_factor = 10;
-+
-+/* Default timeout values, in jiffies, approximating CFQ defaults. */
-+static const int bfq_timeout_sync = HZ / 8;
-+static int bfq_timeout_async = HZ / 25;
-+
-+struct kmem_cache *bfq_pool;
-+
-+/* Below this threshold (in ms), we consider thinktime immediate. */
-+#define BFQ_MIN_TT		2
-+
-+/* hw_tag detection: parallel requests threshold and min samples needed. */
-+#define BFQ_HW_QUEUE_THRESHOLD	4
-+#define BFQ_HW_QUEUE_SAMPLES	32
-+
-+#define BFQQ_SEEK_THR	 (sector_t)(8 * 1024)
-+#define BFQQ_SEEKY(bfqq) ((bfqq)->seek_mean > BFQQ_SEEK_THR)
-+
-+/* Min samples used for peak rate estimation (for autotuning). */
-+#define BFQ_PEAK_RATE_SAMPLES	32
-+
-+/* Shift used for peak rate fixed precision calculations. */
-+#define BFQ_RATE_SHIFT		16
-+
-+/*
-+ * By default, BFQ computes the duration of the weight raising for
-+ * interactive applications automatically, using the following formula:
-+ * duration = (R / r) * T, where r is the peak rate of the device, and
-+ * R and T are two reference parameters.
-+ * In particular, R is the peak rate of the reference device (see below),
-+ * and T is a reference time: given the systems that are likely to be
-+ * installed on the reference device according to its speed class, T is
-+ * about the maximum time needed, under BFQ and while reading two files in
-+ * parallel, to load typical large applications on these systems.
-+ * In practice, the slower/faster the device at hand is, the more/less it
-+ * takes to load applications with respect to the reference device.
-+ * Accordingly, the longer/shorter BFQ grants weight raising to interactive
-+ * applications.
-+ *
-+ * BFQ uses four different reference pairs (R, T), depending on:
-+ * . whether the device is rotational or non-rotational;
-+ * . whether the device is slow, such as old or portable HDDs, as well as
-+ *   SD cards, or fast, such as newer HDDs and SSDs.
-+ *
-+ * The device's speed class is dynamically (re)detected in
-+ * bfq_update_peak_rate() every time the estimated peak rate is updated.
-+ *
-+ * In the following definitions, R_slow[0]/R_fast[0] and T_slow[0]/T_fast[0]
-+ * are the reference values for a slow/fast rotational device, whereas
-+ * R_slow[1]/R_fast[1] and T_slow[1]/T_fast[1] are the reference values for
-+ * a slow/fast non-rotational device. Finally, device_speed_thresh are the
-+ * thresholds used to switch between speed classes.
-+ * Both the reference peak rates and the thresholds are measured in
-+ * sectors/usec, left-shifted by BFQ_RATE_SHIFT.
-+ */
-+static int R_slow[2] = {1536, 10752};
-+static int R_fast[2] = {17415, 34791};
-+/*
-+ * To improve readability, a conversion function is used to initialize the
-+ * following arrays, which entails that they can be initialized only in a
-+ * function.
-+ */
-+static int T_slow[2];
-+static int T_fast[2];
-+static int device_speed_thresh[2];
-+
-+#define BFQ_SERVICE_TREE_INIT	((struct bfq_service_tree)		\
-+				{ RB_ROOT, RB_ROOT, NULL, NULL, 0, 0 })
-+
-+#define RQ_BIC(rq)		((struct bfq_io_cq *) (rq)->elv.priv[0])
-+#define RQ_BFQQ(rq)		((rq)->elv.priv[1])
-+
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd);
-+
-+#include "bfq-ioc.c"
-+#include "bfq-sched.c"
-+#include "bfq-cgroup.c"
-+
-+#define bfq_class_idle(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_IDLE)
-+#define bfq_class_rt(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_RT)
-+
-+#define bfq_sample_valid(samples)	((samples) > 80)
-+
-+/*
-+ * We regard a request as SYNC, if either it's a read or has the SYNC bit
-+ * set (in which case it could also be a direct WRITE).
-+ */
-+static inline int bfq_bio_sync(struct bio *bio)
-+{
-+	if (bio_data_dir(bio) == READ || (bio->bi_rw & REQ_SYNC))
-+		return 1;
-+
-+	return 0;
-+}
-+
-+/*
-+ * Scheduler run of queue, if there are requests pending and no one in the
-+ * driver that will restart queueing.
-+ */
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd)
-+{
-+	if (bfqd->queued != 0) {
-+		bfq_log(bfqd, "schedule dispatch");
-+		kblockd_schedule_work(&bfqd->unplug_work);
-+	}
-+}
-+
-+/*
-+ * Lifted from AS - choose which of rq1 and rq2 that is best served now.
-+ * We choose the request that is closesr to the head right now.  Distance
-+ * behind the head is penalized and only allowed to a certain extent.
-+ */
-+static struct request *bfq_choose_req(struct bfq_data *bfqd,
-+				      struct request *rq1,
-+				      struct request *rq2,
-+				      sector_t last)
-+{
-+	sector_t s1, s2, d1 = 0, d2 = 0;
-+	unsigned long back_max;
-+#define BFQ_RQ1_WRAP	0x01 /* request 1 wraps */
-+#define BFQ_RQ2_WRAP	0x02 /* request 2 wraps */
-+	unsigned wrap = 0; /* bit mask: requests behind the disk head? */
-+
-+	if (rq1 == NULL || rq1 == rq2)
-+		return rq2;
-+	if (rq2 == NULL)
-+		return rq1;
-+
-+	if (rq_is_sync(rq1) && !rq_is_sync(rq2))
-+		return rq1;
-+	else if (rq_is_sync(rq2) && !rq_is_sync(rq1))
-+		return rq2;
-+	if ((rq1->cmd_flags & REQ_META) && !(rq2->cmd_flags & REQ_META))
-+		return rq1;
-+	else if ((rq2->cmd_flags & REQ_META) && !(rq1->cmd_flags & REQ_META))
-+		return rq2;
-+
-+	s1 = blk_rq_pos(rq1);
-+	s2 = blk_rq_pos(rq2);
-+
-+	/*
-+	 * By definition, 1KiB is 2 sectors.
-+	 */
-+	back_max = bfqd->bfq_back_max * 2;
-+
-+	/*
-+	 * Strict one way elevator _except_ in the case where we allow
-+	 * short backward seeks which are biased as twice the cost of a
-+	 * similar forward seek.
-+	 */
-+	if (s1 >= last)
-+		d1 = s1 - last;
-+	else if (s1 + back_max >= last)
-+		d1 = (last - s1) * bfqd->bfq_back_penalty;
-+	else
-+		wrap |= BFQ_RQ1_WRAP;
-+
-+	if (s2 >= last)
-+		d2 = s2 - last;
-+	else if (s2 + back_max >= last)
-+		d2 = (last - s2) * bfqd->bfq_back_penalty;
-+	else
-+		wrap |= BFQ_RQ2_WRAP;
-+
-+	/* Found required data */
-+
-+	/*
-+	 * By doing switch() on the bit mask "wrap" we avoid having to
-+	 * check two variables for all permutations: --> faster!
-+	 */
-+	switch (wrap) {
-+	case 0: /* common case for CFQ: rq1 and rq2 not wrapped */
-+		if (d1 < d2)
-+			return rq1;
-+		else if (d2 < d1)
-+			return rq2;
-+		else {
-+			if (s1 >= s2)
-+				return rq1;
-+			else
-+				return rq2;
-+		}
-+
-+	case BFQ_RQ2_WRAP:
-+		return rq1;
-+	case BFQ_RQ1_WRAP:
-+		return rq2;
-+	case (BFQ_RQ1_WRAP|BFQ_RQ2_WRAP): /* both rqs wrapped */
-+	default:
-+		/*
-+		 * Since both rqs are wrapped,
-+		 * start with the one that's further behind head
-+		 * (--> only *one* back seek required),
-+		 * since back seek takes more time than forward.
-+		 */
-+		if (s1 <= s2)
-+			return rq1;
-+		else
-+			return rq2;
-+	}
-+}
-+
-+static struct bfq_queue *
-+bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
-+		     sector_t sector, struct rb_node **ret_parent,
-+		     struct rb_node ***rb_link)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	parent = NULL;
-+	p = &root->rb_node;
-+	while (*p) {
-+		struct rb_node **n;
-+
-+		parent = *p;
-+		bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+
-+		/*
-+		 * Sort strictly based on sector. Smallest to the left,
-+		 * largest to the right.
-+		 */
-+		if (sector > blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_right;
-+		else if (sector < blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_left;
-+		else
-+			break;
-+		p = n;
-+		bfqq = NULL;
-+	}
-+
-+	*ret_parent = parent;
-+	if (rb_link)
-+		*rb_link = p;
-+
-+	bfq_log(bfqd, "rq_pos_tree_lookup %llu: returning %d",
-+		(long long unsigned)sector,
-+		bfqq != NULL ? bfqq->pid : 0);
-+
-+	return bfqq;
-+}
-+
-+static void bfq_rq_pos_tree_add(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *__bfqq;
-+
-+	if (bfqq->pos_root != NULL) {
-+		rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+		bfqq->pos_root = NULL;
-+	}
-+
-+	if (bfq_class_idle(bfqq))
-+		return;
-+	if (!bfqq->next_rq)
-+		return;
-+
-+	bfqq->pos_root = &bfqd->rq_pos_tree;
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, bfqq->pos_root,
-+			blk_rq_pos(bfqq->next_rq), &parent, &p);
-+	if (__bfqq == NULL) {
-+		rb_link_node(&bfqq->pos_node, parent, p);
-+		rb_insert_color(&bfqq->pos_node, bfqq->pos_root);
-+	} else
-+		bfqq->pos_root = NULL;
-+}
-+
-+/*
-+ * Tell whether there are active queues or groups with differentiated weights.
-+ */
-+static inline bool bfq_differentiated_weights(struct bfq_data *bfqd)
-+{
-+	BUG_ON(!bfqd->hw_tag);
-+	/*
-+	 * For weights to differ, at least one of the trees must contain
-+	 * at least two nodes.
-+	 */
-+	return (!RB_EMPTY_ROOT(&bfqd->queue_weights_tree) &&
-+		(bfqd->queue_weights_tree.rb_node->rb_left ||
-+		 bfqd->queue_weights_tree.rb_node->rb_right)
-+#ifdef CONFIG_CGROUP_BFQIO
-+	       ) ||
-+	       (!RB_EMPTY_ROOT(&bfqd->group_weights_tree) &&
-+		(bfqd->group_weights_tree.rb_node->rb_left ||
-+		 bfqd->group_weights_tree.rb_node->rb_right)
-+#endif
-+	       );
-+}
-+
-+/*
-+ * If the weight-counter tree passed as input contains no counter for
-+ * the weight of the input entity, then add that counter; otherwise just
-+ * increment the existing counter.
-+ *
-+ * Note that weight-counter trees contain few nodes in mostly symmetric
-+ * scenarios. For example, if all queues have the same weight, then the
-+ * weight-counter tree for the queues may contain at most one node.
-+ * This holds even if low_latency is on, because weight-raised queues
-+ * are not inserted in the tree.
-+ * In most scenarios, the rate at which nodes are created/destroyed
-+ * should be low too.
-+ */
-+static void bfq_weights_tree_add(struct bfq_data *bfqd,
-+				 struct bfq_entity *entity,
-+				 struct rb_root *root)
-+{
-+	struct rb_node **new = &(root->rb_node), *parent = NULL;
-+
-+	/*
-+	 * Do not insert if:
-+	 * - the device does not support queueing;
-+	 * - the entity is already associated with a counter, which happens if:
-+	 *   1) the entity is associated with a queue, 2) a request arrival
-+	 *   has caused the queue to become both non-weight-raised, and hence
-+	 *   change its weight, and backlogged; in this respect, each
-+	 *   of the two events causes an invocation of this function,
-+	 *   3) this is the invocation of this function caused by the second
-+	 *   event. This second invocation is actually useless, and we handle
-+	 *   this fact by exiting immediately. More efficient or clearer
-+	 *   solutions might possibly be adopted.
-+	 */
-+	if (!bfqd->hw_tag || entity->weight_counter)
-+		return;
-+
-+	while (*new) {
-+		struct bfq_weight_counter *__counter = container_of(*new,
-+						struct bfq_weight_counter,
-+						weights_node);
-+		parent = *new;
-+
-+		if (entity->weight == __counter->weight) {
-+			entity->weight_counter = __counter;
-+			goto inc_counter;
-+		}
-+		if (entity->weight < __counter->weight)
-+			new = &((*new)->rb_left);
-+		else
-+			new = &((*new)->rb_right);
-+	}
-+
-+	entity->weight_counter = kzalloc(sizeof(struct bfq_weight_counter),
-+					 GFP_ATOMIC);
-+	entity->weight_counter->weight = entity->weight;
-+	rb_link_node(&entity->weight_counter->weights_node, parent, new);
-+	rb_insert_color(&entity->weight_counter->weights_node, root);
-+
-+inc_counter:
-+	entity->weight_counter->num_active++;
-+}
-+
-+/*
-+ * Decrement the weight counter associated with the entity, and, if the
-+ * counter reaches 0, remove the counter from the tree.
-+ * See the comments to the function bfq_weights_tree_add() for considerations
-+ * about overhead.
-+ */
-+static void bfq_weights_tree_remove(struct bfq_data *bfqd,
-+				    struct bfq_entity *entity,
-+				    struct rb_root *root)
-+{
-+	/*
-+	 * Check whether the entity is actually associated with a counter.
-+	 * In fact, the device may not be considered NCQ-capable for a while,
-+	 * which implies that no insertion in the weight trees is performed,
-+	 * after which the device may start to be deemed NCQ-capable, and hence
-+	 * this function may start to be invoked. This may cause the function
-+	 * to be invoked for entities that are not associated with any counter.
-+	 */
-+	if (!entity->weight_counter)
-+		return;
-+
-+	BUG_ON(RB_EMPTY_ROOT(root));
-+	BUG_ON(entity->weight_counter->weight != entity->weight);
-+
-+	BUG_ON(!entity->weight_counter->num_active);
-+	entity->weight_counter->num_active--;
-+	if (entity->weight_counter->num_active > 0)
-+		goto reset_entity_pointer;
-+
-+	rb_erase(&entity->weight_counter->weights_node, root);
-+	kfree(entity->weight_counter);
-+
-+reset_entity_pointer:
-+	entity->weight_counter = NULL;
-+}
-+
-+static struct request *bfq_find_next_rq(struct bfq_data *bfqd,
-+					struct bfq_queue *bfqq,
-+					struct request *last)
-+{
-+	struct rb_node *rbnext = rb_next(&last->rb_node);
-+	struct rb_node *rbprev = rb_prev(&last->rb_node);
-+	struct request *next = NULL, *prev = NULL;
-+
-+	BUG_ON(RB_EMPTY_NODE(&last->rb_node));
-+
-+	if (rbprev != NULL)
-+		prev = rb_entry_rq(rbprev);
-+
-+	if (rbnext != NULL)
-+		next = rb_entry_rq(rbnext);
-+	else {
-+		rbnext = rb_first(&bfqq->sort_list);
-+		if (rbnext && rbnext != &last->rb_node)
-+			next = rb_entry_rq(rbnext);
-+	}
-+
-+	return bfq_choose_req(bfqd, next, prev, blk_rq_pos(last));
-+}
-+
-+/* see the definition of bfq_async_charge_factor for details */
-+static inline unsigned long bfq_serv_to_charge(struct request *rq,
-+					       struct bfq_queue *bfqq)
-+{
-+	return blk_rq_sectors(rq) *
-+		(1 + ((!bfq_bfqq_sync(bfqq)) * (bfqq->wr_coeff == 1) *
-+		bfq_async_charge_factor));
-+}
-+
-+/**
-+ * bfq_updated_next_req - update the queue after a new next_rq selection.
-+ * @bfqd: the device data the queue belongs to.
-+ * @bfqq: the queue to update.
-+ *
-+ * If the first request of a queue changes we make sure that the queue
-+ * has enough budget to serve at least its first request (if the
-+ * request has grown).  We do this because if the queue has not enough
-+ * budget for its first request, it has to go through two dispatch
-+ * rounds to actually get it dispatched.
-+ */
-+static void bfq_updated_next_req(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	struct request *next_rq = bfqq->next_rq;
-+	unsigned long new_budget;
-+
-+	if (next_rq == NULL)
-+		return;
-+
-+	if (bfqq == bfqd->in_service_queue)
-+		/*
-+		 * In order not to break guarantees, budgets cannot be
-+		 * changed after an entity has been selected.
-+		 */
-+		return;
-+
-+	BUG_ON(entity->tree != &st->active);
-+	BUG_ON(entity == entity->sched_data->in_service_entity);
-+
-+	new_budget = max_t(unsigned long, bfqq->max_budget,
-+			   bfq_serv_to_charge(next_rq, bfqq));
-+	if (entity->budget != new_budget) {
-+		entity->budget = new_budget;
-+		bfq_log_bfqq(bfqd, bfqq, "updated next rq: new budget %lu",
-+					 new_budget);
-+		bfq_activate_bfqq(bfqd, bfqq);
-+	}
-+}
-+
-+static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
-+{
-+	u64 dur;
-+
-+	if (bfqd->bfq_wr_max_time > 0)
-+		return bfqd->bfq_wr_max_time;
-+
-+	dur = bfqd->RT_prod;
-+	do_div(dur, bfqd->peak_rate);
-+
-+	return dur;
-+}
-+
-+/* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
-+static inline void bfq_reset_burst_list(struct bfq_data *bfqd,
-+					struct bfq_queue *bfqq)
-+{
-+	struct bfq_queue *item;
-+	struct hlist_node *n;
-+
-+	hlist_for_each_entry_safe(item, n, &bfqd->burst_list, burst_list_node)
-+		hlist_del_init(&item->burst_list_node);
-+	hlist_add_head(&bfqq->burst_list_node, &bfqd->burst_list);
-+	bfqd->burst_size = 1;
-+}
-+
-+/* Add bfqq to the list of queues in current burst (see bfq_handle_burst) */
-+static void bfq_add_to_burst(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	/* Increment burst size to take into account also bfqq */
-+	bfqd->burst_size++;
-+
-+	if (bfqd->burst_size == bfqd->bfq_large_burst_thresh) {
-+		struct bfq_queue *pos, *bfqq_item;
-+		struct hlist_node *n;
-+
-+		/*
-+		 * Enough queues have been activated shortly after each
-+		 * other to consider this burst as large.
-+		 */
-+		bfqd->large_burst = true;
-+
-+		/*
-+		 * We can now mark all queues in the burst list as
-+		 * belonging to a large burst.
-+		 */
-+		hlist_for_each_entry(bfqq_item, &bfqd->burst_list,
-+				     burst_list_node)
-+		        bfq_mark_bfqq_in_large_burst(bfqq_item);
-+		bfq_mark_bfqq_in_large_burst(bfqq);
-+
-+		/*
-+		 * From now on, and until the current burst finishes, any
-+		 * new queue being activated shortly after the last queue
-+		 * was inserted in the burst can be immediately marked as
-+		 * belonging to a large burst. So the burst list is not
-+		 * needed any more. Remove it.
-+		 */
-+		hlist_for_each_entry_safe(pos, n, &bfqd->burst_list,
-+					  burst_list_node)
-+			hlist_del_init(&pos->burst_list_node);
-+	} else /* burst not yet large: add bfqq to the burst list */
-+		hlist_add_head(&bfqq->burst_list_node, &bfqd->burst_list);
-+}
-+
-+/*
-+ * If many queues happen to become active shortly after each other, then,
-+ * to help the processes associated to these queues get their job done as
-+ * soon as possible, it is usually better to not grant either weight-raising
-+ * or device idling to these queues. In this comment we describe, firstly,
-+ * the reasons why this fact holds, and, secondly, the next function, which
-+ * implements the main steps needed to properly mark these queues so that
-+ * they can then be treated in a different way.
-+ *
-+ * As for the terminology, we say that a queue becomes active, i.e.,
-+ * switches from idle to backlogged, either when it is created (as a
-+ * consequence of the arrival of an I/O request), or, if already existing,
-+ * when a new request for the queue arrives while the queue is idle.
-+ * Bursts of activations, i.e., activations of different queues occurring
-+ * shortly after each other, are typically caused by services or applications
-+ * that spawn or reactivate many parallel threads/processes. Examples are
-+ * systemd during boot or git grep.
-+ *
-+ * These services or applications benefit mostly from a high throughput:
-+ * the quicker the requests of the activated queues are cumulatively served,
-+ * the sooner the target job of these queues gets completed. As a consequence,
-+ * weight-raising any of these queues, which also implies idling the device
-+ * for it, is almost always counterproductive: in most cases it just lowers
-+ * throughput.
-+ *
-+ * On the other hand, a burst of activations may be also caused by the start
-+ * of an application that does not consist in a lot of parallel I/O-bound
-+ * threads. In fact, with a complex application, the burst may be just a
-+ * consequence of the fact that several processes need to be executed to
-+ * start-up the application. To start an application as quickly as possible,
-+ * the best thing to do is to privilege the I/O related to the application
-+ * with respect to all other I/O. Therefore, the best strategy to start as
-+ * quickly as possible an application that causes a burst of activations is
-+ * to weight-raise all the queues activated during the burst. This is the
-+ * exact opposite of the best strategy for the other type of bursts.
-+ *
-+ * In the end, to take the best action for each of the two cases, the two
-+ * types of bursts need to be distinguished. Fortunately, this seems
-+ * relatively easy to do, by looking at the sizes of the bursts. In
-+ * particular, we found a threshold such that bursts with a larger size
-+ * than that threshold are apparently caused only by services or commands
-+ * such as systemd or git grep. For brevity, hereafter we call just 'large'
-+ * these bursts. BFQ *does not* weight-raise queues whose activations occur
-+ * in a large burst. In addition, for each of these queues BFQ performs or
-+ * does not perform idling depending on which choice boosts the throughput
-+ * most. The exact choice depends on the device and request pattern at
-+ * hand.
-+ *
-+ * Turning back to the next function, it implements all the steps needed
-+ * to detect the occurrence of a large burst and to properly mark all the
-+ * queues belonging to it (so that they can then be treated in a different
-+ * way). This goal is achieved by maintaining a special "burst list" that
-+ * holds, temporarily, the queues that belong to the burst in progress. The
-+ * list is then used to mark these queues as belonging to a large burst if
-+ * the burst does become large. The main steps are the following.
-+ *
-+ * . when the very first queue is activated, the queue is inserted into the
-+ *   list (as it could be the first queue in a possible burst)
-+ *
-+ * . if the current burst has not yet become large, and a queue Q that does
-+ *   not yet belong to the burst is activated shortly after the last time
-+ *   at which a new queue entered the burst list, then the function appends
-+ *   Q to the burst list
-+ *
-+ * . if, as a consequence of the previous step, the burst size reaches
-+ *   the large-burst threshold, then
-+ *
-+ *     . all the queues in the burst list are marked as belonging to a
-+ *       large burst
-+ *
-+ *     . the burst list is deleted; in fact, the burst list already served
-+ *       its purpose (keeping temporarily track of the queues in a burst,
-+ *       so as to be able to mark them as belonging to a large burst in the
-+ *       previous sub-step), and now is not needed any more
-+ *
-+ *     . the device enters a large-burst mode
-+ *
-+ * . if a queue Q that does not belong to the burst is activated while
-+ *   the device is in large-burst mode and shortly after the last time
-+ *   at which a queue either entered the burst list or was marked as
-+ *   belonging to the current large burst, then Q is immediately marked
-+ *   as belonging to a large burst.
-+ *
-+ * . if a queue Q that does not belong to the burst is activated a while
-+ *   later, i.e., not shortly after, than the last time at which a queue
-+ *   either entered the burst list or was marked as belonging to the
-+ *   current large burst, then the current burst is deemed as finished and:
-+ *
-+ *        . the large-burst mode is reset if set
-+ *
-+ *        . the burst list is emptied
-+ *
-+ *        . Q is inserted in the burst list, as Q may be the first queue
-+ *          in a possible new burst (then the burst list contains just Q
-+ *          after this step).
-+ */
-+static void bfq_handle_burst(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			     bool idle_for_long_time)
-+{
-+	/*
-+	 * If bfqq happened to be activated in a burst, but has been idle
-+	 * for at least as long as an interactive queue, then we assume
-+	 * that, in the overall I/O initiated in the burst, the I/O
-+	 * associated to bfqq is finished. So bfqq does not need to be
-+	 * treated as a queue belonging to a burst anymore. Accordingly,
-+	 * we reset bfqq's in_large_burst flag if set, and remove bfqq
-+	 * from the burst list if it's there. We do not decrement instead
-+	 * burst_size, because the fact that bfqq does not need to belong
-+	 * to the burst list any more does not invalidate the fact that
-+	 * bfqq may have been activated during the current burst.
-+	 */
-+	if (idle_for_long_time) {
-+		hlist_del_init(&bfqq->burst_list_node);
-+		bfq_clear_bfqq_in_large_burst(bfqq);
-+	}
-+
-+	/*
-+	 * If bfqq is already in the burst list or is part of a large
-+	 * burst, then there is nothing else to do.
-+	 */
-+	if (!hlist_unhashed(&bfqq->burst_list_node) ||
-+	    bfq_bfqq_in_large_burst(bfqq))
-+		return;
-+
-+	/*
-+	 * If bfqq's activation happens late enough, then the current
-+	 * burst is finished, and related data structures must be reset.
-+	 *
-+	 * In this respect, consider the special case where bfqq is the very
-+	 * first queue being activated. In this case, last_ins_in_burst is
-+	 * not yet significant when we get here. But it is easy to verify
-+	 * that, whether or not the following condition is true, bfqq will
-+	 * end up being inserted into the burst list. In particular the
-+	 * list will happen to contain only bfqq. And this is exactly what
-+	 * has to happen, as bfqq may be the first queue in a possible
-+	 * burst.
-+	 */
-+	if (time_is_before_jiffies(bfqd->last_ins_in_burst +
-+	    bfqd->bfq_burst_interval)) {
-+		bfqd->large_burst = false;
-+		bfq_reset_burst_list(bfqd, bfqq);
-+		return;
-+	}
-+
-+	/*
-+	 * If we get here, then bfqq is being activated shortly after the
-+	 * last queue. So, if the current burst is also large, we can mark
-+	 * bfqq as belonging to this large burst immediately.
-+	 */
-+	if (bfqd->large_burst) {
-+		bfq_mark_bfqq_in_large_burst(bfqq);
-+		return;
-+	}
-+
-+	/*
-+	 * If we get here, then a large-burst state has not yet been
-+	 * reached, but bfqq is being activated shortly after the last
-+	 * queue. Then we add bfqq to the burst.
-+	 */
-+	bfq_add_to_burst(bfqd, bfqq);
-+}
-+
-+static void bfq_add_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	struct request *next_rq, *prev;
-+	unsigned long old_wr_coeff = bfqq->wr_coeff;
-+	bool interactive = false;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "add_request %d", rq_is_sync(rq));
-+	bfqq->queued[rq_is_sync(rq)]++;
-+	bfqd->queued++;
-+
-+	elv_rb_add(&bfqq->sort_list, rq);
-+
-+	/*
-+	 * Check if this request is a better next-serve candidate.
-+	 */
-+	prev = bfqq->next_rq;
-+	next_rq = bfq_choose_req(bfqd, bfqq->next_rq, rq, bfqd->last_position);
-+	BUG_ON(next_rq == NULL);
-+	bfqq->next_rq = next_rq;
-+
-+	/*
-+	 * Adjust priority tree position, if next_rq changes.
-+	 */
-+	if (prev != bfqq->next_rq)
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+
-+	if (!bfq_bfqq_busy(bfqq)) {
-+		bool soft_rt,
-+		     idle_for_long_time = time_is_before_jiffies(
-+						bfqq->budget_timeout +
-+						bfqd->bfq_wr_min_idle_time);
-+
-+		if (bfq_bfqq_sync(bfqq)) {
-+			bool already_in_burst =
-+			   !hlist_unhashed(&bfqq->burst_list_node) ||
-+			   bfq_bfqq_in_large_burst(bfqq);
-+			bfq_handle_burst(bfqd, bfqq, idle_for_long_time);
-+			/*
-+			 * If bfqq was not already in the current burst,
-+			 * then, at this point, bfqq either has been
-+			 * added to the current burst or has caused the
-+			 * current burst to terminate. In particular, in
-+			 * the second case, bfqq has become the first
-+			 * queue in a possible new burst.
-+			 * In both cases last_ins_in_burst needs to be
-+			 * moved forward.
-+			 */
-+			if (!already_in_burst)
-+				bfqd->last_ins_in_burst = jiffies;
-+		}
-+
-+		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
-+			!bfq_bfqq_in_large_burst(bfqq) &&
-+			time_is_before_jiffies(bfqq->soft_rt_next_start);
-+		interactive = !bfq_bfqq_in_large_burst(bfqq) &&
-+			      idle_for_long_time;
-+		entity->budget = max_t(unsigned long, bfqq->max_budget,
-+				       bfq_serv_to_charge(next_rq, bfqq));
-+
-+		if (!bfq_bfqq_IO_bound(bfqq)) {
-+			if (time_before(jiffies,
-+					RQ_BIC(rq)->ttime.last_end_request +
-+					bfqd->bfq_slice_idle)) {
-+				bfqq->requests_within_timer++;
-+				if (bfqq->requests_within_timer >=
-+				    bfqd->bfq_requests_within_timer)
-+					bfq_mark_bfqq_IO_bound(bfqq);
-+			} else
-+				bfqq->requests_within_timer = 0;
-+		}
-+
-+		if (!bfqd->low_latency)
-+			goto add_bfqq_busy;
-+
-+		/*
-+		 * If the queue is not being boosted and has been idle
-+		 * for enough time, start a weight-raising period
-+		 */
-+		if (old_wr_coeff == 1 && (interactive || soft_rt)) {
-+			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
-+			if (interactive)
-+				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else
-+				bfqq->wr_cur_max_time =
-+					bfqd->bfq_wr_rt_max_time;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "wrais starting at %lu, rais_max_time %u",
-+				     jiffies,
-+				     jiffies_to_msecs(bfqq->wr_cur_max_time));
-+		} else if (old_wr_coeff > 1) {
-+			if (interactive)
-+				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else if (bfq_bfqq_in_large_burst(bfqq) ||
-+				 (bfqq->wr_cur_max_time ==
-+				  bfqd->bfq_wr_rt_max_time &&
-+				  !soft_rt)) {
-+				bfqq->wr_coeff = 1;
-+				bfq_log_bfqq(bfqd, bfqq,
-+					"wrais ending at %lu, rais_max_time %u",
-+					jiffies,
-+					jiffies_to_msecs(bfqq->
-+						wr_cur_max_time));
-+			} else if (time_before(
-+					bfqq->last_wr_start_finish +
-+					bfqq->wr_cur_max_time,
-+					jiffies +
-+					bfqd->bfq_wr_rt_max_time) &&
-+				   soft_rt) {
-+				/*
-+				 *
-+				 * The remaining weight-raising time is lower
-+				 * than bfqd->bfq_wr_rt_max_time, which
-+				 * means that the application is enjoying
-+				 * weight raising either because deemed soft-
-+				 * rt in the near past, or because deemed
-+				 * interactive a long ago. In both cases,
-+				 * resetting now the current remaining weight-
-+				 * raising time for the application to the
-+				 * weight-raising duration for soft rt
-+				 * applications would not cause any latency
-+				 * increase for the application (as the new
-+				 * duration would be higher than the remaining
-+				 * time).
-+				 *
-+				 * In addition, the application is now meeting
-+				 * the requirements for being deemed soft rt.
-+				 * In the end we can correctly and safely
-+				 * (re)charge the weight-raising duration for
-+				 * the application with the weight-raising
-+				 * duration for soft rt applications.
-+				 *
-+				 * In particular, doing this recharge now, i.e.,
-+				 * before the weight-raising period for the
-+				 * application finishes, reduces the probability
-+				 * of the following negative scenario:
-+				 * 1) the weight of a soft rt application is
-+				 *    raised at startup (as for any newly
-+				 *    created application),
-+				 * 2) since the application is not interactive,
-+				 *    at a certain time weight-raising is
-+				 *    stopped for the application,
-+				 * 3) at that time the application happens to
-+				 *    still have pending requests, and hence
-+				 *    is destined to not have a chance to be
-+				 *    deemed soft rt before these requests are
-+				 *    completed (see the comments to the
-+				 *    function bfq_bfqq_softrt_next_start()
-+				 *    for details on soft rt detection),
-+				 * 4) these pending requests experience a high
-+				 *    latency because the application is not
-+				 *    weight-raised while they are pending.
-+				 */
-+				bfqq->last_wr_start_finish = jiffies;
-+				bfqq->wr_cur_max_time =
-+					bfqd->bfq_wr_rt_max_time;
-+			}
-+		}
-+		if (old_wr_coeff != bfqq->wr_coeff)
-+			entity->ioprio_changed = 1;
-+add_bfqq_busy:
-+		bfqq->last_idle_bklogged = jiffies;
-+		bfqq->service_from_backlogged = 0;
-+		bfq_clear_bfqq_softrt_update(bfqq);
-+		bfq_add_bfqq_busy(bfqd, bfqq);
-+	} else {
-+		if (bfqd->low_latency && old_wr_coeff == 1 && !rq_is_sync(rq) &&
-+		    time_is_before_jiffies(
-+				bfqq->last_wr_start_finish +
-+				bfqd->bfq_wr_min_inter_arr_async)) {
-+			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
-+			bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+
-+			bfqd->wr_busy_queues++;
-+			entity->ioprio_changed = 1;
-+			bfq_log_bfqq(bfqd, bfqq,
-+			    "non-idle wrais starting at %lu, rais_max_time %u",
-+			    jiffies,
-+			    jiffies_to_msecs(bfqq->wr_cur_max_time));
-+		}
-+		if (prev != bfqq->next_rq)
-+			bfq_updated_next_req(bfqd, bfqq);
-+	}
-+
-+	if (bfqd->low_latency &&
-+		(old_wr_coeff == 1 || bfqq->wr_coeff == 1 || interactive))
-+		bfqq->last_wr_start_finish = jiffies;
-+}
-+
-+static struct request *bfq_find_rq_fmerge(struct bfq_data *bfqd,
-+					  struct bio *bio)
-+{
-+	struct task_struct *tsk = current;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
-+		return NULL;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	if (bfqq != NULL)
-+		return elv_rb_find(&bfqq->sort_list, bio_end_sector(bio));
-+
-+	return NULL;
-+}
-+
-+static void bfq_activate_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+
-+	bfqd->rq_in_driver++;
-+	bfqd->last_position = blk_rq_pos(rq) + blk_rq_sectors(rq);
-+	bfq_log(bfqd, "activate_request: new bfqd->last_position %llu",
-+		(long long unsigned)bfqd->last_position);
-+}
-+
-+static inline void bfq_deactivate_request(struct request_queue *q,
-+					  struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+
-+	BUG_ON(bfqd->rq_in_driver == 0);
-+	bfqd->rq_in_driver--;
-+}
-+
-+static void bfq_remove_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	const int sync = rq_is_sync(rq);
-+
-+	if (bfqq->next_rq == rq) {
-+		bfqq->next_rq = bfq_find_next_rq(bfqd, bfqq, rq);
-+		bfq_updated_next_req(bfqd, bfqq);
-+	}
-+
-+	list_del_init(&rq->queuelist);
-+	BUG_ON(bfqq->queued[sync] == 0);
-+	bfqq->queued[sync]--;
-+	bfqd->queued--;
-+	elv_rb_del(&bfqq->sort_list, rq);
-+
-+	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		if (bfq_bfqq_busy(bfqq) && bfqq != bfqd->in_service_queue)
-+			bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+		/*
-+		 * Remove queue from request-position tree as it is empty.
-+		 */
-+		if (bfqq->pos_root != NULL) {
-+			rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+			bfqq->pos_root = NULL;
-+		}
-+	}
-+
-+	if (rq->cmd_flags & REQ_META) {
-+		BUG_ON(bfqq->meta_pending == 0);
-+		bfqq->meta_pending--;
-+	}
-+}
-+
-+static int bfq_merge(struct request_queue *q, struct request **req,
-+		     struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct request *__rq;
-+
-+	__rq = bfq_find_rq_fmerge(bfqd, bio);
-+	if (__rq != NULL && elv_rq_merge_ok(__rq, bio)) {
-+		*req = __rq;
-+		return ELEVATOR_FRONT_MERGE;
-+	}
-+
-+	return ELEVATOR_NO_MERGE;
-+}
-+
-+static void bfq_merged_request(struct request_queue *q, struct request *req,
-+			       int type)
-+{
-+	if (type == ELEVATOR_FRONT_MERGE &&
-+	    rb_prev(&req->rb_node) &&
-+	    blk_rq_pos(req) <
-+	    blk_rq_pos(container_of(rb_prev(&req->rb_node),
-+				    struct request, rb_node))) {
-+		struct bfq_queue *bfqq = RQ_BFQQ(req);
-+		struct bfq_data *bfqd = bfqq->bfqd;
-+		struct request *prev, *next_rq;
-+
-+		/* Reposition request in its sort_list */
-+		elv_rb_del(&bfqq->sort_list, req);
-+		elv_rb_add(&bfqq->sort_list, req);
-+		/* Choose next request to be served for bfqq */
-+		prev = bfqq->next_rq;
-+		next_rq = bfq_choose_req(bfqd, bfqq->next_rq, req,
-+					 bfqd->last_position);
-+		BUG_ON(next_rq == NULL);
-+		bfqq->next_rq = next_rq;
-+		/*
-+		 * If next_rq changes, update both the queue's budget to
-+		 * fit the new request and the queue's position in its
-+		 * rq_pos_tree.
-+		 */
-+		if (prev != bfqq->next_rq) {
-+			bfq_updated_next_req(bfqd, bfqq);
-+			bfq_rq_pos_tree_add(bfqd, bfqq);
-+		}
-+	}
-+}
-+
-+static void bfq_merged_requests(struct request_queue *q, struct request *rq,
-+				struct request *next)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	/*
-+	 * Reposition in fifo if next is older than rq.
-+	 */
-+	if (!list_empty(&rq->queuelist) && !list_empty(&next->queuelist) &&
-+	    time_before(next->fifo_time, rq->fifo_time)) {
-+		list_move(&rq->queuelist, &next->queuelist);
-+		rq->fifo_time = next->fifo_time;
-+	}
-+
-+	if (bfqq->next_rq == next)
-+		bfqq->next_rq = rq;
-+
-+	bfq_remove_request(next);
-+}
-+
-+/* Must be called with bfqq != NULL */
-+static inline void bfq_bfqq_end_wr(struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfqq == NULL);
-+	if (bfq_bfqq_busy(bfqq))
-+		bfqq->bfqd->wr_busy_queues--;
-+	bfqq->wr_coeff = 1;
-+	bfqq->wr_cur_max_time = 0;
-+	/* Trigger a weight change on the next activation of the queue */
-+	bfqq->entity.ioprio_changed = 1;
-+}
-+
-+static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
-+				    struct bfq_group *bfqg)
-+{
-+	int i, j;
-+
-+	for (i = 0; i < 2; i++)
-+		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			if (bfqg->async_bfqq[i][j] != NULL)
-+				bfq_bfqq_end_wr(bfqg->async_bfqq[i][j]);
-+	if (bfqg->async_idle_bfqq != NULL)
-+		bfq_bfqq_end_wr(bfqg->async_idle_bfqq);
-+}
-+
-+static void bfq_end_wr(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	spin_lock_irq(bfqd->queue->queue_lock);
-+
-+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list)
-+		bfq_bfqq_end_wr(bfqq);
-+	list_for_each_entry(bfqq, &bfqd->idle_list, bfqq_list)
-+		bfq_bfqq_end_wr(bfqq);
-+	bfq_end_wr_async(bfqd);
-+
-+	spin_unlock_irq(bfqd->queue->queue_lock);
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
-+						  struct bfq_queue *bfqq)
-+{
-+	if (!bfqq)
-+		bfqq = bfq_get_next_queue(bfqd);
-+	else
-+		bfq_get_next_queue_forced(bfqd, bfqq);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
-+static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
-+					  struct request *rq)
-+{
-+	if (blk_rq_pos(rq) >= bfqd->last_position)
-+		return blk_rq_pos(rq) - bfqd->last_position;
-+	else
-+		return bfqd->last_position - blk_rq_pos(rq);
-+}
-+
-+/*
-+ * Return true if bfqq has no request pending and rq is close enough to
-+ * bfqd->last_position, or if rq is closer to bfqd->last_position than
-+ * bfqq->next_rq
-+ */
-+static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+{
-+	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+}
-+
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+{
-+	struct rb_root *root = &bfqd->rq_pos_tree;
-+	struct rb_node *parent, *node;
-+	struct bfq_queue *__bfqq;
-+	sector_t sector = bfqd->last_position;
-+
-+	if (RB_EMPTY_ROOT(root))
-+		return NULL;
-+
-+	/*
-+	 * First, if we find a request starting at the end of the last
-+	 * request, choose it.
-+	 */
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, root, sector, &parent, NULL);
-+	if (__bfqq != NULL)
-+		return __bfqq;
-+
-+	/*
-+	 * If the exact sector wasn't found, the parent of the NULL leaf
-+	 * will contain the closest sector (rq_pos_tree sorted by
-+	 * next_request position).
-+	 */
-+	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	if (blk_rq_pos(__bfqq->next_rq) < sector)
-+		node = rb_next(&__bfqq->pos_node);
-+	else
-+		node = rb_prev(&__bfqq->pos_node);
-+	if (node == NULL)
-+		return NULL;
-+
-+	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	return NULL;
-+}
-+
-+/*
-+ * bfqd - obvious
-+ * cur_bfqq - passed in so that we don't decide that the current queue
-+ *            is closely cooperating with itself.
-+ *
-+ * We are assuming that cur_bfqq has dispatched at least one request,
-+ * and that bfqd->last_position reflects a position on the disk associated
-+ * with the I/O issued by cur_bfqq.
-+ */
-+static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
-+					      struct bfq_queue *cur_bfqq)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	if (bfq_class_idle(cur_bfqq))
-+		return NULL;
-+	if (!bfq_bfqq_sync(cur_bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(cur_bfqq))
-+		return NULL;
-+
-+	/* If device has only one backlogged bfq_queue, don't search. */
-+	if (bfqd->busy_queues == 1)
-+		return NULL;
-+
-+	/*
-+	 * We should notice if some of the queues are cooperating, e.g.
-+	 * working closely on the same area of the disk. In that case,
-+	 * we can group them together and don't waste time idling.
-+	 */
-+	bfqq = bfqq_close(bfqd);
-+	if (bfqq == NULL || bfqq == cur_bfqq)
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues from different bfq_groups.
-+	*/
-+	if (bfqq->entity.parent != cur_bfqq->entity.parent)
-+		return NULL;
-+
-+	/*
-+	 * It only makes sense to merge sync queues.
-+	 */
-+	if (!bfq_bfqq_sync(bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(bfqq))
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues of different priority classes.
-+	 */
-+	if (bfq_class_rt(bfqq) != bfq_class_rt(cur_bfqq))
-+		return NULL;
-+
-+	return bfqq;
-+}
-+
-+/*
-+ * If enough samples have been computed, return the current max budget
-+ * stored in bfqd, which is dynamically updated according to the
-+ * estimated disk peak rate; otherwise return the default max budget
-+ */
-+static inline unsigned long bfq_max_budget(struct bfq_data *bfqd)
-+{
-+	if (bfqd->budgets_assigned < 194)
-+		return bfq_default_max_budget;
-+	else
-+		return bfqd->bfq_max_budget;
-+}
-+
-+/*
-+ * Return min budget, which is a fraction of the current or default
-+ * max budget (trying with 1/32)
-+ */
-+static inline unsigned long bfq_min_budget(struct bfq_data *bfqd)
-+{
-+	if (bfqd->budgets_assigned < 194)
-+		return bfq_default_max_budget / 32;
-+	else
-+		return bfqd->bfq_max_budget / 32;
-+}
-+
-+static void bfq_arm_slice_timer(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfqd->in_service_queue;
-+	struct bfq_io_cq *bic;
-+	unsigned long sl;
-+
-+	BUG_ON(!RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	/* Processes have exited, don't wait. */
-+	bic = bfqd->in_service_bic;
-+	if (bic == NULL || atomic_read(&bic->icq.ioc->active_ref) == 0)
-+		return;
-+
-+	bfq_mark_bfqq_wait_request(bfqq);
-+
-+	/*
-+	 * We don't want to idle for seeks, but we do want to allow
-+	 * fair distribution of slice time for a process doing back-to-back
-+	 * seeks. So allow a little bit of time for him to submit a new rq.
-+	 *
-+	 * To prevent processes with (partly) seeky workloads from
-+	 * being too ill-treated, grant them a small fraction of the
-+	 * assigned budget before reducing the waiting time to
-+	 * BFQ_MIN_TT. This happened to help reduce latency.
-+	 */
-+	sl = bfqd->bfq_slice_idle;
-+	/*
-+	 * Unless the queue is being weight-raised, grant only minimum idle
-+	 * time if the queue either has been seeky for long enough or has
-+	 * already proved to be constantly seeky.
-+	 */
-+	if (bfq_sample_valid(bfqq->seek_samples) &&
-+	    ((BFQQ_SEEKY(bfqq) && bfqq->entity.service >
-+				  bfq_max_budget(bfqq->bfqd) / 8) ||
-+	      bfq_bfqq_constantly_seeky(bfqq)) && bfqq->wr_coeff == 1)
-+		sl = min(sl, msecs_to_jiffies(BFQ_MIN_TT));
-+	else if (bfqq->wr_coeff > 1)
-+		sl = sl * 3;
-+	bfqd->last_idling_start = ktime_get();
-+	mod_timer(&bfqd->idle_slice_timer, jiffies + sl);
-+	bfq_log(bfqd, "arm idle: %u/%u ms",
-+		jiffies_to_msecs(sl), jiffies_to_msecs(bfqd->bfq_slice_idle));
-+}
-+
-+/*
-+ * Set the maximum time for the in-service queue to consume its
-+ * budget. This prevents seeky processes from lowering the disk
-+ * throughput (always guaranteed with a time slice scheme as in CFQ).
-+ */
-+static void bfq_set_budget_timeout(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfqd->in_service_queue;
-+	unsigned int timeout_coeff;
-+	if (bfqq->wr_cur_max_time == bfqd->bfq_wr_rt_max_time)
-+		timeout_coeff = 1;
-+	else
-+		timeout_coeff = bfqq->entity.weight / bfqq->entity.orig_weight;
-+
-+	bfqd->last_budget_start = ktime_get();
-+
-+	bfq_clear_bfqq_budget_new(bfqq);
-+	bfqq->budget_timeout = jiffies +
-+		bfqd->bfq_timeout[bfq_bfqq_sync(bfqq)] * timeout_coeff;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "set budget_timeout %u",
-+		jiffies_to_msecs(bfqd->bfq_timeout[bfq_bfqq_sync(bfqq)] *
-+		timeout_coeff));
-+}
-+
-+/*
-+ * Move request from internal lists to the request queue dispatch list.
-+ */
-+static void bfq_dispatch_insert(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	/*
-+	 * For consistency, the next instruction should have been executed
-+	 * after removing the request from the queue and dispatching it.
-+	 * We execute instead this instruction before bfq_remove_request()
-+	 * (and hence introduce a temporary inconsistency), for efficiency.
-+	 * In fact, in a forced_dispatch, this prevents two counters related
-+	 * to bfqq->dispatched to risk to be uselessly decremented if bfqq
-+	 * is not in service, and then to be incremented again after
-+	 * incrementing bfqq->dispatched.
-+	 */
-+	bfqq->dispatched++;
-+	bfq_remove_request(rq);
-+	elv_dispatch_sort(q, rq);
-+
-+	if (bfq_bfqq_sync(bfqq))
-+		bfqd->sync_flight++;
-+}
-+
-+/*
-+ * Return expired entry, or NULL to just start from scratch in rbtree.
-+ */
-+static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
-+{
-+	struct request *rq = NULL;
-+
-+	if (bfq_bfqq_fifo_expire(bfqq))
-+		return NULL;
-+
-+	bfq_mark_bfqq_fifo_expire(bfqq);
-+
-+	if (list_empty(&bfqq->fifo))
-+		return NULL;
-+
-+	rq = rq_entry_fifo(bfqq->fifo.next);
-+
-+	if (time_before(jiffies, rq->fifo_time))
-+		return NULL;
-+
-+	return rq;
-+}
-+
-+/* Must be called with the queue_lock held. */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
-+static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return;
-+
-+	/*
-+	 * Merge in the direction of the lesser amount of work.
-+	 */
-+	if (new_process_refs >= process_refs) {
-+		bfqq->new_bfqq = new_bfqq;
-+		atomic_add(process_refs, &new_bfqq->ref);
-+	} else {
-+		new_bfqq->new_bfqq = bfqq;
-+		atomic_add(new_process_refs, &bfqq->ref);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+}
-+
-+static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	return entity->budget - entity->service;
-+}
-+
-+static void __bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	__bfq_bfqd_reset_in_service(bfqd);
-+
-+	/*
-+	 * If this bfqq is shared between multiple processes, check
-+	 * to make sure that those processes are still issuing I/Os
-+	 * within the mean seek distance. If not, it may be time to
-+	 * break the queues apart again.
-+	 */
-+	if (bfq_bfqq_coop(bfqq) && BFQQ_SEEKY(bfqq))
-+		bfq_mark_bfqq_split_coop(bfqq);
-+
-+	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		/*
-+		 * Overloading budget_timeout field to store the time
-+		 * at which the queue remains with no backlog; used by
-+		 * the weight-raising mechanism.
-+		 */
-+		bfqq->budget_timeout = jiffies;
-+		bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+	} else {
-+		bfq_activate_bfqq(bfqd, bfqq);
-+		/*
-+		 * Resort priority tree of potential close cooperators.
-+		 */
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+	}
-+}
-+
-+/**
-+ * __bfq_bfqq_recalc_budget - try to adapt the budget to the @bfqq behavior.
-+ * @bfqd: device data.
-+ * @bfqq: queue to update.
-+ * @reason: reason for expiration.
-+ *
-+ * Handle the feedback on @bfqq budget.  See the body for detailed
-+ * comments.
-+ */
-+static void __bfq_bfqq_recalc_budget(struct bfq_data *bfqd,
-+				     struct bfq_queue *bfqq,
-+				     enum bfqq_expiration reason)
-+{
-+	struct request *next_rq;
-+	unsigned long budget, min_budget;
-+
-+	budget = bfqq->max_budget;
-+	min_budget = bfq_min_budget(bfqd);
-+
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last budg %lu, budg left %lu",
-+		bfqq->entity.budget, bfq_bfqq_budget_left(bfqq));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last max_budg %lu, min budg %lu",
-+		budget, bfq_min_budget(bfqd));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: sync %d, seeky %d",
-+		bfq_bfqq_sync(bfqq), BFQQ_SEEKY(bfqd->in_service_queue));
-+
-+	if (bfq_bfqq_sync(bfqq)) {
-+		switch (reason) {
-+		/*
-+		 * Caveat: in all the following cases we trade latency
-+		 * for throughput.
-+		 */
-+		case BFQ_BFQQ_TOO_IDLE:
-+			/*
-+			 * This is the only case where we may reduce
-+			 * the budget: if there is no request of the
-+			 * process still waiting for completion, then
-+			 * we assume (tentatively) that the timer has
-+			 * expired because the batch of requests of
-+			 * the process could have been served with a
-+			 * smaller budget.  Hence, betting that
-+			 * process will behave in the same way when it
-+			 * becomes backlogged again, we reduce its
-+			 * next budget.  As long as we guess right,
-+			 * this budget cut reduces the latency
-+			 * experienced by the process.
-+			 *
-+			 * However, if there are still outstanding
-+			 * requests, then the process may have not yet
-+			 * issued its next request just because it is
-+			 * still waiting for the completion of some of
-+			 * the still outstanding ones.  So in this
-+			 * subcase we do not reduce its budget, on the
-+			 * contrary we increase it to possibly boost
-+			 * the throughput, as discussed in the
-+			 * comments to the BUDGET_TIMEOUT case.
-+			 */
-+			if (bfqq->dispatched > 0) /* still outstanding reqs */
-+				budget = min(budget * 2, bfqd->bfq_max_budget);
-+			else {
-+				if (budget > 5 * min_budget)
-+					budget -= 4 * min_budget;
-+				else
-+					budget = min_budget;
-+			}
-+			break;
-+		case BFQ_BFQQ_BUDGET_TIMEOUT:
-+			/*
-+			 * We double the budget here because: 1) it
-+			 * gives the chance to boost the throughput if
-+			 * this is not a seeky process (which may have
-+			 * bumped into this timeout because of, e.g.,
-+			 * ZBR), 2) together with charge_full_budget
-+			 * it helps give seeky processes higher
-+			 * timestamps, and hence be served less
-+			 * frequently.
-+			 */
-+			budget = min(budget * 2, bfqd->bfq_max_budget);
-+			break;
-+		case BFQ_BFQQ_BUDGET_EXHAUSTED:
-+			/*
-+			 * The process still has backlog, and did not
-+			 * let either the budget timeout or the disk
-+			 * idling timeout expire. Hence it is not
-+			 * seeky, has a short thinktime and may be
-+			 * happy with a higher budget too. So
-+			 * definitely increase the budget of this good
-+			 * candidate to boost the disk throughput.
-+			 */
-+			budget = min(budget * 4, bfqd->bfq_max_budget);
-+			break;
-+		case BFQ_BFQQ_NO_MORE_REQUESTS:
-+		       /*
-+			* Leave the budget unchanged.
-+			*/
-+		default:
-+			return;
-+		}
-+	} else /* async queue */
-+	    /* async queues get always the maximum possible budget
-+	     * (their ability to dispatch is limited by
-+	     * @bfqd->bfq_max_budget_async_rq).
-+	     */
-+		budget = bfqd->bfq_max_budget;
-+
-+	bfqq->max_budget = budget;
-+
-+	if (bfqd->budgets_assigned >= 194 && bfqd->bfq_user_max_budget == 0 &&
-+	    bfqq->max_budget > bfqd->bfq_max_budget)
-+		bfqq->max_budget = bfqd->bfq_max_budget;
-+
-+	/*
-+	 * Make sure that we have enough budget for the next request.
-+	 * Since the finish time of the bfqq must be kept in sync with
-+	 * the budget, be sure to call __bfq_bfqq_expire() after the
-+	 * update.
-+	 */
-+	next_rq = bfqq->next_rq;
-+	if (next_rq != NULL)
-+		bfqq->entity.budget = max_t(unsigned long, bfqq->max_budget,
-+					    bfq_serv_to_charge(next_rq, bfqq));
-+	else
-+		bfqq->entity.budget = bfqq->max_budget;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "head sect: %u, new budget %lu",
-+			next_rq != NULL ? blk_rq_sectors(next_rq) : 0,
-+			bfqq->entity.budget);
-+}
-+
-+static unsigned long bfq_calc_max_budget(u64 peak_rate, u64 timeout)
-+{
-+	unsigned long max_budget;
-+
-+	/*
-+	 * The max_budget calculated when autotuning is equal to the
-+	 * amount of sectors transfered in timeout_sync at the
-+	 * estimated peak rate.
-+	 */
-+	max_budget = (unsigned long)(peak_rate * 1000 *
-+				     timeout >> BFQ_RATE_SHIFT);
-+
-+	return max_budget;
-+}
-+
-+/*
-+ * In addition to updating the peak rate, checks whether the process
-+ * is "slow", and returns 1 if so. This slow flag is used, in addition
-+ * to the budget timeout, to reduce the amount of service provided to
-+ * seeky processes, and hence reduce their chances to lower the
-+ * throughput. See the code for more details.
-+ */
-+static int bfq_update_peak_rate(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int compensate, enum bfqq_expiration reason)
-+{
-+	u64 bw, usecs, expected, timeout;
-+	ktime_t delta;
-+	int update = 0;
-+
-+	if (!bfq_bfqq_sync(bfqq) || bfq_bfqq_budget_new(bfqq))
-+		return 0;
-+
-+	if (compensate)
-+		delta = bfqd->last_idling_start;
-+	else
-+		delta = ktime_get();
-+	delta = ktime_sub(delta, bfqd->last_budget_start);
-+	usecs = ktime_to_us(delta);
-+
-+	/* Don't trust short/unrealistic values. */
-+	if (usecs < 100 || usecs >= LONG_MAX)
-+		return 0;
-+
-+	/*
-+	 * Calculate the bandwidth for the last slice.  We use a 64 bit
-+	 * value to store the peak rate, in sectors per usec in fixed
-+	 * point math.  We do so to have enough precision in the estimate
-+	 * and to avoid overflows.
-+	 */
-+	bw = (u64)bfqq->entity.service << BFQ_RATE_SHIFT;
-+	do_div(bw, (unsigned long)usecs);
-+
-+	timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
-+
-+	/*
-+	 * Use only long (> 20ms) intervals to filter out spikes for
-+	 * the peak rate estimation.
-+	 */
-+	if (usecs > 20000) {
-+		if (bw > bfqd->peak_rate ||
-+		   (!BFQQ_SEEKY(bfqq) &&
-+		    reason == BFQ_BFQQ_BUDGET_TIMEOUT)) {
-+			bfq_log(bfqd, "measured bw =%llu", bw);
-+			/*
-+			 * To smooth oscillations use a low-pass filter with
-+			 * alpha=7/8, i.e.,
-+			 * new_rate = (7/8) * old_rate + (1/8) * bw
-+			 */
-+			do_div(bw, 8);
-+			if (bw == 0)
-+				return 0;
-+			bfqd->peak_rate *= 7;
-+			do_div(bfqd->peak_rate, 8);
-+			bfqd->peak_rate += bw;
-+			update = 1;
-+			bfq_log(bfqd, "new peak_rate=%llu", bfqd->peak_rate);
-+		}
-+
-+		update |= bfqd->peak_rate_samples == BFQ_PEAK_RATE_SAMPLES - 1;
-+
-+		if (bfqd->peak_rate_samples < BFQ_PEAK_RATE_SAMPLES)
-+			bfqd->peak_rate_samples++;
-+
-+		if (bfqd->peak_rate_samples == BFQ_PEAK_RATE_SAMPLES &&
-+		    update) {
-+			int dev_type = blk_queue_nonrot(bfqd->queue);
-+			if (bfqd->bfq_user_max_budget == 0) {
-+				bfqd->bfq_max_budget =
-+					bfq_calc_max_budget(bfqd->peak_rate,
-+							    timeout);
-+				bfq_log(bfqd, "new max_budget=%lu",
-+					bfqd->bfq_max_budget);
-+			}
-+			if (bfqd->device_speed == BFQ_BFQD_FAST &&
-+			    bfqd->peak_rate < device_speed_thresh[dev_type]) {
-+				bfqd->device_speed = BFQ_BFQD_SLOW;
-+				bfqd->RT_prod = R_slow[dev_type] *
-+						T_slow[dev_type];
-+			} else if (bfqd->device_speed == BFQ_BFQD_SLOW &&
-+			    bfqd->peak_rate > device_speed_thresh[dev_type]) {
-+				bfqd->device_speed = BFQ_BFQD_FAST;
-+				bfqd->RT_prod = R_fast[dev_type] *
-+						T_fast[dev_type];
-+			}
-+		}
-+	}
-+
-+	/*
-+	 * If the process has been served for a too short time
-+	 * interval to let its possible sequential accesses prevail on
-+	 * the initial seek time needed to move the disk head on the
-+	 * first sector it requested, then give the process a chance
-+	 * and for the moment return false.
-+	 */
-+	if (bfqq->entity.budget <= bfq_max_budget(bfqd) / 8)
-+		return 0;
-+
-+	/*
-+	 * A process is considered ``slow'' (i.e., seeky, so that we
-+	 * cannot treat it fairly in the service domain, as it would
-+	 * slow down too much the other processes) if, when a slice
-+	 * ends for whatever reason, it has received service at a
-+	 * rate that would not be high enough to complete the budget
-+	 * before the budget timeout expiration.
-+	 */
-+	expected = bw * 1000 * timeout >> BFQ_RATE_SHIFT;
-+
-+	/*
-+	 * Caveat: processes doing IO in the slower disk zones will
-+	 * tend to be slow(er) even if not seeky. And the estimated
-+	 * peak rate will actually be an average over the disk
-+	 * surface. Hence, to not be too harsh with unlucky processes,
-+	 * we keep a budget/3 margin of safety before declaring a
-+	 * process slow.
-+	 */
-+	return expected > (4 * bfqq->entity.budget) / 3;
-+}
-+
-+/*
-+ * To be deemed as soft real-time, an application must meet two
-+ * requirements. First, the application must not require an average
-+ * bandwidth higher than the approximate bandwidth required to playback or
-+ * record a compressed high-definition video.
-+ * The next function is invoked on the completion of the last request of a
-+ * batch, to compute the next-start time instant, soft_rt_next_start, such
-+ * that, if the next request of the application does not arrive before
-+ * soft_rt_next_start, then the above requirement on the bandwidth is met.
-+ *
-+ * The second requirement is that the request pattern of the application is
-+ * isochronous, i.e., that, after issuing a request or a batch of requests,
-+ * the application stops issuing new requests until all its pending requests
-+ * have been completed. After that, the application may issue a new batch,
-+ * and so on.
-+ * For this reason the next function is invoked to compute
-+ * soft_rt_next_start only for applications that meet this requirement,
-+ * whereas soft_rt_next_start is set to infinity for applications that do
-+ * not.
-+ *
-+ * Unfortunately, even a greedy application may happen to behave in an
-+ * isochronous way if the CPU load is high. In fact, the application may
-+ * stop issuing requests while the CPUs are busy serving other processes,
-+ * then restart, then stop again for a while, and so on. In addition, if
-+ * the disk achieves a low enough throughput with the request pattern
-+ * issued by the application (e.g., because the request pattern is random
-+ * and/or the device is slow), then the application may meet the above
-+ * bandwidth requirement too. To prevent such a greedy application to be
-+ * deemed as soft real-time, a further rule is used in the computation of
-+ * soft_rt_next_start: soft_rt_next_start must be higher than the current
-+ * time plus the maximum time for which the arrival of a request is waited
-+ * for when a sync queue becomes idle, namely bfqd->bfq_slice_idle.
-+ * This filters out greedy applications, as the latter issue instead their
-+ * next request as soon as possible after the last one has been completed
-+ * (in contrast, when a batch of requests is completed, a soft real-time
-+ * application spends some time processing data).
-+ *
-+ * Unfortunately, the last filter may easily generate false positives if
-+ * only bfqd->bfq_slice_idle is used as a reference time interval and one
-+ * or both the following cases occur:
-+ * 1) HZ is so low that the duration of a jiffy is comparable to or higher
-+ *    than bfqd->bfq_slice_idle. This happens, e.g., on slow devices with
-+ *    HZ=100.
-+ * 2) jiffies, instead of increasing at a constant rate, may stop increasing
-+ *    for a while, then suddenly 'jump' by several units to recover the lost
-+ *    increments. This seems to happen, e.g., inside virtual machines.
-+ * To address this issue, we do not use as a reference time interval just
-+ * bfqd->bfq_slice_idle, but bfqd->bfq_slice_idle plus a few jiffies. In
-+ * particular we add the minimum number of jiffies for which the filter
-+ * seems to be quite precise also in embedded systems and KVM/QEMU virtual
-+ * machines.
-+ */
-+static inline unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
-+						       struct bfq_queue *bfqq)
-+{
-+	return max(bfqq->last_idle_bklogged +
-+		   HZ * bfqq->service_from_backlogged /
-+		   bfqd->bfq_wr_max_softrt_rate,
-+		   jiffies + bfqq->bfqd->bfq_slice_idle + 4);
-+}
-+
-+/*
-+ * Return the largest-possible time instant such that, for as long as possible,
-+ * the current time will be lower than this time instant according to the macro
-+ * time_is_before_jiffies().
-+ */
-+static inline unsigned long bfq_infinity_from_now(unsigned long now)
-+{
-+	return now + ULONG_MAX / 2;
-+}
-+
-+/**
-+ * bfq_bfqq_expire - expire a queue.
-+ * @bfqd: device owning the queue.
-+ * @bfqq: the queue to expire.
-+ * @compensate: if true, compensate for the time spent idling.
-+ * @reason: the reason causing the expiration.
-+ *
-+ *
-+ * If the process associated to the queue is slow (i.e., seeky), or in
-+ * case of budget timeout, or, finally, if it is async, we
-+ * artificially charge it an entire budget (independently of the
-+ * actual service it received). As a consequence, the queue will get
-+ * higher timestamps than the correct ones upon reactivation, and
-+ * hence it will be rescheduled as if it had received more service
-+ * than what it actually received. In the end, this class of processes
-+ * will receive less service in proportion to how slowly they consume
-+ * their budgets (and hence how seriously they tend to lower the
-+ * throughput).
-+ *
-+ * In contrast, when a queue expires because it has been idling for
-+ * too much or because it exhausted its budget, we do not touch the
-+ * amount of service it has received. Hence when the queue will be
-+ * reactivated and its timestamps updated, the latter will be in sync
-+ * with the actual service received by the queue until expiration.
-+ *
-+ * Charging a full budget to the first type of queues and the exact
-+ * service to the others has the effect of using the WF2Q+ policy to
-+ * schedule the former on a timeslice basis, without violating the
-+ * service domain guarantees of the latter.
-+ */
-+static void bfq_bfqq_expire(struct bfq_data *bfqd,
-+			    struct bfq_queue *bfqq,
-+			    int compensate,
-+			    enum bfqq_expiration reason)
-+{
-+	int slow;
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	/* Update disk peak rate for autotuning and check whether the
-+	 * process is slow (see bfq_update_peak_rate).
-+	 */
-+	slow = bfq_update_peak_rate(bfqd, bfqq, compensate, reason);
-+
-+	/*
-+	 * As above explained, 'punish' slow (i.e., seeky), timed-out
-+	 * and async queues, to favor sequential sync workloads.
-+	 *
-+	 * Processes doing I/O in the slower disk zones will tend to be
-+	 * slow(er) even if not seeky. Hence, since the estimated peak
-+	 * rate is actually an average over the disk surface, these
-+	 * processes may timeout just for bad luck. To avoid punishing
-+	 * them we do not charge a full budget to a process that
-+	 * succeeded in consuming at least 2/3 of its budget.
-+	 */
-+	if (slow || (reason == BFQ_BFQQ_BUDGET_TIMEOUT &&
-+		     bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3))
-+		bfq_bfqq_charge_full_budget(bfqq);
-+
-+	bfqq->service_from_backlogged += bfqq->entity.service;
-+
-+	if (BFQQ_SEEKY(bfqq) && reason == BFQ_BFQQ_BUDGET_TIMEOUT &&
-+	    !bfq_bfqq_constantly_seeky(bfqq)) {
-+		bfq_mark_bfqq_constantly_seeky(bfqq);
-+		if (!blk_queue_nonrot(bfqd->queue))
-+			bfqd->const_seeky_busy_in_flight_queues++;
-+	}
-+
-+	if (reason == BFQ_BFQQ_TOO_IDLE &&
-+	    bfqq->entity.service <= 2 * bfqq->entity.budget / 10 )
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+
-+	if (bfqd->low_latency && bfqq->wr_coeff == 1)
-+		bfqq->last_wr_start_finish = jiffies;
-+
-+	if (bfqd->low_latency && bfqd->bfq_wr_max_softrt_rate > 0 &&
-+	    RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		/*
-+		 * If we get here, and there are no outstanding requests,
-+		 * then the request pattern is isochronous (see the comments
-+		 * to the function bfq_bfqq_softrt_next_start()). Hence we
-+		 * can compute soft_rt_next_start. If, instead, the queue
-+		 * still has outstanding requests, then we have to wait
-+		 * for the completion of all the outstanding requests to
-+		 * discover whether the request pattern is actually
-+		 * isochronous.
-+		 */
-+		if (bfqq->dispatched == 0)
-+			bfqq->soft_rt_next_start =
-+				bfq_bfqq_softrt_next_start(bfqd, bfqq);
-+		else {
-+			/*
-+			 * The application is still waiting for the
-+			 * completion of one or more requests:
-+			 * prevent it from possibly being incorrectly
-+			 * deemed as soft real-time by setting its
-+			 * soft_rt_next_start to infinity. In fact,
-+			 * without this assignment, the application
-+			 * would be incorrectly deemed as soft
-+			 * real-time if:
-+			 * 1) it issued a new request before the
-+			 *    completion of all its in-flight
-+			 *    requests, and
-+			 * 2) at that time, its soft_rt_next_start
-+			 *    happened to be in the past.
-+			 */
-+			bfqq->soft_rt_next_start =
-+				bfq_infinity_from_now(jiffies);
-+			/*
-+			 * Schedule an update of soft_rt_next_start to when
-+			 * the task may be discovered to be isochronous.
-+			 */
-+			bfq_mark_bfqq_softrt_update(bfqq);
-+		}
-+	}
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+		"expire (%d, slow %d, num_disp %d, idle_win %d)", reason,
-+		slow, bfqq->dispatched, bfq_bfqq_idle_window(bfqq));
-+
-+	/*
-+	 * Increase, decrease or leave budget unchanged according to
-+	 * reason.
-+	 */
-+	__bfq_bfqq_recalc_budget(bfqd, bfqq, reason);
-+	__bfq_bfqq_expire(bfqd, bfqq);
-+}
-+
-+/*
-+ * Budget timeout is not implemented through a dedicated timer, but
-+ * just checked on request arrivals and completions, as well as on
-+ * idle timer expirations.
-+ */
-+static int bfq_bfqq_budget_timeout(struct bfq_queue *bfqq)
-+{
-+	if (bfq_bfqq_budget_new(bfqq) ||
-+	    time_before(jiffies, bfqq->budget_timeout))
-+		return 0;
-+	return 1;
-+}
-+
-+/*
-+ * If we expire a queue that is waiting for the arrival of a new
-+ * request, we may prevent the fictitious timestamp back-shifting that
-+ * allows the guarantees of the queue to be preserved (see [1] for
-+ * this tricky aspect). Hence we return true only if this condition
-+ * does not hold, or if the queue is slow enough to deserve only to be
-+ * kicked off for preserving a high throughput.
-+*/
-+static inline int bfq_may_expire_for_budg_timeout(struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq,
-+		"may_budget_timeout: wait_request %d left %d timeout %d",
-+		bfq_bfqq_wait_request(bfqq),
-+			bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3,
-+		bfq_bfqq_budget_timeout(bfqq));
-+
-+	return (!bfq_bfqq_wait_request(bfqq) ||
-+		bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3)
-+		&&
-+		bfq_bfqq_budget_timeout(bfqq);
-+}
-+
-+/*
-+ * Device idling is allowed only for the queues for which this function
-+ * returns true. For this reason, the return value of this function plays a
-+ * critical role for both throughput boosting and service guarantees. The
-+ * return value is computed through a logical expression. In this rather
-+ * long comment, we try to briefly describe all the details and motivations
-+ * behind the components of this logical expression.
-+ *
-+ * First, the expression is false if bfqq is not sync, or if: bfqq happened
-+ * to become active during a large burst of queue activations, and the
-+ * pattern of requests bfqq contains boosts the throughput if bfqq is
-+ * expired. In fact, queues that became active during a large burst benefit
-+ * only from throughput, as discussed in the comments to bfq_handle_burst.
-+ * In this respect, expiring bfqq certainly boosts the throughput on NCQ-
-+ * capable flash-based devices, whereas, on rotational devices, it boosts
-+ * the throughput only if bfqq contains random requests.
-+ *
-+ * On the opposite end, if (a) bfqq is sync, (b) the above burst-related
-+ * condition does not hold, and (c) bfqq is being weight-raised, then the
-+ * expression always evaluates to true, as device idling is instrumental
-+ * for preserving low-latency guarantees (see [1]). If, instead, conditions
-+ * (a) and (b) do hold, but (c) does not, then the expression evaluates to
-+ * true only if: (1) bfqq is I/O-bound and has a non-null idle window, and
-+ * (2) at least one of the following two conditions holds.
-+ * The first condition is that the device is not performing NCQ, because
-+ * idling the device most certainly boosts the throughput if this condition
-+ * holds and bfqq is I/O-bound and has been granted a non-null idle window.
-+ * The second compound condition is made of the logical AND of two components.
-+ *
-+ * The first component is true only if there is no weight-raised busy
-+ * queue. This guarantees that the device is not idled for a sync non-
-+ * weight-raised queue when there are busy weight-raised queues. The former
-+ * is then expired immediately if empty. Combined with the timestamping
-+ * rules of BFQ (see [1] for details), this causes sync non-weight-raised
-+ * queues to get a lower number of requests served, and hence to ask for a
-+ * lower number of requests from the request pool, before the busy weight-
-+ * raised queues get served again.
-+ *
-+ * This is beneficial for the processes associated with weight-raised
-+ * queues, when the request pool is saturated (e.g., in the presence of
-+ * write hogs). In fact, if the processes associated with the other queues
-+ * ask for requests at a lower rate, then weight-raised processes have a
-+ * higher probability to get a request from the pool immediately (or at
-+ * least soon) when they need one. Hence they have a higher probability to
-+ * actually get a fraction of the disk throughput proportional to their
-+ * high weight. This is especially true with NCQ-capable drives, which
-+ * enqueue several requests in advance and further reorder internally-
-+ * queued requests.
-+ *
-+ * In the end, mistreating non-weight-raised queues when there are busy
-+ * weight-raised queues seems to mitigate starvation problems in the
-+ * presence of heavy write workloads and NCQ, and hence to guarantee a
-+ * higher application and system responsiveness in these hostile scenarios.
-+ *
-+ * If the first component of the compound condition is instead true, i.e.,
-+ * there is no weight-raised busy queue, then the second component of the
-+ * compound condition takes into account service-guarantee and throughput
-+ * issues related to NCQ (recall that the compound condition is evaluated
-+ * only if the device is detected as supporting NCQ).
-+ *
-+ * As for service guarantees, allowing the drive to enqueue more than one
-+ * request at a time, and hence delegating de facto final scheduling
-+ * decisions to the drive's internal scheduler, causes loss of control on
-+ * the actual request service order. In this respect, when the drive is
-+ * allowed to enqueue more than one request at a time, the service
-+ * distribution enforced by the drive's internal scheduler is likely to
-+ * coincide with the desired device-throughput distribution only in the
-+ * following, perfectly symmetric, scenario:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups at the same level in the groups tree have the same
-+ *    weight,
-+ * 3) all active groups at the same level in the groups tree have the same
-+ *    number of children.
-+ *
-+ * Even in such a scenario, sequential I/O may still receive a preferential
-+ * treatment, but this is not likely to be a big issue with flash-based
-+ * devices, because of their non-dramatic loss of throughput with random
-+ * I/O. Things do differ with HDDs, for which additional care is taken, as
-+ * explained after completing the discussion for flash-based devices.
-+ *
-+ * Unfortunately, keeping the necessary state for evaluating exactly the
-+ * above symmetry conditions would be quite complex and time-consuming.
-+ * Therefore BFQ evaluates instead the following stronger sub-conditions,
-+ * for which it is much easier to maintain the needed state:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups have the same weight,
-+ * 3) all active groups have at most one active child each.
-+ * In particular, the last two conditions are always true if hierarchical
-+ * support and the cgroups interface are not enabled, hence no state needs
-+ * to be maintained in this case.
-+ *
-+ * According to the above considerations, the second component of the
-+ * compound condition evaluates to true if any of the above symmetry
-+ * sub-condition does not hold, or the device is not flash-based. Therefore,
-+ * if also the first component is true, then idling is allowed for a sync
-+ * queue. These are the only sub-conditions considered if the device is
-+ * flash-based, as, for such a device, it is sensible to force idling only
-+ * for service-guarantee issues. In fact, as for throughput, idling
-+ * NCQ-capable flash-based devices would not boost the throughput even
-+ * with sequential I/O; rather it would lower the throughput in proportion
-+ * to how fast the device is. In the end, (only) if all the three
-+ * sub-conditions hold and the device is flash-based, the compound
-+ * condition evaluates to false and therefore no idling is performed.
-+ *
-+ * As already said, things change with a rotational device, where idling
-+ * boosts the throughput with sequential I/O (even with NCQ). Hence, for
-+ * such a device the second component of the compound condition evaluates
-+ * to true also if the following additional sub-condition does not hold:
-+ * the queue is constantly seeky. Unfortunately, this different behavior
-+ * with respect to flash-based devices causes an additional asymmetry: if
-+ * some sync queues enjoy idling and some other sync queues do not, then
-+ * the latter get a low share of the device throughput, simply because the
-+ * former get many requests served after being set as in service, whereas
-+ * the latter do not. As a consequence, to guarantee the desired throughput
-+ * distribution, on HDDs the compound expression evaluates to true (and
-+ * hence device idling is performed) also if the following last symmetry
-+ * condition does not hold: no other queue is benefiting from idling. Also
-+ * this last condition is actually replaced with a simpler-to-maintain and
-+ * stronger condition: there is no busy queue which is not constantly seeky
-+ * (and hence may also benefit from idling).
-+ *
-+ * To sum up, when all the required symmetry and throughput-boosting
-+ * sub-conditions hold, the second component of the compound condition
-+ * evaluates to false, and hence no idling is performed. This helps to
-+ * keep the drives' internal queues full on NCQ-capable devices, and hence
-+ * to boost the throughput, without causing 'almost' any loss of service
-+ * guarantees. The 'almost' follows from the fact that, if the internal
-+ * queue of one such device is filled while all the sub-conditions hold,
-+ * but at some point in time some sub-condition stops to hold, then it may
-+ * become impossible to let requests be served in the new desired order
-+ * until all the requests already queued in the device have been served.
-+ */
-+static inline bool bfq_bfqq_must_not_expire(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define symmetric_scenario	  (!bfqd->active_numerous_groups && \
-+				   !bfq_differentiated_weights(bfqd))
-+#else
-+#define symmetric_scenario	  (!bfq_differentiated_weights(bfqd))
-+#endif
-+#define cond_for_seeky_on_ncq_hdd (bfq_bfqq_constantly_seeky(bfqq) && \
-+				   bfqd->busy_in_flight_queues == \
-+				   bfqd->const_seeky_busy_in_flight_queues)
-+
-+#define cond_for_expiring_in_burst	(bfq_bfqq_in_large_burst(bfqq) && \
-+					 bfqd->hw_tag && \
-+					 (blk_queue_nonrot(bfqd->queue) || \
-+					  bfq_bfqq_constantly_seeky(bfqq)))
-+
-+/*
-+ * Condition for expiring a non-weight-raised queue (and hence not idling
-+ * the device).
-+ */
-+#define cond_for_expiring_non_wr  (bfqd->hw_tag && \
-+				   (bfqd->wr_busy_queues > 0 || \
-+				    (symmetric_scenario && \
-+				     (blk_queue_nonrot(bfqd->queue) || \
-+				      cond_for_seeky_on_ncq_hdd))))
-+
-+	return bfq_bfqq_sync(bfqq) &&
-+		!cond_for_expiring_in_burst &&
-+		(bfqq->wr_coeff > 1 ||
-+		 (bfq_bfqq_IO_bound(bfqq) && bfq_bfqq_idle_window(bfqq) &&
-+		  !cond_for_expiring_non_wr)
-+	);
-+}
-+
-+/*
-+ * If the in-service queue is empty but sync, and the function
-+ * bfq_bfqq_must_not_expire returns true, then:
-+ * 1) the queue must remain in service and cannot be expired, and
-+ * 2) the disk must be idled to wait for the possible arrival of a new
-+ *    request for the queue.
-+ * See the comments to the function bfq_bfqq_must_not_expire for the reasons
-+ * why performing device idling is the best choice to boost the throughput
-+ * and preserve service guarantees when bfq_bfqq_must_not_expire itself
-+ * returns true.
-+ */
-+static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	return RB_EMPTY_ROOT(&bfqq->sort_list) && bfqd->bfq_slice_idle != 0 &&
-+	       bfq_bfqq_must_not_expire(bfqq);
-+}
-+
-+/*
-+ * Select a queue for service.  If we have a current queue in service,
-+ * check whether to continue servicing it, or retrieve and set a new one.
-+ */
-+static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct request *next_rq;
-+	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
-+
-+	bfqq = bfqd->in_service_queue;
-+	if (bfqq == NULL)
-+		goto new_queue;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
-+
-+	/*
-+         * If another queue has a request waiting within our mean seek
-+         * distance, let it run. The expire code will check for close
-+         * cooperators and put the close queue at the front of the
-+         * service tree. If possible, merge the expiring queue with the
-+         * new bfqq.
-+         */
-+        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
-+        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
-+                bfq_setup_merge(bfqq, new_bfqq);
-+
-+	if (bfq_may_expire_for_budg_timeout(bfqq) &&
-+	    !timer_pending(&bfqd->idle_slice_timer) &&
-+	    !bfq_bfqq_must_idle(bfqq))
-+		goto expire;
-+
-+	next_rq = bfqq->next_rq;
-+	/*
-+	 * If bfqq has requests queued and it has enough budget left to
-+	 * serve them, keep the queue, otherwise expire it.
-+	 */
-+	if (next_rq != NULL) {
-+		if (bfq_serv_to_charge(next_rq, bfqq) >
-+			bfq_bfqq_budget_left(bfqq)) {
-+			reason = BFQ_BFQQ_BUDGET_EXHAUSTED;
-+			goto expire;
-+		} else {
-+			/*
-+			 * The idle timer may be pending because we may
-+			 * not disable disk idling even when a new request
-+			 * arrives.
-+			 */
-+			if (timer_pending(&bfqd->idle_slice_timer)) {
-+				/*
-+				 * If we get here: 1) at least a new request
-+				 * has arrived but we have not disabled the
-+				 * timer because the request was too small,
-+				 * 2) then the block layer has unplugged
-+				 * the device, causing the dispatch to be
-+				 * invoked.
-+				 *
-+				 * Since the device is unplugged, now the
-+				 * requests are probably large enough to
-+				 * provide a reasonable throughput.
-+				 * So we disable idling.
-+				 */
-+				bfq_clear_bfqq_wait_request(bfqq);
-+				del_timer(&bfqd->idle_slice_timer);
-+			}
-+			if (new_bfqq == NULL)
-+				goto keep_queue;
-+			else
-+				goto expire;
-+		}
-+	}
-+
-+	/*
-+	 * No requests pending.  If the in-service queue still has requests
-+	 * in flight (possibly waiting for a completion) or is idling for a
-+	 * new request, then keep it.
-+	 */
-+	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+		bfqq = NULL;
-+		goto keep_queue;
-+	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
-+		/*
-+		 * Expiring the queue because there is a close cooperator,
-+		 * cancel timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
-+	}
-+
-+	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
-+expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
-+new_queue:
-+	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfq_log(bfqd, "select_queue: new queue %d returned",
-+		bfqq != NULL ? bfqq->pid : 0);
-+keep_queue:
-+	return bfqq;
-+}
-+
-+static void bfq_update_wr_data(struct bfq_data *bfqd,
-+			       struct bfq_queue *bfqq)
-+{
-+	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
-+		struct bfq_entity *entity = &bfqq->entity;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
-+			jiffies_to_msecs(jiffies -
-+				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(bfqq->wr_cur_max_time),
-+			bfqq->wr_coeff,
-+			bfqq->entity.weight, bfqq->entity.orig_weight);
-+
-+		BUG_ON(bfqq != bfqd->in_service_queue && entity->weight !=
-+		       entity->orig_weight * bfqq->wr_coeff);
-+		if (entity->ioprio_changed)
-+			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+		/*
-+		 * If the queue was activated in a burst, or
-+		 * too much time has elapsed from the beginning
-+		 * of this weight-raising, then end weight raising.
-+		 */
-+		if (bfq_bfqq_in_large_burst(bfqq) ||
-+		    time_is_before_jiffies(bfqq->last_wr_start_finish +
-+					   bfqq->wr_cur_max_time)) {
-+			bfqq->last_wr_start_finish = jiffies;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "wrais ending at %lu, rais_max_time %u",
-+				     bfqq->last_wr_start_finish,
-+				     jiffies_to_msecs(bfqq->wr_cur_max_time));
-+			bfq_bfqq_end_wr(bfqq);
-+			__bfq_entity_update_weight_prio(
-+				bfq_entity_service_tree(entity),
-+				entity);
-+		}
-+	}
-+}
-+
-+/*
-+ * Dispatch one request from bfqq, moving it to the request queue
-+ * dispatch list.
-+ */
-+static int bfq_dispatch_request(struct bfq_data *bfqd,
-+				struct bfq_queue *bfqq)
-+{
-+	int dispatched = 0;
-+	struct request *rq;
-+	unsigned long service_to_charge;
-+
-+	BUG_ON(RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	/* Follow expired path, else get first next available. */
-+	rq = bfq_check_fifo(bfqq);
-+	if (rq == NULL)
-+		rq = bfqq->next_rq;
-+	service_to_charge = bfq_serv_to_charge(rq, bfqq);
-+
-+	if (service_to_charge > bfq_bfqq_budget_left(bfqq)) {
-+		/*
-+		 * This may happen if the next rq is chosen in fifo order
-+		 * instead of sector order. The budget is properly
-+		 * dimensioned to be always sufficient to serve the next
-+		 * request only if it is chosen in sector order. The reason
-+		 * is that it would be quite inefficient and little useful
-+		 * to always make sure that the budget is large enough to
-+		 * serve even the possible next rq in fifo order.
-+		 * In fact, requests are seldom served in fifo order.
-+		 *
-+		 * Expire the queue for budget exhaustion, and make sure
-+		 * that the next act_budget is enough to serve the next
-+		 * request, even if it comes from the fifo expired path.
-+		 */
-+		bfqq->next_rq = rq;
-+		/*
-+		 * Since this dispatch is failed, make sure that
-+		 * a new one will be performed
-+		 */
-+		if (!bfqd->rq_in_driver)
-+			bfq_schedule_dispatch(bfqd);
-+		goto expire;
-+	}
-+
-+	/* Finally, insert request into driver dispatch list. */
-+	bfq_bfqq_served(bfqq, service_to_charge);
-+	bfq_dispatch_insert(bfqd->queue, rq);
-+
-+	bfq_update_wr_data(bfqd, bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+			"dispatched %u sec req (%llu), budg left %lu",
-+			blk_rq_sectors(rq),
-+			(long long unsigned)blk_rq_pos(rq),
-+			bfq_bfqq_budget_left(bfqq));
-+
-+	dispatched++;
-+
-+	if (bfqd->in_service_bic == NULL) {
-+		atomic_long_inc(&RQ_BIC(rq)->icq.ioc->refcount);
-+		bfqd->in_service_bic = RQ_BIC(rq);
-+	}
-+
-+	if (bfqd->busy_queues > 1 && ((!bfq_bfqq_sync(bfqq) &&
-+	    dispatched >= bfqd->bfq_max_budget_async_rq) ||
-+	    bfq_class_idle(bfqq)))
-+		goto expire;
-+
-+	return dispatched;
-+
-+expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_EXHAUSTED);
-+	return dispatched;
-+}
-+
-+static int __bfq_forced_dispatch_bfqq(struct bfq_queue *bfqq)
-+{
-+	int dispatched = 0;
-+
-+	while (bfqq->next_rq != NULL) {
-+		bfq_dispatch_insert(bfqq->bfqd->queue, bfqq->next_rq);
-+		dispatched++;
-+	}
-+
-+	BUG_ON(!list_empty(&bfqq->fifo));
-+	return dispatched;
-+}
-+
-+/*
-+ * Drain our current requests.
-+ * Used for barriers and when switching io schedulers on-the-fly.
-+ */
-+static int bfq_forced_dispatch(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq, *n;
-+	struct bfq_service_tree *st;
-+	int dispatched = 0;
-+
-+	bfqq = bfqd->in_service_queue;
-+	if (bfqq != NULL)
-+		__bfq_bfqq_expire(bfqd, bfqq);
-+
-+	/*
-+	 * Loop through classes, and be careful to leave the scheduler
-+	 * in a consistent state, as feedback mechanisms and vtime
-+	 * updates cannot be disabled during the process.
-+	 */
-+	list_for_each_entry_safe(bfqq, n, &bfqd->active_list, bfqq_list) {
-+		st = bfq_entity_service_tree(&bfqq->entity);
-+
-+		dispatched += __bfq_forced_dispatch_bfqq(bfqq);
-+		bfqq->max_budget = bfq_max_budget(bfqd);
-+
-+		bfq_forget_idle(st);
-+	}
-+
-+	BUG_ON(bfqd->busy_queues != 0);
-+
-+	return dispatched;
-+}
-+
-+static int bfq_dispatch_requests(struct request_queue *q, int force)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq;
-+	int max_dispatch;
-+
-+	bfq_log(bfqd, "dispatch requests: %d busy queues", bfqd->busy_queues);
-+	if (bfqd->busy_queues == 0)
-+		return 0;
-+
-+	if (unlikely(force))
-+		return bfq_forced_dispatch(bfqd);
-+
-+	bfqq = bfq_select_queue(bfqd);
-+	if (bfqq == NULL)
-+		return 0;
-+
-+	max_dispatch = bfqd->bfq_quantum;
-+	if (bfq_class_idle(bfqq))
-+		max_dispatch = 1;
-+
-+	if (!bfq_bfqq_sync(bfqq))
-+		max_dispatch = bfqd->bfq_max_budget_async_rq;
-+
-+	if (bfqq->dispatched >= max_dispatch) {
-+		if (bfqd->busy_queues > 1)
-+			return 0;
-+		if (bfqq->dispatched >= 4 * max_dispatch)
-+			return 0;
-+	}
-+
-+	if (bfqd->sync_flight != 0 && !bfq_bfqq_sync(bfqq))
-+		return 0;
-+
-+	bfq_clear_bfqq_wait_request(bfqq);
-+	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
-+
-+	if (!bfq_dispatch_request(bfqd, bfqq))
-+		return 0;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "dispatched one request of %d (max_disp %d)",
-+			bfqq->pid, max_dispatch);
-+
-+	return 1;
-+}
-+
-+/*
-+ * Task holds one reference to the queue, dropped when task exits.  Each rq
-+ * in-flight on this queue also holds a reference, dropped when rq is freed.
-+ *
-+ * Queue lock must be held here.
-+ */
-+static void bfq_put_queue(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	BUG_ON(atomic_read(&bfqq->ref) <= 0);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+	if (!atomic_dec_and_test(&bfqq->ref))
-+		return;
-+
-+	BUG_ON(rb_first(&bfqq->sort_list) != NULL);
-+	BUG_ON(bfqq->allocated[READ] + bfqq->allocated[WRITE] != 0);
-+	BUG_ON(bfqq->entity.tree != NULL);
-+	BUG_ON(bfq_bfqq_busy(bfqq));
-+	BUG_ON(bfqd->in_service_queue == bfqq);
-+
-+	if (bfq_bfqq_sync(bfqq))
-+		/*
-+		 * The fact that this queue is being destroyed does not
-+		 * invalidate the fact that this queue may have been
-+		 * activated during the current burst. As a consequence,
-+		 * although the queue does not exist anymore, and hence
-+		 * needs to be removed from the burst list if there,
-+		 * the burst size has not to be decremented.
-+		 */
-+		hlist_del_init(&bfqq->burst_list_node);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p freed", bfqq);
-+
-+	kmem_cache_free(bfq_pool, bfqq);
-+}
-+
-+static void bfq_put_cooperator(struct bfq_queue *bfqq)
-+{
-+	struct bfq_queue *__bfqq, *next;
-+
-+	/*
-+	 * If this queue was scheduled to merge with another queue, be
-+	 * sure to drop the reference taken on that queue (and others in
-+	 * the merge chain). See bfq_setup_merge and bfq_merge_bfqqs.
-+	 */
-+	__bfqq = bfqq->new_bfqq;
-+	while (__bfqq) {
-+		if (__bfqq == bfqq)
-+			break;
-+		next = __bfqq->new_bfqq;
-+		bfq_put_queue(__bfqq);
-+		__bfqq = next;
-+	}
-+}
-+
-+static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	if (bfqq == bfqd->in_service_queue) {
-+		__bfq_bfqq_expire(bfqd, bfqq);
-+		bfq_schedule_dispatch(bfqd);
-+	}
-+
-+	bfq_log_bfqq(bfqd, bfqq, "exit_bfqq: %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_init_icq(struct io_cq *icq)
-+{
-+	struct bfq_io_cq *bic = icq_to_bic(icq);
-+
-+	bic->ttime.last_end_request = jiffies;
-+}
-+
-+static void bfq_exit_icq(struct io_cq *icq)
-+{
-+	struct bfq_io_cq *bic = icq_to_bic(icq);
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+
-+	if (bic->bfqq[BLK_RW_ASYNC]) {
-+		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_ASYNC]);
-+		bic->bfqq[BLK_RW_ASYNC] = NULL;
-+	}
-+
-+	if (bic->bfqq[BLK_RW_SYNC]) {
-+		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
-+		bic->bfqq[BLK_RW_SYNC] = NULL;
-+	}
-+}
-+
-+/*
-+ * Update the entity prio values; note that the new values will not
-+ * be used until the next (re)activation.
-+ */
-+static void bfq_init_prio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	struct task_struct *tsk = current;
-+	int ioprio_class;
-+
-+	if (!bfq_bfqq_prio_changed(bfqq))
-+		return;
-+
-+	ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio);
-+	switch (ioprio_class) {
-+	default:
-+		dev_err(bfqq->bfqd->queue->backing_dev_info.dev,
-+			"bfq: bad prio class %d\n", ioprio_class);
-+	case IOPRIO_CLASS_NONE:
-+		/*
-+		 * No prio set, inherit CPU scheduling settings.
-+		 */
-+		bfqq->entity.new_ioprio = task_nice_ioprio(tsk);
-+		bfqq->entity.new_ioprio_class = task_nice_ioclass(tsk);
-+		break;
-+	case IOPRIO_CLASS_RT:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_RT;
-+		break;
-+	case IOPRIO_CLASS_BE:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_BE;
-+		break;
-+	case IOPRIO_CLASS_IDLE:
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_IDLE;
-+		bfqq->entity.new_ioprio = 7;
-+		bfq_clear_bfqq_idle_window(bfqq);
-+		break;
-+	}
-+
-+	if (bfqq->entity.new_ioprio < 0 ||
-+	    bfqq->entity.new_ioprio >= IOPRIO_BE_NR) {
-+		printk(KERN_CRIT "bfq_init_prio_data: new_ioprio %d\n",
-+				 bfqq->entity.new_ioprio);
-+		BUG();
-+	}
-+
-+	bfqq->entity.ioprio_changed = 1;
-+
-+	bfq_clear_bfqq_prio_changed(bfqq);
-+}
-+
-+static void bfq_changed_ioprio(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+	struct bfq_group *bfqg;
-+	unsigned long uninitialized_var(flags);
-+	int ioprio = bic->icq.ioc->ioprio;
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	/*
-+	 * This condition may trigger on a newly created bic, be sure to
-+	 * drop the lock before returning.
-+	 */
-+	if (unlikely(bfqd == NULL) || likely(bic->ioprio == ioprio))
-+		goto out;
-+
-+	bfqq = bic->bfqq[BLK_RW_ASYNC];
-+	if (bfqq != NULL) {
-+		bfqg = container_of(bfqq->entity.sched_data, struct bfq_group,
-+				    sched_data);
-+		new_bfqq = bfq_get_queue(bfqd, bfqg, BLK_RW_ASYNC, bic,
-+					 GFP_ATOMIC);
-+		if (new_bfqq != NULL) {
-+			bic->bfqq[BLK_RW_ASYNC] = new_bfqq;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "changed_ioprio: bfqq %p %d",
-+				     bfqq, atomic_read(&bfqq->ref));
-+			bfq_put_queue(bfqq);
-+		}
-+	}
-+
-+	bfqq = bic->bfqq[BLK_RW_SYNC];
-+	if (bfqq != NULL)
-+		bfq_mark_bfqq_prio_changed(bfqq);
-+
-+	bic->ioprio = ioprio;
-+
-+out:
-+	bfq_put_bfqd_unlock(bfqd, &flags);
-+}
-+
-+static void bfq_init_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			  pid_t pid, int is_sync)
-+{
-+	RB_CLEAR_NODE(&bfqq->entity.rb_node);
-+	INIT_LIST_HEAD(&bfqq->fifo);
-+	INIT_HLIST_NODE(&bfqq->burst_list_node);
-+
-+	atomic_set(&bfqq->ref, 0);
-+	bfqq->bfqd = bfqd;
-+
-+	bfq_mark_bfqq_prio_changed(bfqq);
-+
-+	if (is_sync) {
-+		if (!bfq_class_idle(bfqq))
-+			bfq_mark_bfqq_idle_window(bfqq);
-+		bfq_mark_bfqq_sync(bfqq);
-+	}
-+	bfq_mark_bfqq_IO_bound(bfqq);
-+
-+	/* Tentative initial value to trade off between thr and lat */
-+	bfqq->max_budget = (2 * bfq_max_budget(bfqd)) / 3;
-+	bfqq->pid = pid;
-+
-+	bfqq->wr_coeff = 1;
-+	bfqq->last_wr_start_finish = 0;
-+	/*
-+	 * Set to the value for which bfqq will not be deemed as
-+	 * soft rt when it becomes backlogged.
-+	 */
-+	bfqq->soft_rt_next_start = bfq_infinity_from_now(jiffies);
-+}
-+
-+static struct bfq_queue *bfq_find_alloc_queue(struct bfq_data *bfqd,
-+					      struct bfq_group *bfqg,
-+					      int is_sync,
-+					      struct bfq_io_cq *bic,
-+					      gfp_t gfp_mask)
-+{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+
-+retry:
-+	/* bic always exists here */
-+	bfqq = bic_to_bfqq(bic, is_sync);
-+
-+	/*
-+	 * Always try a new alloc if we fall back to the OOM bfqq
-+	 * originally, since it should just be a temporary situation.
-+	 */
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = NULL;
-+		if (new_bfqq != NULL) {
-+			bfqq = new_bfqq;
-+			new_bfqq = NULL;
-+		} else if (gfp_mask & __GFP_WAIT) {
-+			spin_unlock_irq(bfqd->queue->queue_lock);
-+			new_bfqq = kmem_cache_alloc_node(bfq_pool,
-+					gfp_mask | __GFP_ZERO,
-+					bfqd->queue->node);
-+			spin_lock_irq(bfqd->queue->queue_lock);
-+			if (new_bfqq != NULL)
-+				goto retry;
-+		} else {
-+			bfqq = kmem_cache_alloc_node(bfq_pool,
-+					gfp_mask | __GFP_ZERO,
-+					bfqd->queue->node);
-+		}
-+
-+		if (bfqq != NULL) {
-+			bfq_init_bfqq(bfqd, bfqq, current->pid, is_sync);
-+			bfq_init_prio_data(bfqq, bic);
-+			bfq_init_entity(&bfqq->entity, bfqg);
-+			bfq_log_bfqq(bfqd, bfqq, "allocated");
-+		} else {
-+			bfqq = &bfqd->oom_bfqq;
-+			bfq_log_bfqq(bfqd, bfqq, "using oom bfqq");
-+		}
-+	}
-+
-+	if (new_bfqq != NULL)
-+		kmem_cache_free(bfq_pool, new_bfqq);
-+
-+	return bfqq;
-+}
-+
-+static struct bfq_queue **bfq_async_queue_prio(struct bfq_data *bfqd,
-+					       struct bfq_group *bfqg,
-+					       int ioprio_class, int ioprio)
-+{
-+	switch (ioprio_class) {
-+	case IOPRIO_CLASS_RT:
-+		return &bfqg->async_bfqq[0][ioprio];
-+	case IOPRIO_CLASS_NONE:
-+		ioprio = IOPRIO_NORM;
-+		/* fall through */
-+	case IOPRIO_CLASS_BE:
-+		return &bfqg->async_bfqq[1][ioprio];
-+	case IOPRIO_CLASS_IDLE:
-+		return &bfqg->async_idle_bfqq;
-+	default:
-+		BUG();
-+	}
-+}
-+
-+static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
-+				       struct bfq_io_cq *bic, gfp_t gfp_mask)
-+{
-+	const int ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+	const int ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio);
-+	struct bfq_queue **async_bfqq = NULL;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	if (!is_sync) {
-+		async_bfqq = bfq_async_queue_prio(bfqd, bfqg, ioprio_class,
-+						  ioprio);
-+		bfqq = *async_bfqq;
-+	}
-+
-+	if (bfqq == NULL)
-+		bfqq = bfq_find_alloc_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
-+
-+	/*
-+	 * Pin the queue now that it's allocated, scheduler exit will
-+	 * prune it.
-+	 */
-+	if (!is_sync && *async_bfqq == NULL) {
-+		atomic_inc(&bfqq->ref);
-+		bfq_log_bfqq(bfqd, bfqq, "get_queue, bfqq not in async: %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		*async_bfqq = bfqq;
-+	}
-+
-+	atomic_inc(&bfqq->ref);
-+	bfq_log_bfqq(bfqd, bfqq, "get_queue, at end: %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+	return bfqq;
-+}
-+
-+static void bfq_update_io_thinktime(struct bfq_data *bfqd,
-+				    struct bfq_io_cq *bic)
-+{
-+	unsigned long elapsed = jiffies - bic->ttime.last_end_request;
-+	unsigned long ttime = min(elapsed, 2UL * bfqd->bfq_slice_idle);
-+
-+	bic->ttime.ttime_samples = (7*bic->ttime.ttime_samples + 256) / 8;
-+	bic->ttime.ttime_total = (7*bic->ttime.ttime_total + 256*ttime) / 8;
-+	bic->ttime.ttime_mean = (bic->ttime.ttime_total + 128) /
-+				bic->ttime.ttime_samples;
-+}
-+
-+static void bfq_update_io_seektime(struct bfq_data *bfqd,
-+				   struct bfq_queue *bfqq,
-+				   struct request *rq)
-+{
-+	sector_t sdist;
-+	u64 total;
-+
-+	if (bfqq->last_request_pos < blk_rq_pos(rq))
-+		sdist = blk_rq_pos(rq) - bfqq->last_request_pos;
-+	else
-+		sdist = bfqq->last_request_pos - blk_rq_pos(rq);
-+
-+	/*
-+	 * Don't allow the seek distance to get too large from the
-+	 * odd fragment, pagein, etc.
-+	 */
-+	if (bfqq->seek_samples == 0) /* first request, not really a seek */
-+		sdist = 0;
-+	else if (bfqq->seek_samples <= 60) /* second & third seek */
-+		sdist = min(sdist, (bfqq->seek_mean * 4) + 2*1024*1024);
-+	else
-+		sdist = min(sdist, (bfqq->seek_mean * 4) + 2*1024*64);
-+
-+	bfqq->seek_samples = (7*bfqq->seek_samples + 256) / 8;
-+	bfqq->seek_total = (7*bfqq->seek_total + (u64)256*sdist) / 8;
-+	total = bfqq->seek_total + (bfqq->seek_samples/2);
-+	do_div(total, bfqq->seek_samples);
-+	bfqq->seek_mean = (sector_t)total;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "dist=%llu mean=%llu", (u64)sdist,
-+			(u64)bfqq->seek_mean);
-+}
-+
-+/*
-+ * Disable idle window if the process thinks too long or seeks so much that
-+ * it doesn't matter.
-+ */
-+static void bfq_update_idle_window(struct bfq_data *bfqd,
-+				   struct bfq_queue *bfqq,
-+				   struct bfq_io_cq *bic)
-+{
-+	int enable_idle;
-+
-+	/* Don't idle for async or idle io prio class. */
-+	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
-+		return;
-+
-+	enable_idle = bfq_bfqq_idle_window(bfqq);
-+
-+	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-+	    bfqd->bfq_slice_idle == 0 ||
-+		(bfqd->hw_tag && BFQQ_SEEKY(bfqq) &&
-+			bfqq->wr_coeff == 1))
-+		enable_idle = 0;
-+	else if (bfq_sample_valid(bic->ttime.ttime_samples)) {
-+		if (bic->ttime.ttime_mean > bfqd->bfq_slice_idle &&
-+			bfqq->wr_coeff == 1)
-+			enable_idle = 0;
-+		else
-+			enable_idle = 1;
-+	}
-+	bfq_log_bfqq(bfqd, bfqq, "update_idle_window: enable_idle %d",
-+		enable_idle);
-+
-+	if (enable_idle)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+}
-+
-+/*
-+ * Called when a new fs request (rq) is added to bfqq.  Check if there's
-+ * something we should do about it.
-+ */
-+static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			    struct request *rq)
-+{
-+	struct bfq_io_cq *bic = RQ_BIC(rq);
-+
-+	if (rq->cmd_flags & REQ_META)
-+		bfqq->meta_pending++;
-+
-+	bfq_update_io_thinktime(bfqd, bic);
-+	bfq_update_io_seektime(bfqd, bfqq, rq);
-+	if (!BFQQ_SEEKY(bfqq) && bfq_bfqq_constantly_seeky(bfqq)) {
-+		bfq_clear_bfqq_constantly_seeky(bfqq);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->const_seeky_busy_in_flight_queues);
-+			bfqd->const_seeky_busy_in_flight_queues--;
-+		}
-+	}
-+	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
-+	    !BFQQ_SEEKY(bfqq))
-+		bfq_update_idle_window(bfqd, bfqq, bic);
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-+		     bfq_bfqq_idle_window(bfqq), BFQQ_SEEKY(bfqq),
-+		     (long long unsigned)bfqq->seek_mean);
-+
-+	bfqq->last_request_pos = blk_rq_pos(rq) + blk_rq_sectors(rq);
-+
-+	if (bfqq == bfqd->in_service_queue && bfq_bfqq_wait_request(bfqq)) {
-+		int small_req = bfqq->queued[rq_is_sync(rq)] == 1 &&
-+				blk_rq_sectors(rq) < 32;
-+		int budget_timeout = bfq_bfqq_budget_timeout(bfqq);
-+
-+		/*
-+		 * There is just this request queued: if the request
-+		 * is small and the queue is not to be expired, then
-+		 * just exit.
-+		 *
-+		 * In this way, if the disk is being idled to wait for
-+		 * a new request from the in-service queue, we avoid
-+		 * unplugging the device and committing the disk to serve
-+		 * just a small request. On the contrary, we wait for
-+		 * the block layer to decide when to unplug the device:
-+		 * hopefully, new requests will be merged to this one
-+		 * quickly, then the device will be unplugged and
-+		 * larger requests will be dispatched.
-+		 */
-+		if (small_req && !budget_timeout)
-+			return;
-+
-+		/*
-+		 * A large enough request arrived, or the queue is to
-+		 * be expired: in both cases disk idling is to be
-+		 * stopped, so clear wait_request flag and reset
-+		 * timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
-+
-+		/*
-+		 * The queue is not empty, because a new request just
-+		 * arrived. Hence we can safely expire the queue, in
-+		 * case of budget timeout, without risking that the
-+		 * timestamps of the queue are not updated correctly.
-+		 * See [1] for more details.
-+		 */
-+		if (budget_timeout)
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
-+
-+		/*
-+		 * Let the request rip immediately, or let a new queue be
-+		 * selected if bfqq has just been expired.
-+		 */
-+		__blk_run_queue(bfqd->queue);
-+	}
-+}
-+
-+static void bfq_insert_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	assert_spin_locked(bfqd->queue->queue_lock);
-+	bfq_init_prio_data(bfqq, RQ_BIC(rq));
-+
-+	bfq_add_request(rq);
-+
-+	rq->fifo_time = jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
-+	list_add_tail(&rq->queuelist, &bfqq->fifo);
-+
-+	bfq_rq_enqueued(bfqd, bfqq, rq);
-+}
-+
-+static void bfq_update_hw_tag(struct bfq_data *bfqd)
-+{
-+	bfqd->max_rq_in_driver = max(bfqd->max_rq_in_driver,
-+				     bfqd->rq_in_driver);
-+
-+	if (bfqd->hw_tag == 1)
-+		return;
-+
-+	/*
-+	 * This sample is valid if the number of outstanding requests
-+	 * is large enough to allow a queueing behavior.  Note that the
-+	 * sum is not exact, as it's not taking into account deactivated
-+	 * requests.
-+	 */
-+	if (bfqd->rq_in_driver + bfqd->queued < BFQ_HW_QUEUE_THRESHOLD)
-+		return;
-+
-+	if (bfqd->hw_tag_samples++ < BFQ_HW_QUEUE_SAMPLES)
-+		return;
-+
-+	bfqd->hw_tag = bfqd->max_rq_in_driver > BFQ_HW_QUEUE_THRESHOLD;
-+	bfqd->max_rq_in_driver = 0;
-+	bfqd->hw_tag_samples = 0;
-+}
-+
-+static void bfq_completed_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	bool sync = bfq_bfqq_sync(bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "completed one req with %u sects left (%d)",
-+		     blk_rq_sectors(rq), sync);
-+
-+	bfq_update_hw_tag(bfqd);
-+
-+	BUG_ON(!bfqd->rq_in_driver);
-+	BUG_ON(!bfqq->dispatched);
-+	bfqd->rq_in_driver--;
-+	bfqq->dispatched--;
-+
-+	if (!bfqq->dispatched && !bfq_bfqq_busy(bfqq)) {
-+		bfq_weights_tree_remove(bfqd, &bfqq->entity,
-+					&bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->busy_in_flight_queues);
-+			bfqd->busy_in_flight_queues--;
-+			if (bfq_bfqq_constantly_seeky(bfqq)) {
-+				BUG_ON(!bfqd->
-+					const_seeky_busy_in_flight_queues);
-+				bfqd->const_seeky_busy_in_flight_queues--;
-+			}
-+		}
-+	}
-+
-+	if (sync) {
-+		bfqd->sync_flight--;
-+		RQ_BIC(rq)->ttime.last_end_request = jiffies;
-+	}
-+
-+	/*
-+	 * If we are waiting to discover whether the request pattern of the
-+	 * task associated with the queue is actually isochronous, and
-+	 * both requisites for this condition to hold are satisfied, then
-+	 * compute soft_rt_next_start (see the comments to the function
-+	 * bfq_bfqq_softrt_next_start()).
-+	 */
-+	if (bfq_bfqq_softrt_update(bfqq) && bfqq->dispatched == 0 &&
-+	    RB_EMPTY_ROOT(&bfqq->sort_list))
-+		bfqq->soft_rt_next_start =
-+			bfq_bfqq_softrt_next_start(bfqd, bfqq);
-+
-+	/*
-+	 * If this is the in-service queue, check if it needs to be expired,
-+	 * or if we want to idle in case it has no pending requests.
-+	 */
-+	if (bfqd->in_service_queue == bfqq) {
-+		if (bfq_bfqq_budget_new(bfqq))
-+			bfq_set_budget_timeout(bfqd);
-+
-+		if (bfq_bfqq_must_idle(bfqq)) {
-+			bfq_arm_slice_timer(bfqd);
-+			goto out;
-+		} else if (bfq_may_expire_for_budg_timeout(bfqq))
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
-+		else if (RB_EMPTY_ROOT(&bfqq->sort_list) &&
-+			 (bfqq->dispatched == 0 ||
-+			  !bfq_bfqq_must_not_expire(bfqq)))
-+			bfq_bfqq_expire(bfqd, bfqq, 0,
-+					BFQ_BFQQ_NO_MORE_REQUESTS);
-+	}
-+
-+	if (!bfqd->rq_in_driver)
-+		bfq_schedule_dispatch(bfqd);
-+
-+out:
-+	return;
-+}
-+
-+static inline int __bfq_may_queue(struct bfq_queue *bfqq)
-+{
-+	if (bfq_bfqq_wait_request(bfqq) && bfq_bfqq_must_alloc(bfqq)) {
-+		bfq_clear_bfqq_must_alloc(bfqq);
-+		return ELV_MQUEUE_MUST;
-+	}
-+
-+	return ELV_MQUEUE_MAY;
-+}
-+
-+static int bfq_may_queue(struct request_queue *q, int rw)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct task_struct *tsk = current;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	/*
-+	 * Don't force setup of a queue from here, as a call to may_queue
-+	 * does not necessarily imply that a request actually will be
-+	 * queued. So just lookup a possibly existing queue, or return
-+	 * 'may queue' if that fails.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
-+		return ELV_MQUEUE_MAY;
-+
-+	bfqq = bic_to_bfqq(bic, rw_is_sync(rw));
-+	if (bfqq != NULL) {
-+		bfq_init_prio_data(bfqq, bic);
-+
-+		return __bfq_may_queue(bfqq);
-+	}
-+
-+	return ELV_MQUEUE_MAY;
-+}
-+
-+/*
-+ * Queue lock held here.
-+ */
-+static void bfq_put_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	if (bfqq != NULL) {
-+		const int rw = rq_data_dir(rq);
-+
-+		BUG_ON(!bfqq->allocated[rw]);
-+		bfqq->allocated[rw]--;
-+
-+		rq->elv.priv[0] = NULL;
-+		rq->elv.priv[1] = NULL;
-+
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "put_request %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+	}
-+}
-+
-+static struct bfq_queue *
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)bfqq->new_bfqq->pid);
-+	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
-+	bfq_mark_bfqq_coop(bfqq->new_bfqq);
-+	bfq_put_queue(bfqq);
-+	return bic_to_bfqq(bic, 1);
-+}
-+
-+/*
-+ * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-+ * was the last process referring to said bfqq.
-+ */
-+static struct bfq_queue *
-+bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+	if (bfqq_process_refs(bfqq) == 1) {
-+		bfqq->pid = current->pid;
-+		bfq_clear_bfqq_coop(bfqq);
-+		bfq_clear_bfqq_split_coop(bfqq);
-+		return bfqq;
-+	}
-+
-+	bic_set_bfqq(bic, NULL, 1);
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+	return NULL;
-+}
-+
-+/*
-+ * Allocate bfq data structures associated with this request.
-+ */
-+static int bfq_set_request(struct request_queue *q, struct request *rq,
-+			   struct bio *bio, gfp_t gfp_mask)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic = icq_to_bic(rq->elv.icq);
-+	const int rw = rq_data_dir(rq);
-+	const int is_sync = rq_is_sync(rq);
-+	struct bfq_queue *bfqq;
-+	struct bfq_group *bfqg;
-+	unsigned long flags;
-+
-+	might_sleep_if(gfp_mask & __GFP_WAIT);
-+
-+	bfq_changed_ioprio(bic);
-+
-+	spin_lock_irqsave(q->queue_lock, flags);
-+
-+	if (bic == NULL)
-+		goto queue_fail;
-+
-+	bfqg = bfq_bic_update_cgroup(bic);
-+
-+new_queue:
-+	bfqq = bic_to_bfqq(bic, is_sync);
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
-+		bic_set_bfqq(bic, bfqq, is_sync);
-+	} else {
-+		/*
-+		 * If the queue was seeky for too long, break it apart.
-+		 */
-+		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
-+			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
-+			bfqq = bfq_split_bfqq(bic, bfqq);
-+			if (!bfqq)
-+				goto new_queue;
-+		}
-+
-+		/*
-+		 * Check to see if this queue is scheduled to merge with
-+		 * another closely cooperating queue. The merging of queues
-+		 * happens here as it must be done in process context.
-+		 * The reference on new_bfqq was taken in merge_bfqqs.
-+		 */
-+		if (bfqq->new_bfqq != NULL)
-+			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
-+	}
-+
-+	bfqq->allocated[rw]++;
-+	atomic_inc(&bfqq->ref);
-+	bfq_log_bfqq(bfqd, bfqq, "set_request: bfqq %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+
-+	rq->elv.priv[0] = bic;
-+	rq->elv.priv[1] = bfqq;
-+
-+	spin_unlock_irqrestore(q->queue_lock, flags);
-+
-+	return 0;
-+
-+queue_fail:
-+	bfq_schedule_dispatch(bfqd);
-+	spin_unlock_irqrestore(q->queue_lock, flags);
-+
-+	return 1;
-+}
-+
-+static void bfq_kick_queue(struct work_struct *work)
-+{
-+	struct bfq_data *bfqd =
-+		container_of(work, struct bfq_data, unplug_work);
-+	struct request_queue *q = bfqd->queue;
-+
-+	spin_lock_irq(q->queue_lock);
-+	__blk_run_queue(q);
-+	spin_unlock_irq(q->queue_lock);
-+}
-+
-+/*
-+ * Handler of the expiration of the timer running if the in-service queue
-+ * is idling inside its time slice.
-+ */
-+static void bfq_idle_slice_timer(unsigned long data)
-+{
-+	struct bfq_data *bfqd = (struct bfq_data *)data;
-+	struct bfq_queue *bfqq;
-+	unsigned long flags;
-+	enum bfqq_expiration reason;
-+
-+	spin_lock_irqsave(bfqd->queue->queue_lock, flags);
-+
-+	bfqq = bfqd->in_service_queue;
-+	/*
-+	 * Theoretical race here: the in-service queue can be NULL or
-+	 * different from the queue that was idling if the timer handler
-+	 * spins on the queue_lock and a new request arrives for the
-+	 * current queue and there is a full dispatch cycle that changes
-+	 * the in-service queue.  This can hardly happen, but in the worst
-+	 * case we just expire a queue too early.
-+	 */
-+	if (bfqq != NULL) {
-+		bfq_log_bfqq(bfqd, bfqq, "slice_timer expired");
-+		if (bfq_bfqq_budget_timeout(bfqq))
-+			/*
-+			 * Also here the queue can be safely expired
-+			 * for budget timeout without wasting
-+			 * guarantees
-+			 */
-+			reason = BFQ_BFQQ_BUDGET_TIMEOUT;
-+		else if (bfqq->queued[0] == 0 && bfqq->queued[1] == 0)
-+			/*
-+			 * The queue may not be empty upon timer expiration,
-+			 * because we may not disable the timer when the
-+			 * first request of the in-service queue arrives
-+			 * during disk idling.
-+			 */
-+			reason = BFQ_BFQQ_TOO_IDLE;
-+		else
-+			goto schedule_dispatch;
-+
-+		bfq_bfqq_expire(bfqd, bfqq, 1, reason);
-+	}
-+
-+schedule_dispatch:
-+	bfq_schedule_dispatch(bfqd);
-+
-+	spin_unlock_irqrestore(bfqd->queue->queue_lock, flags);
-+}
-+
-+static void bfq_shutdown_timer_wq(struct bfq_data *bfqd)
-+{
-+	del_timer_sync(&bfqd->idle_slice_timer);
-+	cancel_work_sync(&bfqd->unplug_work);
-+}
-+
-+static inline void __bfq_put_async_bfqq(struct bfq_data *bfqd,
-+					struct bfq_queue **bfqq_ptr)
-+{
-+	struct bfq_group *root_group = bfqd->root_group;
-+	struct bfq_queue *bfqq = *bfqq_ptr;
-+
-+	bfq_log(bfqd, "put_async_bfqq: %p", bfqq);
-+	if (bfqq != NULL) {
-+		bfq_bfqq_move(bfqd, bfqq, &bfqq->entity, root_group);
-+		bfq_log_bfqq(bfqd, bfqq, "put_async_bfqq: putting %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+		*bfqq_ptr = NULL;
-+	}
-+}
-+
-+/*
-+ * Release all the bfqg references to its async queues.  If we are
-+ * deallocating the group these queues may still contain requests, so
-+ * we reparent them to the root cgroup (i.e., the only one that will
-+ * exist for sure until all the requests on a device are gone).
-+ */
-+static void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg)
-+{
-+	int i, j;
-+
-+	for (i = 0; i < 2; i++)
-+		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			__bfq_put_async_bfqq(bfqd, &bfqg->async_bfqq[i][j]);
-+
-+	__bfq_put_async_bfqq(bfqd, &bfqg->async_idle_bfqq);
-+}
-+
-+static void bfq_exit_queue(struct elevator_queue *e)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	struct request_queue *q = bfqd->queue;
-+	struct bfq_queue *bfqq, *n;
-+
-+	bfq_shutdown_timer_wq(bfqd);
-+
-+	spin_lock_irq(q->queue_lock);
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+	list_for_each_entry_safe(bfqq, n, &bfqd->idle_list, bfqq_list)
-+		bfq_deactivate_bfqq(bfqd, bfqq, 0);
-+
-+	bfq_disconnect_groups(bfqd);
-+	spin_unlock_irq(q->queue_lock);
-+
-+	bfq_shutdown_timer_wq(bfqd);
-+
-+	synchronize_rcu();
-+
-+	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
-+
-+	bfq_free_root_group(bfqd);
-+	kfree(bfqd);
-+}
-+
-+static int bfq_init_queue(struct request_queue *q, struct elevator_type *e)
-+{
-+	struct bfq_group *bfqg;
-+	struct bfq_data *bfqd;
-+	struct elevator_queue *eq;
-+
-+	eq = elevator_alloc(q, e);
-+	if (eq == NULL)
-+		return -ENOMEM;
-+
-+	bfqd = kzalloc_node(sizeof(*bfqd), GFP_KERNEL, q->node);
-+	if (bfqd == NULL) {
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+	eq->elevator_data = bfqd;
-+
-+	/*
-+	 * Our fallback bfqq if bfq_find_alloc_queue() runs into OOM issues.
-+	 * Grab a permanent reference to it, so that the normal code flow
-+	 * will not attempt to free it.
-+	 */
-+	bfq_init_bfqq(bfqd, &bfqd->oom_bfqq, 1, 0);
-+	atomic_inc(&bfqd->oom_bfqq.ref);
-+	bfqd->oom_bfqq.entity.new_ioprio = BFQ_DEFAULT_QUEUE_IOPRIO;
-+	bfqd->oom_bfqq.entity.new_ioprio_class = IOPRIO_CLASS_BE;
-+	/*
-+	 * Trigger weight initialization, according to ioprio, at the
-+	 * oom_bfqq's first activation. The oom_bfqq's ioprio and ioprio
-+	 * class won't be changed any more.
-+	 */
-+	bfqd->oom_bfqq.entity.ioprio_changed = 1;
-+
-+	bfqd->queue = q;
-+
-+	spin_lock_irq(q->queue_lock);
-+	q->elevator = eq;
-+	spin_unlock_irq(q->queue_lock);
-+
-+	bfqg = bfq_alloc_root_group(bfqd, q->node);
-+	if (bfqg == NULL) {
-+		kfree(bfqd);
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+
-+	bfqd->root_group = bfqg;
-+	bfq_init_entity(&bfqd->oom_bfqq.entity, bfqd->root_group);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	bfqd->active_numerous_groups = 0;
-+#endif
-+
-+	init_timer(&bfqd->idle_slice_timer);
-+	bfqd->idle_slice_timer.function = bfq_idle_slice_timer;
-+	bfqd->idle_slice_timer.data = (unsigned long)bfqd;
-+
-+	bfqd->rq_pos_tree = RB_ROOT;
-+	bfqd->queue_weights_tree = RB_ROOT;
-+	bfqd->group_weights_tree = RB_ROOT;
-+
-+	INIT_WORK(&bfqd->unplug_work, bfq_kick_queue);
-+
-+	INIT_LIST_HEAD(&bfqd->active_list);
-+	INIT_LIST_HEAD(&bfqd->idle_list);
-+	INIT_HLIST_HEAD(&bfqd->burst_list);
-+
-+	bfqd->hw_tag = -1;
-+
-+	bfqd->bfq_max_budget = bfq_default_max_budget;
-+
-+	bfqd->bfq_quantum = bfq_quantum;
-+	bfqd->bfq_fifo_expire[0] = bfq_fifo_expire[0];
-+	bfqd->bfq_fifo_expire[1] = bfq_fifo_expire[1];
-+	bfqd->bfq_back_max = bfq_back_max;
-+	bfqd->bfq_back_penalty = bfq_back_penalty;
-+	bfqd->bfq_slice_idle = bfq_slice_idle;
-+	bfqd->bfq_class_idle_last_service = 0;
-+	bfqd->bfq_max_budget_async_rq = bfq_max_budget_async_rq;
-+	bfqd->bfq_timeout[BLK_RW_ASYNC] = bfq_timeout_async;
-+	bfqd->bfq_timeout[BLK_RW_SYNC] = bfq_timeout_sync;
-+
-+	bfqd->bfq_coop_thresh = 2;
-+	bfqd->bfq_failed_cooperations = 7000;
-+	bfqd->bfq_requests_within_timer = 120;
-+
-+	bfqd->bfq_large_burst_thresh = 11;
-+	bfqd->bfq_burst_interval = msecs_to_jiffies(500);
-+
-+	bfqd->low_latency = true;
-+
-+	bfqd->bfq_wr_coeff = 20;
-+	bfqd->bfq_wr_rt_max_time = msecs_to_jiffies(300);
-+	bfqd->bfq_wr_max_time = 0;
-+	bfqd->bfq_wr_min_idle_time = msecs_to_jiffies(2000);
-+	bfqd->bfq_wr_min_inter_arr_async = msecs_to_jiffies(500);
-+	bfqd->bfq_wr_max_softrt_rate = 7000; /*
-+					      * Approximate rate required
-+					      * to playback or record a
-+					      * high-definition compressed
-+					      * video.
-+					      */
-+	bfqd->wr_busy_queues = 0;
-+	bfqd->busy_in_flight_queues = 0;
-+	bfqd->const_seeky_busy_in_flight_queues = 0;
-+
-+	/*
-+	 * Begin by assuming, optimistically, that the device peak rate is
-+	 * equal to the highest reference rate.
-+	 */
-+	bfqd->RT_prod = R_fast[blk_queue_nonrot(bfqd->queue)] *
-+			T_fast[blk_queue_nonrot(bfqd->queue)];
-+	bfqd->peak_rate = R_fast[blk_queue_nonrot(bfqd->queue)];
-+	bfqd->device_speed = BFQ_BFQD_FAST;
-+
-+	return 0;
-+}
-+
-+static void bfq_slab_kill(void)
-+{
-+	if (bfq_pool != NULL)
-+		kmem_cache_destroy(bfq_pool);
-+}
-+
-+static int __init bfq_slab_setup(void)
-+{
-+	bfq_pool = KMEM_CACHE(bfq_queue, 0);
-+	if (bfq_pool == NULL)
-+		return -ENOMEM;
-+	return 0;
-+}
-+
-+static ssize_t bfq_var_show(unsigned int var, char *page)
-+{
-+	return sprintf(page, "%d\n", var);
-+}
-+
-+static ssize_t bfq_var_store(unsigned long *var, const char *page,
-+			     size_t count)
-+{
-+	unsigned long new_val;
-+	int ret = kstrtoul(page, 10, &new_val);
-+
-+	if (ret == 0)
-+		*var = new_val;
-+
-+	return count;
-+}
-+
-+static ssize_t bfq_wr_max_time_show(struct elevator_queue *e, char *page)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	return sprintf(page, "%d\n", bfqd->bfq_wr_max_time > 0 ?
-+		       jiffies_to_msecs(bfqd->bfq_wr_max_time) :
-+		       jiffies_to_msecs(bfq_wr_duration(bfqd)));
-+}
-+
-+static ssize_t bfq_weights_show(struct elevator_queue *e, char *page)
-+{
-+	struct bfq_queue *bfqq;
-+	struct bfq_data *bfqd = e->elevator_data;
-+	ssize_t num_char = 0;
-+
-+	num_char += sprintf(page + num_char, "Tot reqs queued %d\n\n",
-+			    bfqd->queued);
-+
-+	spin_lock_irq(bfqd->queue->queue_lock);
-+
-+	num_char += sprintf(page + num_char, "Active:\n");
-+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list) {
-+	  num_char += sprintf(page + num_char,
-+			      "pid%d: weight %hu, nr_queued %d %d, dur %d/%u\n",
-+			      bfqq->pid,
-+			      bfqq->entity.weight,
-+			      bfqq->queued[0],
-+			      bfqq->queued[1],
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(bfqq->wr_cur_max_time));
-+	}
-+
-+	num_char += sprintf(page + num_char, "Idle:\n");
-+	list_for_each_entry(bfqq, &bfqd->idle_list, bfqq_list) {
-+			num_char += sprintf(page + num_char,
-+				"pid%d: weight %hu, dur %d/%u\n",
-+				bfqq->pid,
-+				bfqq->entity.weight,
-+				jiffies_to_msecs(jiffies -
-+					bfqq->last_wr_start_finish),
-+				jiffies_to_msecs(bfqq->wr_cur_max_time));
-+	}
-+
-+	spin_unlock_irq(bfqd->queue->queue_lock);
-+
-+	return num_char;
-+}
-+
-+#define SHOW_FUNCTION(__FUNC, __VAR, __CONV)				\
-+static ssize_t __FUNC(struct elevator_queue *e, char *page)		\
-+{									\
-+	struct bfq_data *bfqd = e->elevator_data;			\
-+	unsigned int __data = __VAR;					\
-+	if (__CONV)							\
-+		__data = jiffies_to_msecs(__data);			\
-+	return bfq_var_show(__data, (page));				\
-+}
-+SHOW_FUNCTION(bfq_quantum_show, bfqd->bfq_quantum, 0);
-+SHOW_FUNCTION(bfq_fifo_expire_sync_show, bfqd->bfq_fifo_expire[1], 1);
-+SHOW_FUNCTION(bfq_fifo_expire_async_show, bfqd->bfq_fifo_expire[0], 1);
-+SHOW_FUNCTION(bfq_back_seek_max_show, bfqd->bfq_back_max, 0);
-+SHOW_FUNCTION(bfq_back_seek_penalty_show, bfqd->bfq_back_penalty, 0);
-+SHOW_FUNCTION(bfq_slice_idle_show, bfqd->bfq_slice_idle, 1);
-+SHOW_FUNCTION(bfq_max_budget_show, bfqd->bfq_user_max_budget, 0);
-+SHOW_FUNCTION(bfq_max_budget_async_rq_show,
-+	      bfqd->bfq_max_budget_async_rq, 0);
-+SHOW_FUNCTION(bfq_timeout_sync_show, bfqd->bfq_timeout[BLK_RW_SYNC], 1);
-+SHOW_FUNCTION(bfq_timeout_async_show, bfqd->bfq_timeout[BLK_RW_ASYNC], 1);
-+SHOW_FUNCTION(bfq_low_latency_show, bfqd->low_latency, 0);
-+SHOW_FUNCTION(bfq_wr_coeff_show, bfqd->bfq_wr_coeff, 0);
-+SHOW_FUNCTION(bfq_wr_rt_max_time_show, bfqd->bfq_wr_rt_max_time, 1);
-+SHOW_FUNCTION(bfq_wr_min_idle_time_show, bfqd->bfq_wr_min_idle_time, 1);
-+SHOW_FUNCTION(bfq_wr_min_inter_arr_async_show, bfqd->bfq_wr_min_inter_arr_async,
-+	1);
-+SHOW_FUNCTION(bfq_wr_max_softrt_rate_show, bfqd->bfq_wr_max_softrt_rate, 0);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__FUNC, __PTR, MIN, MAX, __CONV)			\
-+static ssize_t								\
-+__FUNC(struct elevator_queue *e, const char *page, size_t count)	\
-+{									\
-+	struct bfq_data *bfqd = e->elevator_data;			\
-+	unsigned long uninitialized_var(__data);			\
-+	int ret = bfq_var_store(&__data, (page), count);		\
-+	if (__data < (MIN))						\
-+		__data = (MIN);						\
-+	else if (__data > (MAX))					\
-+		__data = (MAX);						\
-+	if (__CONV)							\
-+		*(__PTR) = msecs_to_jiffies(__data);			\
-+	else								\
-+		*(__PTR) = __data;					\
-+	return ret;							\
-+}
-+STORE_FUNCTION(bfq_quantum_store, &bfqd->bfq_quantum, 1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_fifo_expire_sync_store, &bfqd->bfq_fifo_expire[1], 1,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_fifo_expire_async_store, &bfqd->bfq_fifo_expire[0], 1,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_back_seek_max_store, &bfqd->bfq_back_max, 0, INT_MAX, 0);
-+STORE_FUNCTION(bfq_back_seek_penalty_store, &bfqd->bfq_back_penalty, 1,
-+		INT_MAX, 0);
-+STORE_FUNCTION(bfq_slice_idle_store, &bfqd->bfq_slice_idle, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_max_budget_async_rq_store, &bfqd->bfq_max_budget_async_rq,
-+		1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_timeout_async_store, &bfqd->bfq_timeout[BLK_RW_ASYNC], 0,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_coeff_store, &bfqd->bfq_wr_coeff, 1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_wr_max_time_store, &bfqd->bfq_wr_max_time, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_rt_max_time_store, &bfqd->bfq_wr_rt_max_time, 0, INT_MAX,
-+		1);
-+STORE_FUNCTION(bfq_wr_min_idle_time_store, &bfqd->bfq_wr_min_idle_time, 0,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_min_inter_arr_async_store,
-+		&bfqd->bfq_wr_min_inter_arr_async, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_max_softrt_rate_store, &bfqd->bfq_wr_max_softrt_rate, 0,
-+		INT_MAX, 0);
-+#undef STORE_FUNCTION
-+
-+/* do nothing for the moment */
-+static ssize_t bfq_weights_store(struct elevator_queue *e,
-+				    const char *page, size_t count)
-+{
-+	return count;
-+}
-+
-+static inline unsigned long bfq_estimated_max_budget(struct bfq_data *bfqd)
-+{
-+	u64 timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
-+
-+	if (bfqd->peak_rate_samples >= BFQ_PEAK_RATE_SAMPLES)
-+		return bfq_calc_max_budget(bfqd->peak_rate, timeout);
-+	else
-+		return bfq_default_max_budget;
-+}
-+
-+static ssize_t bfq_max_budget_store(struct elevator_queue *e,
-+				    const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data == 0)
-+		bfqd->bfq_max_budget = bfq_estimated_max_budget(bfqd);
-+	else {
-+		if (__data > INT_MAX)
-+			__data = INT_MAX;
-+		bfqd->bfq_max_budget = __data;
-+	}
-+
-+	bfqd->bfq_user_max_budget = __data;
-+
-+	return ret;
-+}
-+
-+static ssize_t bfq_timeout_sync_store(struct elevator_queue *e,
-+				      const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data < 1)
-+		__data = 1;
-+	else if (__data > INT_MAX)
-+		__data = INT_MAX;
-+
-+	bfqd->bfq_timeout[BLK_RW_SYNC] = msecs_to_jiffies(__data);
-+	if (bfqd->bfq_user_max_budget == 0)
-+		bfqd->bfq_max_budget = bfq_estimated_max_budget(bfqd);
-+
-+	return ret;
-+}
-+
-+static ssize_t bfq_low_latency_store(struct elevator_queue *e,
-+				     const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data > 1)
-+		__data = 1;
-+	if (__data == 0 && bfqd->low_latency != 0)
-+		bfq_end_wr(bfqd);
-+	bfqd->low_latency = __data;
-+
-+	return ret;
-+}
-+
-+#define BFQ_ATTR(name) \
-+	__ATTR(name, S_IRUGO|S_IWUSR, bfq_##name##_show, bfq_##name##_store)
-+
-+static struct elv_fs_entry bfq_attrs[] = {
-+	BFQ_ATTR(quantum),
-+	BFQ_ATTR(fifo_expire_sync),
-+	BFQ_ATTR(fifo_expire_async),
-+	BFQ_ATTR(back_seek_max),
-+	BFQ_ATTR(back_seek_penalty),
-+	BFQ_ATTR(slice_idle),
-+	BFQ_ATTR(max_budget),
-+	BFQ_ATTR(max_budget_async_rq),
-+	BFQ_ATTR(timeout_sync),
-+	BFQ_ATTR(timeout_async),
-+	BFQ_ATTR(low_latency),
-+	BFQ_ATTR(wr_coeff),
-+	BFQ_ATTR(wr_max_time),
-+	BFQ_ATTR(wr_rt_max_time),
-+	BFQ_ATTR(wr_min_idle_time),
-+	BFQ_ATTR(wr_min_inter_arr_async),
-+	BFQ_ATTR(wr_max_softrt_rate),
-+	BFQ_ATTR(weights),
-+	__ATTR_NULL
-+};
-+
-+static struct elevator_type iosched_bfq = {
-+	.ops = {
-+		.elevator_merge_fn =		bfq_merge,
-+		.elevator_merged_fn =		bfq_merged_request,
-+		.elevator_merge_req_fn =	bfq_merged_requests,
-+		.elevator_allow_merge_fn =	bfq_allow_merge,
-+		.elevator_dispatch_fn =		bfq_dispatch_requests,
-+		.elevator_add_req_fn =		bfq_insert_request,
-+		.elevator_activate_req_fn =	bfq_activate_request,
-+		.elevator_deactivate_req_fn =	bfq_deactivate_request,
-+		.elevator_completed_req_fn =	bfq_completed_request,
-+		.elevator_former_req_fn =	elv_rb_former_request,
-+		.elevator_latter_req_fn =	elv_rb_latter_request,
-+		.elevator_init_icq_fn =		bfq_init_icq,
-+		.elevator_exit_icq_fn =		bfq_exit_icq,
-+		.elevator_set_req_fn =		bfq_set_request,
-+		.elevator_put_req_fn =		bfq_put_request,
-+		.elevator_may_queue_fn =	bfq_may_queue,
-+		.elevator_init_fn =		bfq_init_queue,
-+		.elevator_exit_fn =		bfq_exit_queue,
-+	},
-+	.icq_size =		sizeof(struct bfq_io_cq),
-+	.icq_align =		__alignof__(struct bfq_io_cq),
-+	.elevator_attrs =	bfq_attrs,
-+	.elevator_name =	"bfq",
-+	.elevator_owner =	THIS_MODULE,
-+};
-+
-+static int __init bfq_init(void)
-+{
-+	/*
-+	 * Can be 0 on HZ < 1000 setups.
-+	 */
-+	if (bfq_slice_idle == 0)
-+		bfq_slice_idle = 1;
-+
-+	if (bfq_timeout_async == 0)
-+		bfq_timeout_async = 1;
-+
-+	if (bfq_slab_setup())
-+		return -ENOMEM;
-+
-+	/*
-+	 * Times to load large popular applications for the typical systems
-+	 * installed on the reference devices (see the comments before the
-+	 * definitions of the two arrays).
-+	 */
-+	T_slow[0] = msecs_to_jiffies(2600);
-+	T_slow[1] = msecs_to_jiffies(1000);
-+	T_fast[0] = msecs_to_jiffies(5500);
-+	T_fast[1] = msecs_to_jiffies(2000);
-+
-+	/*
-+	 * Thresholds that determine the switch between speed classes (see
-+	 * the comments before the definition of the array).
-+	 */
-+	device_speed_thresh[0] = (R_fast[0] + R_slow[0]) / 2;
-+	device_speed_thresh[1] = (R_fast[1] + R_slow[1]) / 2;
-+
-+	elv_register(&iosched_bfq);
-+	pr_info("BFQ I/O-scheduler version: v7r7");
-+
-+	return 0;
-+}
-+
-+static void __exit bfq_exit(void)
-+{
-+	elv_unregister(&iosched_bfq);
-+	bfq_slab_kill();
-+}
-+
-+module_init(bfq_init);
-+module_exit(bfq_exit);
-+
-+MODULE_AUTHOR("Fabio Checconi, Paolo Valente");
-+MODULE_LICENSE("GPL");
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-new file mode 100644
-index 0000000..2931563
---- /dev/null
-+++ b/block/bfq-sched.c
-@@ -0,0 +1,1214 @@
-+/*
-+ * BFQ: Hierarchical B-WF2Q+ scheduler.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = entity->parent)
-+
-+#define for_each_entity_safe(entity, parent) \
-+	for (; entity && ({ parent = entity->parent; 1; }); entity = parent)
-+
-+static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
-+						 int extract,
-+						 struct bfq_data *bfqd);
-+
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
-+{
-+	struct bfq_entity *bfqg_entity;
-+	struct bfq_group *bfqg;
-+	struct bfq_sched_data *group_sd;
-+
-+	BUG_ON(next_in_service == NULL);
-+
-+	group_sd = next_in_service->sched_data;
-+
-+	bfqg = container_of(group_sd, struct bfq_group, sched_data);
-+	/*
-+	 * bfq_group's my_entity field is not NULL only if the group
-+	 * is not the root group. We must not touch the root entity
-+	 * as it must never become an in-service entity.
-+	 */
-+	bfqg_entity = bfqg->my_entity;
-+	if (bfqg_entity != NULL)
-+		bfqg_entity->budget = next_in_service->budget;
-+}
-+
-+static int bfq_update_next_in_service(struct bfq_sched_data *sd)
-+{
-+	struct bfq_entity *next_in_service;
-+
-+	if (sd->in_service_entity != NULL)
-+		/* will update/requeue at the end of service */
-+		return 0;
-+
-+	/*
-+	 * NOTE: this can be improved in many ways, such as returning
-+	 * 1 (and thus propagating upwards the update) only when the
-+	 * budget changes, or caching the bfqq that will be scheduled
-+	 * next from this subtree.  By now we worry more about
-+	 * correctness than about performance...
-+	 */
-+	next_in_service = bfq_lookup_next_entity(sd, 0, NULL);
-+	sd->next_in_service = next_in_service;
-+
-+	if (next_in_service != NULL)
-+		bfq_update_budget(next_in_service);
-+
-+	return 1;
-+}
-+
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
-+{
-+	BUG_ON(sd->next_in_service != entity);
-+}
-+#else
-+#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = NULL)
-+
-+#define for_each_entity_safe(entity, parent) \
-+	for (parent = NULL; entity != NULL; entity = parent)
-+
-+static inline int bfq_update_next_in_service(struct bfq_sched_data *sd)
-+{
-+	return 0;
-+}
-+
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
-+{
-+}
-+
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
-+{
-+}
-+#endif
-+
-+/*
-+ * Shift for timestamp calculations.  This actually limits the maximum
-+ * service allowed in one timestamp delta (small shift values increase it),
-+ * the maximum total weight that can be used for the queues in the system
-+ * (big shift values increase it), and the period of virtual time
-+ * wraparounds.
-+ */
-+#define WFQ_SERVICE_SHIFT	22
-+
-+/**
-+ * bfq_gt - compare two timestamps.
-+ * @a: first ts.
-+ * @b: second ts.
-+ *
-+ * Return @a > @b, dealing with wrapping correctly.
-+ */
-+static inline int bfq_gt(u64 a, u64 b)
-+{
-+	return (s64)(a - b) > 0;
-+}
-+
-+static inline struct bfq_queue *bfq_entity_to_bfqq(struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = NULL;
-+
-+	BUG_ON(entity == NULL);
-+
-+	if (entity->my_sched_data == NULL)
-+		bfqq = container_of(entity, struct bfq_queue, entity);
-+
-+	return bfqq;
-+}
-+
-+
-+/**
-+ * bfq_delta - map service into the virtual time domain.
-+ * @service: amount of service.
-+ * @weight: scale factor (weight of an entity or weight sum).
-+ */
-+static inline u64 bfq_delta(unsigned long service,
-+					unsigned long weight)
-+{
-+	u64 d = (u64)service << WFQ_SERVICE_SHIFT;
-+
-+	do_div(d, weight);
-+	return d;
-+}
-+
-+/**
-+ * bfq_calc_finish - assign the finish time to an entity.
-+ * @entity: the entity to act upon.
-+ * @service: the service to be charged to the entity.
-+ */
-+static inline void bfq_calc_finish(struct bfq_entity *entity,
-+				   unsigned long service)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	BUG_ON(entity->weight == 0);
-+
-+	entity->finish = entity->start +
-+		bfq_delta(service, entity->weight);
-+
-+	if (bfqq != NULL) {
-+		bfq_log_bfqq(bfqq->bfqd, bfqq,
-+			"calc_finish: serv %lu, w %d",
-+			service, entity->weight);
-+		bfq_log_bfqq(bfqq->bfqd, bfqq,
-+			"calc_finish: start %llu, finish %llu, delta %llu",
-+			entity->start, entity->finish,
-+			bfq_delta(service, entity->weight));
-+	}
-+}
-+
-+/**
-+ * bfq_entity_of - get an entity from a node.
-+ * @node: the node field of the entity.
-+ *
-+ * Convert a node pointer to the relative entity.  This is used only
-+ * to simplify the logic of some functions and not as the generic
-+ * conversion mechanism because, e.g., in the tree walking functions,
-+ * the check for a %NULL value would be redundant.
-+ */
-+static inline struct bfq_entity *bfq_entity_of(struct rb_node *node)
-+{
-+	struct bfq_entity *entity = NULL;
-+
-+	if (node != NULL)
-+		entity = rb_entry(node, struct bfq_entity, rb_node);
-+
-+	return entity;
-+}
-+
-+/**
-+ * bfq_extract - remove an entity from a tree.
-+ * @root: the tree root.
-+ * @entity: the entity to remove.
-+ */
-+static inline void bfq_extract(struct rb_root *root,
-+			       struct bfq_entity *entity)
-+{
-+	BUG_ON(entity->tree != root);
-+
-+	entity->tree = NULL;
-+	rb_erase(&entity->rb_node, root);
-+}
-+
-+/**
-+ * bfq_idle_extract - extract an entity from the idle tree.
-+ * @st: the service tree of the owning @entity.
-+ * @entity: the entity being removed.
-+ */
-+static void bfq_idle_extract(struct bfq_service_tree *st,
-+			     struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *next;
-+
-+	BUG_ON(entity->tree != &st->idle);
-+
-+	if (entity == st->first_idle) {
-+		next = rb_next(&entity->rb_node);
-+		st->first_idle = bfq_entity_of(next);
-+	}
-+
-+	if (entity == st->last_idle) {
-+		next = rb_prev(&entity->rb_node);
-+		st->last_idle = bfq_entity_of(next);
-+	}
-+
-+	bfq_extract(&st->idle, entity);
-+
-+	if (bfqq != NULL)
-+		list_del(&bfqq->bfqq_list);
-+}
-+
-+/**
-+ * bfq_insert - generic tree insertion.
-+ * @root: tree root.
-+ * @entity: entity to insert.
-+ *
-+ * This is used for the idle and the active tree, since they are both
-+ * ordered by finish time.
-+ */
-+static void bfq_insert(struct rb_root *root, struct bfq_entity *entity)
-+{
-+	struct bfq_entity *entry;
-+	struct rb_node **node = &root->rb_node;
-+	struct rb_node *parent = NULL;
-+
-+	BUG_ON(entity->tree != NULL);
-+
-+	while (*node != NULL) {
-+		parent = *node;
-+		entry = rb_entry(parent, struct bfq_entity, rb_node);
-+
-+		if (bfq_gt(entry->finish, entity->finish))
-+			node = &parent->rb_left;
-+		else
-+			node = &parent->rb_right;
-+	}
-+
-+	rb_link_node(&entity->rb_node, parent, node);
-+	rb_insert_color(&entity->rb_node, root);
-+
-+	entity->tree = root;
-+}
-+
-+/**
-+ * bfq_update_min - update the min_start field of a entity.
-+ * @entity: the entity to update.
-+ * @node: one of its children.
-+ *
-+ * This function is called when @entity may store an invalid value for
-+ * min_start due to updates to the active tree.  The function  assumes
-+ * that the subtree rooted at @node (which may be its left or its right
-+ * child) has a valid min_start value.
-+ */
-+static inline void bfq_update_min(struct bfq_entity *entity,
-+				  struct rb_node *node)
-+{
-+	struct bfq_entity *child;
-+
-+	if (node != NULL) {
-+		child = rb_entry(node, struct bfq_entity, rb_node);
-+		if (bfq_gt(entity->min_start, child->min_start))
-+			entity->min_start = child->min_start;
-+	}
-+}
-+
-+/**
-+ * bfq_update_active_node - recalculate min_start.
-+ * @node: the node to update.
-+ *
-+ * @node may have changed position or one of its children may have moved,
-+ * this function updates its min_start value.  The left and right subtrees
-+ * are assumed to hold a correct min_start value.
-+ */
-+static inline void bfq_update_active_node(struct rb_node *node)
-+{
-+	struct bfq_entity *entity = rb_entry(node, struct bfq_entity, rb_node);
-+
-+	entity->min_start = entity->start;
-+	bfq_update_min(entity, node->rb_right);
-+	bfq_update_min(entity, node->rb_left);
-+}
-+
-+/**
-+ * bfq_update_active_tree - update min_start for the whole active tree.
-+ * @node: the starting node.
-+ *
-+ * @node must be the deepest modified node after an update.  This function
-+ * updates its min_start using the values held by its children, assuming
-+ * that they did not change, and then updates all the nodes that may have
-+ * changed in the path to the root.  The only nodes that may have changed
-+ * are the ones in the path or their siblings.
-+ */
-+static void bfq_update_active_tree(struct rb_node *node)
-+{
-+	struct rb_node *parent;
-+
-+up:
-+	bfq_update_active_node(node);
-+
-+	parent = rb_parent(node);
-+	if (parent == NULL)
-+		return;
-+
-+	if (node == parent->rb_left && parent->rb_right != NULL)
-+		bfq_update_active_node(parent->rb_right);
-+	else if (parent->rb_left != NULL)
-+		bfq_update_active_node(parent->rb_left);
-+
-+	node = parent;
-+	goto up;
-+}
-+
-+static void bfq_weights_tree_add(struct bfq_data *bfqd,
-+				 struct bfq_entity *entity,
-+				 struct rb_root *root);
-+
-+static void bfq_weights_tree_remove(struct bfq_data *bfqd,
-+				    struct bfq_entity *entity,
-+				    struct rb_root *root);
-+
-+
-+/**
-+ * bfq_active_insert - insert an entity in the active tree of its
-+ *                     group/device.
-+ * @st: the service tree of the entity.
-+ * @entity: the entity being inserted.
-+ *
-+ * The active tree is ordered by finish time, but an extra key is kept
-+ * per each node, containing the minimum value for the start times of
-+ * its children (and the node itself), so it's possible to search for
-+ * the eligible node with the lowest finish time in logarithmic time.
-+ */
-+static void bfq_active_insert(struct bfq_service_tree *st,
-+			      struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *node = &entity->rb_node;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	struct bfq_sched_data *sd = NULL;
-+	struct bfq_group *bfqg = NULL;
-+	struct bfq_data *bfqd = NULL;
-+#endif
-+
-+	bfq_insert(&st->active, entity);
-+
-+	if (node->rb_left != NULL)
-+		node = node->rb_left;
-+	else if (node->rb_right != NULL)
-+		node = node->rb_right;
-+
-+	bfq_update_active_tree(node);
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	sd = entity->sched_data;
-+	bfqg = container_of(sd, struct bfq_group, sched_data);
-+	BUG_ON(!bfqg);
-+	bfqd = (struct bfq_data *)bfqg->bfqd;
-+#endif
-+	if (bfqq != NULL)
-+		list_add(&bfqq->bfqq_list, &bfqq->bfqd->active_list);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	else { /* bfq_group */
-+		BUG_ON(!bfqd);
-+		bfq_weights_tree_add(bfqd, entity, &bfqd->group_weights_tree);
-+	}
-+	if (bfqg != bfqd->root_group) {
-+		BUG_ON(!bfqg);
-+		BUG_ON(!bfqd);
-+		bfqg->active_entities++;
-+		if (bfqg->active_entities == 2)
-+			bfqd->active_numerous_groups++;
-+	}
-+#endif
-+}
-+
-+/**
-+ * bfq_ioprio_to_weight - calc a weight from an ioprio.
-+ * @ioprio: the ioprio value to convert.
-+ */
-+static inline unsigned short bfq_ioprio_to_weight(int ioprio)
-+{
-+	BUG_ON(ioprio < 0 || ioprio >= IOPRIO_BE_NR);
-+	return IOPRIO_BE_NR - ioprio;
-+}
-+
-+/**
-+ * bfq_weight_to_ioprio - calc an ioprio from a weight.
-+ * @weight: the weight value to convert.
-+ *
-+ * To preserve as mush as possible the old only-ioprio user interface,
-+ * 0 is used as an escape ioprio value for weights (numerically) equal or
-+ * larger than IOPRIO_BE_NR
-+ */
-+static inline unsigned short bfq_weight_to_ioprio(int weight)
-+{
-+	BUG_ON(weight < BFQ_MIN_WEIGHT || weight > BFQ_MAX_WEIGHT);
-+	return IOPRIO_BE_NR - weight < 0 ? 0 : IOPRIO_BE_NR - weight;
-+}
-+
-+static inline void bfq_get_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	if (bfqq != NULL) {
-+		atomic_inc(&bfqq->ref);
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "get_entity: %p %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+	}
-+}
-+
-+/**
-+ * bfq_find_deepest - find the deepest node that an extraction can modify.
-+ * @node: the node being removed.
-+ *
-+ * Do the first step of an extraction in an rb tree, looking for the
-+ * node that will replace @node, and returning the deepest node that
-+ * the following modifications to the tree can touch.  If @node is the
-+ * last node in the tree return %NULL.
-+ */
-+static struct rb_node *bfq_find_deepest(struct rb_node *node)
-+{
-+	struct rb_node *deepest;
-+
-+	if (node->rb_right == NULL && node->rb_left == NULL)
-+		deepest = rb_parent(node);
-+	else if (node->rb_right == NULL)
-+		deepest = node->rb_left;
-+	else if (node->rb_left == NULL)
-+		deepest = node->rb_right;
-+	else {
-+		deepest = rb_next(node);
-+		if (deepest->rb_right != NULL)
-+			deepest = deepest->rb_right;
-+		else if (rb_parent(deepest) != node)
-+			deepest = rb_parent(deepest);
-+	}
-+
-+	return deepest;
-+}
-+
-+/**
-+ * bfq_active_extract - remove an entity from the active tree.
-+ * @st: the service_tree containing the tree.
-+ * @entity: the entity being removed.
-+ */
-+static void bfq_active_extract(struct bfq_service_tree *st,
-+			       struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *node;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	struct bfq_sched_data *sd = NULL;
-+	struct bfq_group *bfqg = NULL;
-+	struct bfq_data *bfqd = NULL;
-+#endif
-+
-+	node = bfq_find_deepest(&entity->rb_node);
-+	bfq_extract(&st->active, entity);
-+
-+	if (node != NULL)
-+		bfq_update_active_tree(node);
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	sd = entity->sched_data;
-+	bfqg = container_of(sd, struct bfq_group, sched_data);
-+	BUG_ON(!bfqg);
-+	bfqd = (struct bfq_data *)bfqg->bfqd;
-+#endif
-+	if (bfqq != NULL)
-+		list_del(&bfqq->bfqq_list);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	else { /* bfq_group */
-+		BUG_ON(!bfqd);
-+		bfq_weights_tree_remove(bfqd, entity,
-+					&bfqd->group_weights_tree);
-+	}
-+	if (bfqg != bfqd->root_group) {
-+		BUG_ON(!bfqg);
-+		BUG_ON(!bfqd);
-+		BUG_ON(!bfqg->active_entities);
-+		bfqg->active_entities--;
-+		if (bfqg->active_entities == 1) {
-+			BUG_ON(!bfqd->active_numerous_groups);
-+			bfqd->active_numerous_groups--;
-+		}
-+	}
-+#endif
-+}
-+
-+/**
-+ * bfq_idle_insert - insert an entity into the idle tree.
-+ * @st: the service tree containing the tree.
-+ * @entity: the entity to insert.
-+ */
-+static void bfq_idle_insert(struct bfq_service_tree *st,
-+			    struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct bfq_entity *first_idle = st->first_idle;
-+	struct bfq_entity *last_idle = st->last_idle;
-+
-+	if (first_idle == NULL || bfq_gt(first_idle->finish, entity->finish))
-+		st->first_idle = entity;
-+	if (last_idle == NULL || bfq_gt(entity->finish, last_idle->finish))
-+		st->last_idle = entity;
-+
-+	bfq_insert(&st->idle, entity);
-+
-+	if (bfqq != NULL)
-+		list_add(&bfqq->bfqq_list, &bfqq->bfqd->idle_list);
-+}
-+
-+/**
-+ * bfq_forget_entity - remove an entity from the wfq trees.
-+ * @st: the service tree.
-+ * @entity: the entity being removed.
-+ *
-+ * Update the device status and forget everything about @entity, putting
-+ * the device reference to it, if it is a queue.  Entities belonging to
-+ * groups are not refcounted.
-+ */
-+static void bfq_forget_entity(struct bfq_service_tree *st,
-+			      struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(!entity->on_st);
-+
-+	entity->on_st = 0;
-+	st->wsum -= entity->weight;
-+	if (bfqq != NULL) {
-+		sd = entity->sched_data;
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "forget_entity: %p %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+	}
-+}
-+
-+/**
-+ * bfq_put_idle_entity - release the idle tree ref of an entity.
-+ * @st: service tree for the entity.
-+ * @entity: the entity being released.
-+ */
-+static void bfq_put_idle_entity(struct bfq_service_tree *st,
-+				struct bfq_entity *entity)
-+{
-+	bfq_idle_extract(st, entity);
-+	bfq_forget_entity(st, entity);
-+}
-+
-+/**
-+ * bfq_forget_idle - update the idle tree if necessary.
-+ * @st: the service tree to act upon.
-+ *
-+ * To preserve the global O(log N) complexity we only remove one entry here;
-+ * as the idle tree will not grow indefinitely this can be done safely.
-+ */
-+static void bfq_forget_idle(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *first_idle = st->first_idle;
-+	struct bfq_entity *last_idle = st->last_idle;
-+
-+	if (RB_EMPTY_ROOT(&st->active) && last_idle != NULL &&
-+	    !bfq_gt(last_idle->finish, st->vtime)) {
-+		/*
-+		 * Forget the whole idle tree, increasing the vtime past
-+		 * the last finish time of idle entities.
-+		 */
-+		st->vtime = last_idle->finish;
-+	}
-+
-+	if (first_idle != NULL && !bfq_gt(first_idle->finish, st->vtime))
-+		bfq_put_idle_entity(st, first_idle);
-+}
-+
-+static struct bfq_service_tree *
-+__bfq_entity_update_weight_prio(struct bfq_service_tree *old_st,
-+			 struct bfq_entity *entity)
-+{
-+	struct bfq_service_tree *new_st = old_st;
-+
-+	if (entity->ioprio_changed) {
-+		struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+		unsigned short prev_weight, new_weight;
-+		struct bfq_data *bfqd = NULL;
-+		struct rb_root *root;
-+#ifdef CONFIG_CGROUP_BFQIO
-+		struct bfq_sched_data *sd;
-+		struct bfq_group *bfqg;
-+#endif
-+
-+		if (bfqq != NULL)
-+			bfqd = bfqq->bfqd;
-+#ifdef CONFIG_CGROUP_BFQIO
-+		else {
-+			sd = entity->my_sched_data;
-+			bfqg = container_of(sd, struct bfq_group, sched_data);
-+			BUG_ON(!bfqg);
-+			bfqd = (struct bfq_data *)bfqg->bfqd;
-+			BUG_ON(!bfqd);
-+		}
-+#endif
-+
-+		BUG_ON(old_st->wsum < entity->weight);
-+		old_st->wsum -= entity->weight;
-+
-+		if (entity->new_weight != entity->orig_weight) {
-+			if (entity->new_weight < BFQ_MIN_WEIGHT ||
-+			    entity->new_weight > BFQ_MAX_WEIGHT) {
-+				printk(KERN_CRIT "update_weight_prio: "
-+						 "new_weight %d\n",
-+					entity->new_weight);
-+				BUG();
-+			}
-+			entity->orig_weight = entity->new_weight;
-+			entity->ioprio =
-+				bfq_weight_to_ioprio(entity->orig_weight);
-+		} else if (entity->new_ioprio != entity->ioprio) {
-+			entity->ioprio = entity->new_ioprio;
-+			entity->orig_weight =
-+					bfq_ioprio_to_weight(entity->ioprio);
-+		} else
-+			entity->new_weight = entity->orig_weight =
-+				bfq_ioprio_to_weight(entity->ioprio);
-+
-+		entity->ioprio_class = entity->new_ioprio_class;
-+		entity->ioprio_changed = 0;
-+
-+		/*
-+		 * NOTE: here we may be changing the weight too early,
-+		 * this will cause unfairness.  The correct approach
-+		 * would have required additional complexity to defer
-+		 * weight changes to the proper time instants (i.e.,
-+		 * when entity->finish <= old_st->vtime).
-+		 */
-+		new_st = bfq_entity_service_tree(entity);
-+
-+		prev_weight = entity->weight;
-+		new_weight = entity->orig_weight *
-+			     (bfqq != NULL ? bfqq->wr_coeff : 1);
-+		/*
-+		 * If the weight of the entity changes, remove the entity
-+		 * from its old weight counter (if there is a counter
-+		 * associated with the entity), and add it to the counter
-+		 * associated with its new weight.
-+		 */
-+		if (prev_weight != new_weight) {
-+			root = bfqq ? &bfqd->queue_weights_tree :
-+				      &bfqd->group_weights_tree;
-+			bfq_weights_tree_remove(bfqd, entity, root);
-+		}
-+		entity->weight = new_weight;
-+		/*
-+		 * Add the entity to its weights tree only if it is
-+		 * not associated with a weight-raised queue.
-+		 */
-+		if (prev_weight != new_weight &&
-+		    (bfqq ? bfqq->wr_coeff == 1 : 1))
-+			/* If we get here, root has been initialized. */
-+			bfq_weights_tree_add(bfqd, entity, root);
-+
-+		new_st->wsum += entity->weight;
-+
-+		if (new_st != old_st)
-+			entity->start = new_st->vtime;
-+	}
-+
-+	return new_st;
-+}
-+
-+/**
-+ * bfq_bfqq_served - update the scheduler status after selection for
-+ *                   service.
-+ * @bfqq: the queue being served.
-+ * @served: bytes to transfer.
-+ *
-+ * NOTE: this can be optimized, as the timestamps of upper level entities
-+ * are synchronized every time a new bfqq is selected for service.  By now,
-+ * we keep it to better check consistency.
-+ */
-+static void bfq_bfqq_served(struct bfq_queue *bfqq, unsigned long served)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_service_tree *st;
-+
-+	for_each_entity(entity) {
-+		st = bfq_entity_service_tree(entity);
-+
-+		entity->service += served;
-+		BUG_ON(entity->service > entity->budget);
-+		BUG_ON(st->wsum == 0);
-+
-+		st->vtime += bfq_delta(served, st->wsum);
-+		bfq_forget_idle(st);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "bfqq_served %lu secs", served);
-+}
-+
-+/**
-+ * bfq_bfqq_charge_full_budget - set the service to the entity budget.
-+ * @bfqq: the queue that needs a service update.
-+ *
-+ * When it's not possible to be fair in the service domain, because
-+ * a queue is not consuming its budget fast enough (the meaning of
-+ * fast depends on the timeout parameter), we charge it a full
-+ * budget.  In this way we should obtain a sort of time-domain
-+ * fairness among all the seeky/slow queues.
-+ */
-+static inline void bfq_bfqq_charge_full_budget(struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "charge_full_budget");
-+
-+	bfq_bfqq_served(bfqq, entity->budget - entity->service);
-+}
-+
-+/**
-+ * __bfq_activate_entity - activate an entity.
-+ * @entity: the entity being activated.
-+ *
-+ * Called whenever an entity is activated, i.e., it is not active and one
-+ * of its children receives a new request, or has to be reactivated due to
-+ * budget exhaustion.  It uses the current budget of the entity (and the
-+ * service received if @entity is active) of the queue to calculate its
-+ * timestamps.
-+ */
-+static void __bfq_activate_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+
-+	if (entity == sd->in_service_entity) {
-+		BUG_ON(entity->tree != NULL);
-+		/*
-+		 * If we are requeueing the current entity we have
-+		 * to take care of not charging to it service it has
-+		 * not received.
-+		 */
-+		bfq_calc_finish(entity, entity->service);
-+		entity->start = entity->finish;
-+		sd->in_service_entity = NULL;
-+	} else if (entity->tree == &st->active) {
-+		/*
-+		 * Requeueing an entity due to a change of some
-+		 * next_in_service entity below it.  We reuse the
-+		 * old start time.
-+		 */
-+		bfq_active_extract(st, entity);
-+	} else if (entity->tree == &st->idle) {
-+		/*
-+		 * Must be on the idle tree, bfq_idle_extract() will
-+		 * check for that.
-+		 */
-+		bfq_idle_extract(st, entity);
-+		entity->start = bfq_gt(st->vtime, entity->finish) ?
-+				       st->vtime : entity->finish;
-+	} else {
-+		/*
-+		 * The finish time of the entity may be invalid, and
-+		 * it is in the past for sure, otherwise the queue
-+		 * would have been on the idle tree.
-+		 */
-+		entity->start = st->vtime;
-+		st->wsum += entity->weight;
-+		bfq_get_entity(entity);
-+
-+		BUG_ON(entity->on_st);
-+		entity->on_st = 1;
-+	}
-+
-+	st = __bfq_entity_update_weight_prio(st, entity);
-+	bfq_calc_finish(entity, entity->budget);
-+	bfq_active_insert(st, entity);
-+}
-+
-+/**
-+ * bfq_activate_entity - activate an entity and its ancestors if necessary.
-+ * @entity: the entity to activate.
-+ *
-+ * Activate @entity and all the entities on the path from it to the root.
-+ */
-+static void bfq_activate_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sd;
-+
-+	for_each_entity(entity) {
-+		__bfq_activate_entity(entity);
-+
-+		sd = entity->sched_data;
-+		if (!bfq_update_next_in_service(sd))
-+			/*
-+			 * No need to propagate the activation to the
-+			 * upper entities, as they will be updated when
-+			 * the in-service entity is rescheduled.
-+			 */
-+			break;
-+	}
-+}
-+
-+/**
-+ * __bfq_deactivate_entity - deactivate an entity from its service tree.
-+ * @entity: the entity to deactivate.
-+ * @requeue: if false, the entity will not be put into the idle tree.
-+ *
-+ * Deactivate an entity, independently from its previous state.  If the
-+ * entity was not on a service tree just return, otherwise if it is on
-+ * any scheduler tree, extract it from that tree, and if necessary
-+ * and if the caller did not specify @requeue, put it on the idle tree.
-+ *
-+ * Return %1 if the caller should update the entity hierarchy, i.e.,
-+ * if the entity was in service or if it was the next_in_service for
-+ * its sched_data; return %0 otherwise.
-+ */
-+static int __bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
-+{
-+	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	int was_in_service = entity == sd->in_service_entity;
-+	int ret = 0;
-+
-+	if (!entity->on_st)
-+		return 0;
-+
-+	BUG_ON(was_in_service && entity->tree != NULL);
-+
-+	if (was_in_service) {
-+		bfq_calc_finish(entity, entity->service);
-+		sd->in_service_entity = NULL;
-+	} else if (entity->tree == &st->active)
-+		bfq_active_extract(st, entity);
-+	else if (entity->tree == &st->idle)
-+		bfq_idle_extract(st, entity);
-+	else if (entity->tree != NULL)
-+		BUG();
-+
-+	if (was_in_service || sd->next_in_service == entity)
-+		ret = bfq_update_next_in_service(sd);
-+
-+	if (!requeue || !bfq_gt(entity->finish, st->vtime))
-+		bfq_forget_entity(st, entity);
-+	else
-+		bfq_idle_insert(st, entity);
-+
-+	BUG_ON(sd->in_service_entity == entity);
-+	BUG_ON(sd->next_in_service == entity);
-+
-+	return ret;
-+}
-+
-+/**
-+ * bfq_deactivate_entity - deactivate an entity.
-+ * @entity: the entity to deactivate.
-+ * @requeue: true if the entity can be put on the idle tree
-+ */
-+static void bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
-+{
-+	struct bfq_sched_data *sd;
-+	struct bfq_entity *parent;
-+
-+	for_each_entity_safe(entity, parent) {
-+		sd = entity->sched_data;
-+
-+		if (!__bfq_deactivate_entity(entity, requeue))
-+			/*
-+			 * The parent entity is still backlogged, and
-+			 * we don't need to update it as it is still
-+			 * in service.
-+			 */
-+			break;
-+
-+		if (sd->next_in_service != NULL)
-+			/*
-+			 * The parent entity is still backlogged and
-+			 * the budgets on the path towards the root
-+			 * need to be updated.
-+			 */
-+			goto update;
-+
-+		/*
-+		 * If we reach there the parent is no more backlogged and
-+		 * we want to propagate the dequeue upwards.
-+		 */
-+		requeue = 1;
-+	}
-+
-+	return;
-+
-+update:
-+	entity = parent;
-+	for_each_entity(entity) {
-+		__bfq_activate_entity(entity);
-+
-+		sd = entity->sched_data;
-+		if (!bfq_update_next_in_service(sd))
-+			break;
-+	}
-+}
-+
-+/**
-+ * bfq_update_vtime - update vtime if necessary.
-+ * @st: the service tree to act upon.
-+ *
-+ * If necessary update the service tree vtime to have at least one
-+ * eligible entity, skipping to its start time.  Assumes that the
-+ * active tree of the device is not empty.
-+ *
-+ * NOTE: this hierarchical implementation updates vtimes quite often,
-+ * we may end up with reactivated processes getting timestamps after a
-+ * vtime skip done because we needed a ->first_active entity on some
-+ * intermediate node.
-+ */
-+static void bfq_update_vtime(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entry;
-+	struct rb_node *node = st->active.rb_node;
-+
-+	entry = rb_entry(node, struct bfq_entity, rb_node);
-+	if (bfq_gt(entry->min_start, st->vtime)) {
-+		st->vtime = entry->min_start;
-+		bfq_forget_idle(st);
-+	}
-+}
-+
-+/**
-+ * bfq_first_active_entity - find the eligible entity with
-+ *                           the smallest finish time
-+ * @st: the service tree to select from.
-+ *
-+ * This function searches the first schedulable entity, starting from the
-+ * root of the tree and going on the left every time on this side there is
-+ * a subtree with at least one eligible (start >= vtime) entity. The path on
-+ * the right is followed only if a) the left subtree contains no eligible
-+ * entities and b) no eligible entity has been found yet.
-+ */
-+static struct bfq_entity *bfq_first_active_entity(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entry, *first = NULL;
-+	struct rb_node *node = st->active.rb_node;
-+
-+	while (node != NULL) {
-+		entry = rb_entry(node, struct bfq_entity, rb_node);
-+left:
-+		if (!bfq_gt(entry->start, st->vtime))
-+			first = entry;
-+
-+		BUG_ON(bfq_gt(entry->min_start, st->vtime));
-+
-+		if (node->rb_left != NULL) {
-+			entry = rb_entry(node->rb_left,
-+					 struct bfq_entity, rb_node);
-+			if (!bfq_gt(entry->min_start, st->vtime)) {
-+				node = node->rb_left;
-+				goto left;
-+			}
-+		}
-+		if (first != NULL)
-+			break;
-+		node = node->rb_right;
-+	}
-+
-+	BUG_ON(first == NULL && !RB_EMPTY_ROOT(&st->active));
-+	return first;
-+}
-+
-+/**
-+ * __bfq_lookup_next_entity - return the first eligible entity in @st.
-+ * @st: the service tree.
-+ *
-+ * Update the virtual time in @st and return the first eligible entity
-+ * it contains.
-+ */
-+static struct bfq_entity *__bfq_lookup_next_entity(struct bfq_service_tree *st,
-+						   bool force)
-+{
-+	struct bfq_entity *entity, *new_next_in_service = NULL;
-+
-+	if (RB_EMPTY_ROOT(&st->active))
-+		return NULL;
-+
-+	bfq_update_vtime(st);
-+	entity = bfq_first_active_entity(st);
-+	BUG_ON(bfq_gt(entity->start, st->vtime));
-+
-+	/*
-+	 * If the chosen entity does not match with the sched_data's
-+	 * next_in_service and we are forcedly serving the IDLE priority
-+	 * class tree, bubble up budget update.
-+	 */
-+	if (unlikely(force && entity != entity->sched_data->next_in_service)) {
-+		new_next_in_service = entity;
-+		for_each_entity(new_next_in_service)
-+			bfq_update_budget(new_next_in_service);
-+	}
-+
-+	return entity;
-+}
-+
-+/**
-+ * bfq_lookup_next_entity - return the first eligible entity in @sd.
-+ * @sd: the sched_data.
-+ * @extract: if true the returned entity will be also extracted from @sd.
-+ *
-+ * NOTE: since we cache the next_in_service entity at each level of the
-+ * hierarchy, the complexity of the lookup can be decreased with
-+ * absolutely no effort just returning the cached next_in_service value;
-+ * we prefer to do full lookups to test the consistency of * the data
-+ * structures.
-+ */
-+static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
-+						 int extract,
-+						 struct bfq_data *bfqd)
-+{
-+	struct bfq_service_tree *st = sd->service_tree;
-+	struct bfq_entity *entity;
-+	int i = 0;
-+
-+	BUG_ON(sd->in_service_entity != NULL);
-+
-+	if (bfqd != NULL &&
-+	    jiffies - bfqd->bfq_class_idle_last_service > BFQ_CL_IDLE_TIMEOUT) {
-+		entity = __bfq_lookup_next_entity(st + BFQ_IOPRIO_CLASSES - 1,
-+						  true);
-+		if (entity != NULL) {
-+			i = BFQ_IOPRIO_CLASSES - 1;
-+			bfqd->bfq_class_idle_last_service = jiffies;
-+			sd->next_in_service = entity;
-+		}
-+	}
-+	for (; i < BFQ_IOPRIO_CLASSES; i++) {
-+		entity = __bfq_lookup_next_entity(st + i, false);
-+		if (entity != NULL) {
-+			if (extract) {
-+				bfq_check_next_in_service(sd, entity);
-+				bfq_active_extract(st + i, entity);
-+				sd->in_service_entity = entity;
-+				sd->next_in_service = NULL;
-+			}
-+			break;
-+		}
-+	}
-+
-+	return entity;
-+}
-+
-+/*
-+ * Get next queue for service.
-+ */
-+static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_entity *entity = NULL;
-+	struct bfq_sched_data *sd;
-+	struct bfq_queue *bfqq;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	if (bfqd->busy_queues == 0)
-+		return NULL;
-+
-+	sd = &bfqd->root_group->sched_data;
-+	for (; sd != NULL; sd = entity->my_sched_data) {
-+		entity = bfq_lookup_next_entity(sd, 1, bfqd);
-+		BUG_ON(entity == NULL);
-+		entity->service = 0;
-+	}
-+
-+	bfqq = bfq_entity_to_bfqq(entity);
-+	BUG_ON(bfqq == NULL);
-+
-+	return bfqq;
-+}
-+
-+/*
-+ * Forced extraction of the given queue.
-+ */
-+static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
-+				      struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity;
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	entity = &bfqq->entity;
-+	/*
-+	 * Bubble up extraction/update from the leaf to the root.
-+	*/
-+	for_each_entity(entity) {
-+		sd = entity->sched_data;
-+		bfq_update_budget(entity);
-+		bfq_update_vtime(bfq_entity_service_tree(entity));
-+		bfq_active_extract(bfq_entity_service_tree(entity), entity);
-+		sd->in_service_entity = entity;
-+		sd->next_in_service = NULL;
-+		entity->service = 0;
-+	}
-+
-+	return;
-+}
-+
-+static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
-+{
-+	if (bfqd->in_service_bic != NULL) {
-+		put_io_context(bfqd->in_service_bic->icq.ioc);
-+		bfqd->in_service_bic = NULL;
-+	}
-+
-+	bfqd->in_service_queue = NULL;
-+	del_timer(&bfqd->idle_slice_timer);
-+}
-+
-+static void bfq_deactivate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int requeue)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	if (bfqq == bfqd->in_service_queue)
-+		__bfq_bfqd_reset_in_service(bfqd);
-+
-+	bfq_deactivate_entity(entity, requeue);
-+}
-+
-+static void bfq_activate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	bfq_activate_entity(entity);
-+}
-+
-+/*
-+ * Called when the bfqq no longer has requests pending, remove it from
-+ * the service tree.
-+ */
-+static void bfq_del_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			      int requeue)
-+{
-+	BUG_ON(!bfq_bfqq_busy(bfqq));
-+	BUG_ON(!RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	bfq_log_bfqq(bfqd, bfqq, "del from busy");
-+
-+	bfq_clear_bfqq_busy(bfqq);
-+
-+	BUG_ON(bfqd->busy_queues == 0);
-+	bfqd->busy_queues--;
-+
-+	if (!bfqq->dispatched) {
-+		bfq_weights_tree_remove(bfqd, &bfqq->entity,
-+					&bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->busy_in_flight_queues);
-+			bfqd->busy_in_flight_queues--;
-+			if (bfq_bfqq_constantly_seeky(bfqq)) {
-+				BUG_ON(!bfqd->
-+					const_seeky_busy_in_flight_queues);
-+				bfqd->const_seeky_busy_in_flight_queues--;
-+			}
-+		}
-+	}
-+	if (bfqq->wr_coeff > 1)
-+		bfqd->wr_busy_queues--;
-+
-+	bfq_deactivate_bfqq(bfqd, bfqq, requeue);
-+}
-+
-+/*
-+ * Called when an inactive queue receives a new request.
-+ */
-+static void bfq_add_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfq_bfqq_busy(bfqq));
-+	BUG_ON(bfqq == bfqd->in_service_queue);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "add to busy");
-+
-+	bfq_activate_bfqq(bfqd, bfqq);
-+
-+	bfq_mark_bfqq_busy(bfqq);
-+	bfqd->busy_queues++;
-+
-+	if (!bfqq->dispatched) {
-+		if (bfqq->wr_coeff == 1)
-+			bfq_weights_tree_add(bfqd, &bfqq->entity,
-+					     &bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			bfqd->busy_in_flight_queues++;
-+			if (bfq_bfqq_constantly_seeky(bfqq))
-+				bfqd->const_seeky_busy_in_flight_queues++;
-+		}
-+	}
-+	if (bfqq->wr_coeff > 1)
-+		bfqd->wr_busy_queues++;
-+}
-diff --git a/block/bfq.h b/block/bfq.h
-new file mode 100644
-index 0000000..6b1a5f3
---- /dev/null
-+++ b/block/bfq.h
-@@ -0,0 +1,775 @@
-+/*
-+ * BFQ-v7r7 for 3.16.0: data structures and common functions prototypes.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+#ifndef _BFQ_H
-+#define _BFQ_H
-+
-+#include <linux/blktrace_api.h>
-+#include <linux/hrtimer.h>
-+#include <linux/ioprio.h>
-+#include <linux/rbtree.h>
-+
-+#define BFQ_IOPRIO_CLASSES	3
-+#define BFQ_CL_IDLE_TIMEOUT	(HZ/5)
-+
-+#define BFQ_MIN_WEIGHT	1
-+#define BFQ_MAX_WEIGHT	1000
-+
-+#define BFQ_DEFAULT_QUEUE_IOPRIO	4
-+
-+#define BFQ_DEFAULT_GRP_WEIGHT	10
-+#define BFQ_DEFAULT_GRP_IOPRIO	0
-+#define BFQ_DEFAULT_GRP_CLASS	IOPRIO_CLASS_BE
-+
-+struct bfq_entity;
-+
-+/**
-+ * struct bfq_service_tree - per ioprio_class service tree.
-+ * @active: tree for active entities (i.e., those backlogged).
-+ * @idle: tree for idle entities (i.e., those not backlogged, with V <= F_i).
-+ * @first_idle: idle entity with minimum F_i.
-+ * @last_idle: idle entity with maximum F_i.
-+ * @vtime: scheduler virtual time.
-+ * @wsum: scheduler weight sum; active and idle entities contribute to it.
-+ *
-+ * Each service tree represents a B-WF2Q+ scheduler on its own.  Each
-+ * ioprio_class has its own independent scheduler, and so its own
-+ * bfq_service_tree.  All the fields are protected by the queue lock
-+ * of the containing bfqd.
-+ */
-+struct bfq_service_tree {
-+	struct rb_root active;
-+	struct rb_root idle;
-+
-+	struct bfq_entity *first_idle;
-+	struct bfq_entity *last_idle;
-+
-+	u64 vtime;
-+	unsigned long wsum;
-+};
-+
-+/**
-+ * struct bfq_sched_data - multi-class scheduler.
-+ * @in_service_entity: entity in service.
-+ * @next_in_service: head-of-the-line entity in the scheduler.
-+ * @service_tree: array of service trees, one per ioprio_class.
-+ *
-+ * bfq_sched_data is the basic scheduler queue.  It supports three
-+ * ioprio_classes, and can be used either as a toplevel queue or as
-+ * an intermediate queue on a hierarchical setup.
-+ * @next_in_service points to the active entity of the sched_data
-+ * service trees that will be scheduled next.
-+ *
-+ * The supported ioprio_classes are the same as in CFQ, in descending
-+ * priority order, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE.
-+ * Requests from higher priority queues are served before all the
-+ * requests from lower priority queues; among requests of the same
-+ * queue requests are served according to B-WF2Q+.
-+ * All the fields are protected by the queue lock of the containing bfqd.
-+ */
-+struct bfq_sched_data {
-+	struct bfq_entity *in_service_entity;
-+	struct bfq_entity *next_in_service;
-+	struct bfq_service_tree service_tree[BFQ_IOPRIO_CLASSES];
-+};
-+
-+/**
-+ * struct bfq_weight_counter - counter of the number of all active entities
-+ *                             with a given weight.
-+ * @weight: weight of the entities that this counter refers to.
-+ * @num_active: number of active entities with this weight.
-+ * @weights_node: weights tree member (see bfq_data's @queue_weights_tree
-+ *                and @group_weights_tree).
-+ */
-+struct bfq_weight_counter {
-+	short int weight;
-+	unsigned int num_active;
-+	struct rb_node weights_node;
-+};
-+
-+/**
-+ * struct bfq_entity - schedulable entity.
-+ * @rb_node: service_tree member.
-+ * @weight_counter: pointer to the weight counter associated with this entity.
-+ * @on_st: flag, true if the entity is on a tree (either the active or
-+ *         the idle one of its service_tree).
-+ * @finish: B-WF2Q+ finish timestamp (aka F_i).
-+ * @start: B-WF2Q+ start timestamp (aka S_i).
-+ * @tree: tree the entity is enqueued into; %NULL if not on a tree.
-+ * @min_start: minimum start time of the (active) subtree rooted at
-+ *             this entity; used for O(log N) lookups into active trees.
-+ * @service: service received during the last round of service.
-+ * @budget: budget used to calculate F_i; F_i = S_i + @budget / @weight.
-+ * @weight: weight of the queue
-+ * @parent: parent entity, for hierarchical scheduling.
-+ * @my_sched_data: for non-leaf nodes in the cgroup hierarchy, the
-+ *                 associated scheduler queue, %NULL on leaf nodes.
-+ * @sched_data: the scheduler queue this entity belongs to.
-+ * @ioprio: the ioprio in use.
-+ * @new_weight: when a weight change is requested, the new weight value.
-+ * @orig_weight: original weight, used to implement weight boosting
-+ * @new_ioprio: when an ioprio change is requested, the new ioprio value.
-+ * @ioprio_class: the ioprio_class in use.
-+ * @new_ioprio_class: when an ioprio_class change is requested, the new
-+ *                    ioprio_class value.
-+ * @ioprio_changed: flag, true when the user requested a weight, ioprio or
-+ *                  ioprio_class change.
-+ *
-+ * A bfq_entity is used to represent either a bfq_queue (leaf node in the
-+ * cgroup hierarchy) or a bfq_group into the upper level scheduler.  Each
-+ * entity belongs to the sched_data of the parent group in the cgroup
-+ * hierarchy.  Non-leaf entities have also their own sched_data, stored
-+ * in @my_sched_data.
-+ *
-+ * Each entity stores independently its priority values; this would
-+ * allow different weights on different devices, but this
-+ * functionality is not exported to userspace by now.  Priorities and
-+ * weights are updated lazily, first storing the new values into the
-+ * new_* fields, then setting the @ioprio_changed flag.  As soon as
-+ * there is a transition in the entity state that allows the priority
-+ * update to take place the effective and the requested priority
-+ * values are synchronized.
-+ *
-+ * Unless cgroups are used, the weight value is calculated from the
-+ * ioprio to export the same interface as CFQ.  When dealing with
-+ * ``well-behaved'' queues (i.e., queues that do not spend too much
-+ * time to consume their budget and have true sequential behavior, and
-+ * when there are no external factors breaking anticipation) the
-+ * relative weights at each level of the cgroups hierarchy should be
-+ * guaranteed.  All the fields are protected by the queue lock of the
-+ * containing bfqd.
-+ */
-+struct bfq_entity {
-+	struct rb_node rb_node;
-+	struct bfq_weight_counter *weight_counter;
-+
-+	int on_st;
-+
-+	u64 finish;
-+	u64 start;
-+
-+	struct rb_root *tree;
-+
-+	u64 min_start;
-+
-+	unsigned long service, budget;
-+	unsigned short weight, new_weight;
-+	unsigned short orig_weight;
-+
-+	struct bfq_entity *parent;
-+
-+	struct bfq_sched_data *my_sched_data;
-+	struct bfq_sched_data *sched_data;
-+
-+	unsigned short ioprio, new_ioprio;
-+	unsigned short ioprio_class, new_ioprio_class;
-+
-+	int ioprio_changed;
-+};
-+
-+struct bfq_group;
-+
-+/**
-+ * struct bfq_queue - leaf schedulable entity.
-+ * @ref: reference counter.
-+ * @bfqd: parent bfq_data.
-+ * @new_bfqq: shared bfq_queue if queue is cooperating with
-+ *           one or more other queues.
-+ * @pos_node: request-position tree member (see bfq_data's @rq_pos_tree).
-+ * @pos_root: request-position tree root (see bfq_data's @rq_pos_tree).
-+ * @sort_list: sorted list of pending requests.
-+ * @next_rq: if fifo isn't expired, next request to serve.
-+ * @queued: nr of requests queued in @sort_list.
-+ * @allocated: currently allocated requests.
-+ * @meta_pending: pending metadata requests.
-+ * @fifo: fifo list of requests in sort_list.
-+ * @entity: entity representing this queue in the scheduler.
-+ * @max_budget: maximum budget allowed from the feedback mechanism.
-+ * @budget_timeout: budget expiration (in jiffies).
-+ * @dispatched: number of requests on the dispatch list or inside driver.
-+ * @flags: status flags.
-+ * @bfqq_list: node for active/idle bfqq list inside our bfqd.
-+ * @burst_list_node: node for the device's burst list.
-+ * @seek_samples: number of seeks sampled
-+ * @seek_total: sum of the distances of the seeks sampled
-+ * @seek_mean: mean seek distance
-+ * @last_request_pos: position of the last request enqueued
-+ * @requests_within_timer: number of consecutive pairs of request completion
-+ *                         and arrival, such that the queue becomes idle
-+ *                         after the completion, but the next request arrives
-+ *                         within an idle time slice; used only if the queue's
-+ *                         IO_bound has been cleared.
-+ * @pid: pid of the process owning the queue, used for logging purposes.
-+ * @last_wr_start_finish: start time of the current weight-raising period if
-+ *                        the @bfq-queue is being weight-raised, otherwise
-+ *                        finish time of the last weight-raising period
-+ * @wr_cur_max_time: current max raising time for this queue
-+ * @soft_rt_next_start: minimum time instant such that, only if a new
-+ *                      request is enqueued after this time instant in an
-+ *                      idle @bfq_queue with no outstanding requests, then
-+ *                      the task associated with the queue it is deemed as
-+ *                      soft real-time (see the comments to the function
-+ *                      bfq_bfqq_softrt_next_start()).
-+ * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-+ *                      idle to backlogged
-+ * @service_from_backlogged: cumulative service received from the @bfq_queue
-+ *                           since the last transition from idle to
-+ *                           backlogged
-+ *
-+ * A bfq_queue is a leaf request queue; it can be associated with an io_context
-+ * or more, if it is async or shared between cooperating processes. @cgroup
-+ * holds a reference to the cgroup, to be sure that it does not disappear while
-+ * a bfqq still references it (mostly to avoid races between request issuing and
-+ * task migration followed by cgroup destruction).
-+ * All the fields are protected by the queue lock of the containing bfqd.
-+ */
-+struct bfq_queue {
-+	atomic_t ref;
-+	struct bfq_data *bfqd;
-+
-+	/* fields for cooperating queues handling */
-+	struct bfq_queue *new_bfqq;
-+	struct rb_node pos_node;
-+	struct rb_root *pos_root;
-+
-+	struct rb_root sort_list;
-+	struct request *next_rq;
-+	int queued[2];
-+	int allocated[2];
-+	int meta_pending;
-+	struct list_head fifo;
-+
-+	struct bfq_entity entity;
-+
-+	unsigned long max_budget;
-+	unsigned long budget_timeout;
-+
-+	int dispatched;
-+
-+	unsigned int flags;
-+
-+	struct list_head bfqq_list;
-+
-+	struct hlist_node burst_list_node;
-+
-+	unsigned int seek_samples;
-+	u64 seek_total;
-+	sector_t seek_mean;
-+	sector_t last_request_pos;
-+
-+	unsigned int requests_within_timer;
-+
-+	pid_t pid;
-+
-+	/* weight-raising fields */
-+	unsigned long wr_cur_max_time;
-+	unsigned long soft_rt_next_start;
-+	unsigned long last_wr_start_finish;
-+	unsigned int wr_coeff;
-+	unsigned long last_idle_bklogged;
-+	unsigned long service_from_backlogged;
-+};
-+
-+/**
-+ * struct bfq_ttime - per process thinktime stats.
-+ * @ttime_total: total process thinktime
-+ * @ttime_samples: number of thinktime samples
-+ * @ttime_mean: average process thinktime
-+ */
-+struct bfq_ttime {
-+	unsigned long last_end_request;
-+
-+	unsigned long ttime_total;
-+	unsigned long ttime_samples;
-+	unsigned long ttime_mean;
-+};
-+
-+/**
-+ * struct bfq_io_cq - per (request_queue, io_context) structure.
-+ * @icq: associated io_cq structure
-+ * @bfqq: array of two process queues, the sync and the async
-+ * @ttime: associated @bfq_ttime struct
-+ */
-+struct bfq_io_cq {
-+	struct io_cq icq; /* must be the first member */
-+	struct bfq_queue *bfqq[2];
-+	struct bfq_ttime ttime;
-+	int ioprio;
-+};
-+
-+enum bfq_device_speed {
-+	BFQ_BFQD_FAST,
-+	BFQ_BFQD_SLOW,
-+};
-+
-+/**
-+ * struct bfq_data - per device data structure.
-+ * @queue: request queue for the managed device.
-+ * @root_group: root bfq_group for the device.
-+ * @rq_pos_tree: rbtree sorted by next_request position, used when
-+ *               determining if two or more queues have interleaving
-+ *               requests (see bfq_close_cooperator()).
-+ * @active_numerous_groups: number of bfq_groups containing more than one
-+ *                          active @bfq_entity.
-+ * @queue_weights_tree: rbtree of weight counters of @bfq_queues, sorted by
-+ *                      weight. Used to keep track of whether all @bfq_queues
-+ *                     have the same weight. The tree contains one counter
-+ *                     for each distinct weight associated to some active
-+ *                     and not weight-raised @bfq_queue (see the comments to
-+ *                      the functions bfq_weights_tree_[add|remove] for
-+ *                     further details).
-+ * @group_weights_tree: rbtree of non-queue @bfq_entity weight counters, sorted
-+ *                      by weight. Used to keep track of whether all
-+ *                     @bfq_groups have the same weight. The tree contains
-+ *                     one counter for each distinct weight associated to
-+ *                     some active @bfq_group (see the comments to the
-+ *                     functions bfq_weights_tree_[add|remove] for further
-+ *                     details).
-+ * @busy_queues: number of bfq_queues containing requests (including the
-+ *		 queue in service, even if it is idling).
-+ * @busy_in_flight_queues: number of @bfq_queues containing pending or
-+ *                         in-flight requests, plus the @bfq_queue in
-+ *                         service, even if idle but waiting for the
-+ *                         possible arrival of its next sync request. This
-+ *                         field is updated only if the device is rotational,
-+ *                         but used only if the device is also NCQ-capable.
-+ *                         The reason why the field is updated also for non-
-+ *                         NCQ-capable rotational devices is related to the
-+ *                         fact that the value of @hw_tag may be set also
-+ *                         later than when busy_in_flight_queues may need to
-+ *                         be incremented for the first time(s). Taking also
-+ *                         this possibility into account, to avoid unbalanced
-+ *                         increments/decrements, would imply more overhead
-+ *                         than just updating busy_in_flight_queues
-+ *                         regardless of the value of @hw_tag.
-+ * @const_seeky_busy_in_flight_queues: number of constantly-seeky @bfq_queues
-+ *                                     (that is, seeky queues that expired
-+ *                                     for budget timeout at least once)
-+ *                                     containing pending or in-flight
-+ *                                     requests, including the in-service
-+ *                                     @bfq_queue if constantly seeky. This
-+ *                                     field is updated only if the device
-+ *                                     is rotational, but used only if the
-+ *                                     device is also NCQ-capable (see the
-+ *                                     comments to @busy_in_flight_queues).
-+ * @wr_busy_queues: number of weight-raised busy @bfq_queues.
-+ * @queued: number of queued requests.
-+ * @rq_in_driver: number of requests dispatched and waiting for completion.
-+ * @sync_flight: number of sync requests in the driver.
-+ * @max_rq_in_driver: max number of reqs in driver in the last
-+ *                    @hw_tag_samples completed requests.
-+ * @hw_tag_samples: nr of samples used to calculate hw_tag.
-+ * @hw_tag: flag set to one if the driver is showing a queueing behavior.
-+ * @budgets_assigned: number of budgets assigned.
-+ * @idle_slice_timer: timer set when idling for the next sequential request
-+ *                    from the queue in service.
-+ * @unplug_work: delayed work to restart dispatching on the request queue.
-+ * @in_service_queue: bfq_queue in service.
-+ * @in_service_bic: bfq_io_cq (bic) associated with the @in_service_queue.
-+ * @last_position: on-disk position of the last served request.
-+ * @last_budget_start: beginning of the last budget.
-+ * @last_idling_start: beginning of the last idle slice.
-+ * @peak_rate: peak transfer rate observed for a budget.
-+ * @peak_rate_samples: number of samples used to calculate @peak_rate.
-+ * @bfq_max_budget: maximum budget allotted to a bfq_queue before
-+ *                  rescheduling.
-+ * @group_list: list of all the bfq_groups active on the device.
-+ * @active_list: list of all the bfq_queues active on the device.
-+ * @idle_list: list of all the bfq_queues idle on the device.
-+ * @bfq_quantum: max number of requests dispatched per dispatch round.
-+ * @bfq_fifo_expire: timeout for async/sync requests; when it expires
-+ *                   requests are served in fifo order.
-+ * @bfq_back_penalty: weight of backward seeks wrt forward ones.
-+ * @bfq_back_max: maximum allowed backward seek.
-+ * @bfq_slice_idle: maximum idling time.
-+ * @bfq_user_max_budget: user-configured max budget value
-+ *                       (0 for auto-tuning).
-+ * @bfq_max_budget_async_rq: maximum budget (in nr of requests) allotted to
-+ *                           async queues.
-+ * @bfq_timeout: timeout for bfq_queues to consume their budget; used to
-+ *               to prevent seeky queues to impose long latencies to well
-+ *               behaved ones (this also implies that seeky queues cannot
-+ *               receive guarantees in the service domain; after a timeout
-+ *               they are charged for the whole allocated budget, to try
-+ *               to preserve a behavior reasonably fair among them, but
-+ *               without service-domain guarantees).
-+ * @bfq_coop_thresh: number of queue merges after which a @bfq_queue is
-+ *                   no more granted any weight-raising.
-+ * @bfq_failed_cooperations: number of consecutive failed cooperation
-+ *                           chances after which weight-raising is restored
-+ *                           to a queue subject to more than bfq_coop_thresh
-+ *                           queue merges.
-+ * @bfq_requests_within_timer: number of consecutive requests that must be
-+ *                             issued within the idle time slice to set
-+ *                             again idling to a queue which was marked as
-+ *                             non-I/O-bound (see the definition of the
-+ *                             IO_bound flag for further details).
-+ * @last_ins_in_burst: last time at which a queue entered the current
-+ *                     burst of queues being activated shortly after
-+ *                     each other; for more details about this and the
-+ *                     following parameters related to a burst of
-+ *                     activations, see the comments to the function
-+ *                     @bfq_handle_burst.
-+ * @bfq_burst_interval: reference time interval used to decide whether a
-+ *                      queue has been activated shortly after
-+ *                      @last_ins_in_burst.
-+ * @burst_size: number of queues in the current burst of queue activations.
-+ * @bfq_large_burst_thresh: maximum burst size above which the current
-+ * 			    queue-activation burst is deemed as 'large'.
-+ * @large_burst: true if a large queue-activation burst is in progress.
-+ * @burst_list: head of the burst list (as for the above fields, more details
-+ * 		in the comments to the function bfq_handle_burst).
-+ * @low_latency: if set to true, low-latency heuristics are enabled.
-+ * @bfq_wr_coeff: maximum factor by which the weight of a weight-raised
-+ *                queue is multiplied.
-+ * @bfq_wr_max_time: maximum duration of a weight-raising period (jiffies).
-+ * @bfq_wr_rt_max_time: maximum duration for soft real-time processes.
-+ * @bfq_wr_min_idle_time: minimum idle period after which weight-raising
-+ *			  may be reactivated for a queue (in jiffies).
-+ * @bfq_wr_min_inter_arr_async: minimum period between request arrivals
-+ *				after which weight-raising may be
-+ *				reactivated for an already busy queue
-+ *				(in jiffies).
-+ * @bfq_wr_max_softrt_rate: max service-rate for a soft real-time queue,
-+ *			    sectors per seconds.
-+ * @RT_prod: cached value of the product R*T used for computing the maximum
-+ *	     duration of the weight raising automatically.
-+ * @device_speed: device-speed class for the low-latency heuristic.
-+ * @oom_bfqq: fallback dummy bfqq for extreme OOM conditions.
-+ *
-+ * All the fields are protected by the @queue lock.
-+ */
-+struct bfq_data {
-+	struct request_queue *queue;
-+
-+	struct bfq_group *root_group;
-+	struct rb_root rq_pos_tree;
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	int active_numerous_groups;
-+#endif
-+
-+	struct rb_root queue_weights_tree;
-+	struct rb_root group_weights_tree;
-+
-+	int busy_queues;
-+	int busy_in_flight_queues;
-+	int const_seeky_busy_in_flight_queues;
-+	int wr_busy_queues;
-+	int queued;
-+	int rq_in_driver;
-+	int sync_flight;
-+
-+	int max_rq_in_driver;
-+	int hw_tag_samples;
-+	int hw_tag;
-+
-+	int budgets_assigned;
-+
-+	struct timer_list idle_slice_timer;
-+	struct work_struct unplug_work;
-+
-+	struct bfq_queue *in_service_queue;
-+	struct bfq_io_cq *in_service_bic;
-+
-+	sector_t last_position;
-+
-+	ktime_t last_budget_start;
-+	ktime_t last_idling_start;
-+	int peak_rate_samples;
-+	u64 peak_rate;
-+	unsigned long bfq_max_budget;
-+
-+	struct hlist_head group_list;
-+	struct list_head active_list;
-+	struct list_head idle_list;
-+
-+	unsigned int bfq_quantum;
-+	unsigned int bfq_fifo_expire[2];
-+	unsigned int bfq_back_penalty;
-+	unsigned int bfq_back_max;
-+	unsigned int bfq_slice_idle;
-+	u64 bfq_class_idle_last_service;
-+
-+	unsigned int bfq_user_max_budget;
-+	unsigned int bfq_max_budget_async_rq;
-+	unsigned int bfq_timeout[2];
-+
-+	unsigned int bfq_coop_thresh;
-+	unsigned int bfq_failed_cooperations;
-+	unsigned int bfq_requests_within_timer;
-+
-+	unsigned long last_ins_in_burst;
-+	unsigned long bfq_burst_interval;
-+	int burst_size;
-+	unsigned long bfq_large_burst_thresh;
-+	bool large_burst;
-+	struct hlist_head burst_list;
-+
-+	bool low_latency;
-+
-+	/* parameters of the low_latency heuristics */
-+	unsigned int bfq_wr_coeff;
-+	unsigned int bfq_wr_max_time;
-+	unsigned int bfq_wr_rt_max_time;
-+	unsigned int bfq_wr_min_idle_time;
-+	unsigned long bfq_wr_min_inter_arr_async;
-+	unsigned int bfq_wr_max_softrt_rate;
-+	u64 RT_prod;
-+	enum bfq_device_speed device_speed;
-+
-+	struct bfq_queue oom_bfqq;
-+};
-+
-+enum bfqq_state_flags {
-+	BFQ_BFQQ_FLAG_busy = 0,		/* has requests or is in service */
-+	BFQ_BFQQ_FLAG_wait_request,	/* waiting for a request */
-+	BFQ_BFQQ_FLAG_must_alloc,	/* must be allowed rq alloc */
-+	BFQ_BFQQ_FLAG_fifo_expire,	/* FIFO checked in this slice */
-+	BFQ_BFQQ_FLAG_idle_window,	/* slice idling enabled */
-+	BFQ_BFQQ_FLAG_prio_changed,	/* task priority has changed */
-+	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
-+	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
-+	BFQ_BFQQ_FLAG_IO_bound,         /*
-+					 * bfqq has timed-out at least once
-+					 * having consumed at most 2/10 of
-+					 * its budget
-+					 */
-+	BFQ_BFQQ_FLAG_in_large_burst,	/*
-+					 * bfqq activated in a large burst,
-+					 * see comments to bfq_handle_burst.
-+					 */
-+	BFQ_BFQQ_FLAG_constantly_seeky,	/*
-+					 * bfqq has proved to be slow and
-+					 * seeky until budget timeout
-+					 */
-+	BFQ_BFQQ_FLAG_softrt_update,    /*
-+					 * may need softrt-next-start
-+					 * update
-+					 */
-+	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+};
-+
-+#define BFQ_BFQQ_FNS(name)						\
-+static inline void bfq_mark_bfqq_##name(struct bfq_queue *bfqq)		\
-+{									\
-+	(bfqq)->flags |= (1 << BFQ_BFQQ_FLAG_##name);			\
-+}									\
-+static inline void bfq_clear_bfqq_##name(struct bfq_queue *bfqq)	\
-+{									\
-+	(bfqq)->flags &= ~(1 << BFQ_BFQQ_FLAG_##name);			\
-+}									\
-+static inline int bfq_bfqq_##name(const struct bfq_queue *bfqq)		\
-+{									\
-+	return ((bfqq)->flags & (1 << BFQ_BFQQ_FLAG_##name)) != 0;	\
-+}
-+
-+BFQ_BFQQ_FNS(busy);
-+BFQ_BFQQ_FNS(wait_request);
-+BFQ_BFQQ_FNS(must_alloc);
-+BFQ_BFQQ_FNS(fifo_expire);
-+BFQ_BFQQ_FNS(idle_window);
-+BFQ_BFQQ_FNS(prio_changed);
-+BFQ_BFQQ_FNS(sync);
-+BFQ_BFQQ_FNS(budget_new);
-+BFQ_BFQQ_FNS(IO_bound);
-+BFQ_BFQQ_FNS(in_large_burst);
-+BFQ_BFQQ_FNS(constantly_seeky);
-+BFQ_BFQQ_FNS(coop);
-+BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(softrt_update);
-+#undef BFQ_BFQQ_FNS
-+
-+/* Logging facilities. */
-+#define bfq_log_bfqq(bfqd, bfqq, fmt, args...) \
-+	blk_add_trace_msg((bfqd)->queue, "bfq%d " fmt, (bfqq)->pid, ##args)
-+
-+#define bfq_log(bfqd, fmt, args...) \
-+	blk_add_trace_msg((bfqd)->queue, "bfq " fmt, ##args)
-+
-+/* Expiration reasons. */
-+enum bfqq_expiration {
-+	BFQ_BFQQ_TOO_IDLE = 0,		/*
-+					 * queue has been idling for
-+					 * too long
-+					 */
-+	BFQ_BFQQ_BUDGET_TIMEOUT,	/* budget took too long to be used */
-+	BFQ_BFQQ_BUDGET_EXHAUSTED,	/* budget consumed */
-+	BFQ_BFQQ_NO_MORE_REQUESTS,	/* the queue has no more requests */
-+};
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+/**
-+ * struct bfq_group - per (device, cgroup) data structure.
-+ * @entity: schedulable entity to insert into the parent group sched_data.
-+ * @sched_data: own sched_data, to contain child entities (they may be
-+ *              both bfq_queues and bfq_groups).
-+ * @group_node: node to be inserted into the bfqio_cgroup->group_data
-+ *              list of the containing cgroup's bfqio_cgroup.
-+ * @bfqd_node: node to be inserted into the @bfqd->group_list list
-+ *             of the groups active on the same device; used for cleanup.
-+ * @bfqd: the bfq_data for the device this group acts upon.
-+ * @async_bfqq: array of async queues for all the tasks belonging to
-+ *              the group, one queue per ioprio value per ioprio_class,
-+ *              except for the idle class that has only one queue.
-+ * @async_idle_bfqq: async queue for the idle class (ioprio is ignored).
-+ * @my_entity: pointer to @entity, %NULL for the toplevel group; used
-+ *             to avoid too many special cases during group creation/
-+ *             migration.
-+ * @active_entities: number of active entities belonging to the group;
-+ *                   unused for the root group. Used to know whether there
-+ *                   are groups with more than one active @bfq_entity
-+ *                   (see the comments to the function
-+ *                   bfq_bfqq_must_not_expire()).
-+ *
-+ * Each (device, cgroup) pair has its own bfq_group, i.e., for each cgroup
-+ * there is a set of bfq_groups, each one collecting the lower-level
-+ * entities belonging to the group that are acting on the same device.
-+ *
-+ * Locking works as follows:
-+ *    o @group_node is protected by the bfqio_cgroup lock, and is accessed
-+ *      via RCU from its readers.
-+ *    o @bfqd is protected by the queue lock, RCU is used to access it
-+ *      from the readers.
-+ *    o All the other fields are protected by the @bfqd queue lock.
-+ */
-+struct bfq_group {
-+	struct bfq_entity entity;
-+	struct bfq_sched_data sched_data;
-+
-+	struct hlist_node group_node;
-+	struct hlist_node bfqd_node;
-+
-+	void *bfqd;
-+
-+	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
-+	struct bfq_queue *async_idle_bfqq;
-+
-+	struct bfq_entity *my_entity;
-+
-+	int active_entities;
-+};
-+
-+/**
-+ * struct bfqio_cgroup - bfq cgroup data structure.
-+ * @css: subsystem state for bfq in the containing cgroup.
-+ * @online: flag marked when the subsystem is inserted.
-+ * @weight: cgroup weight.
-+ * @ioprio: cgroup ioprio.
-+ * @ioprio_class: cgroup ioprio_class.
-+ * @lock: spinlock that protects @ioprio, @ioprio_class and @group_data.
-+ * @group_data: list containing the bfq_group belonging to this cgroup.
-+ *
-+ * @group_data is accessed using RCU, with @lock protecting the updates,
-+ * @ioprio and @ioprio_class are protected by @lock.
-+ */
-+struct bfqio_cgroup {
-+	struct cgroup_subsys_state css;
-+	bool online;
-+
-+	unsigned short weight, ioprio, ioprio_class;
-+
-+	spinlock_t lock;
-+	struct hlist_head group_data;
-+};
-+#else
-+struct bfq_group {
-+	struct bfq_sched_data sched_data;
-+
-+	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
-+	struct bfq_queue *async_idle_bfqq;
-+};
-+#endif
-+
-+static inline struct bfq_service_tree *
-+bfq_entity_service_tree(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sched_data = entity->sched_data;
-+	unsigned int idx = entity->ioprio_class - 1;
-+
-+	BUG_ON(idx >= BFQ_IOPRIO_CLASSES);
-+	BUG_ON(sched_data == NULL);
-+
-+	return sched_data->service_tree + idx;
-+}
-+
-+static inline struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic,
-+					    bool is_sync)
-+{
-+	return bic->bfqq[is_sync];
-+}
-+
-+static inline void bic_set_bfqq(struct bfq_io_cq *bic,
-+				struct bfq_queue *bfqq, bool is_sync)
-+{
-+	bic->bfqq[is_sync] = bfqq;
-+}
-+
-+static inline struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic)
-+{
-+	return bic->icq.q->elevator->elevator_data;
-+}
-+
-+/**
-+ * bfq_get_bfqd_locked - get a lock to a bfqd using a RCU protected pointer.
-+ * @ptr: a pointer to a bfqd.
-+ * @flags: storage for the flags to be saved.
-+ *
-+ * This function allows bfqg->bfqd to be protected by the
-+ * queue lock of the bfqd they reference; the pointer is dereferenced
-+ * under RCU, so the storage for bfqd is assured to be safe as long
-+ * as the RCU read side critical section does not end.  After the
-+ * bfqd->queue->queue_lock is taken the pointer is rechecked, to be
-+ * sure that no other writer accessed it.  If we raced with a writer,
-+ * the function returns NULL, with the queue unlocked, otherwise it
-+ * returns the dereferenced pointer, with the queue locked.
-+ */
-+static inline struct bfq_data *bfq_get_bfqd_locked(void **ptr,
-+						   unsigned long *flags)
-+{
-+	struct bfq_data *bfqd;
-+
-+	rcu_read_lock();
-+	bfqd = rcu_dereference(*(struct bfq_data **)ptr);
-+
-+	if (bfqd != NULL) {
-+		spin_lock_irqsave(bfqd->queue->queue_lock, *flags);
-+		if (*ptr == bfqd)
-+			goto out;
-+		spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
-+	}
-+
-+	bfqd = NULL;
-+out:
-+	rcu_read_unlock();
-+	return bfqd;
-+}
-+
-+static inline void bfq_put_bfqd_unlock(struct bfq_data *bfqd,
-+				       unsigned long *flags)
-+{
-+	spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
-+}
-+
-+static void bfq_changed_ioprio(struct bfq_io_cq *bic);
-+static void bfq_put_queue(struct bfq_queue *bfqq);
-+static void bfq_dispatch_insert(struct request_queue *q, struct request *rq);
-+static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
-+				       struct bfq_io_cq *bic, gfp_t gfp_mask);
-+static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
-+				    struct bfq_group *bfqg);
-+static void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg);
-+static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq);
-+
-+#endif /* _BFQ_H */
--- 
-2.1.3
-
diff --git a/helpers/DATA/linux-lts-utopic/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r7-for-3.16.0.patch b/helpers/DATA/linux-lts-utopic/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r7-for-3.16.0.patch
deleted file mode 100644
index d2574e1aa..000000000
--- a/helpers/DATA/linux-lts-utopic/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r7-for-3.16.0.patch
+++ /dev/null
@@ -1,1222 +0,0 @@
-From dd0995f30ef2622dd696e186ace6183b2ed3fc63 Mon Sep 17 00:00:00 2001
-From: Mauro Andreolini <mauro.andreolini@unimore.it>
-Date: Fri, 19 Dec 2014 18:21:22 +0100
-Subject: [PATCH 3/3] block, bfq: add Early Queue Merge (EQM) to BFQ-v7r7 for
- 3.16.0
-
-A set of processes may happen  to  perform interleaved reads, i.e.,requests
-whose union would give rise to a  sequential read  pattern.  There are two
-typical  cases: in the first  case,   processes  read  fixed-size chunks of
-data at a fixed distance from each other, while in the second case processes
-may read variable-size chunks at  variable distances. The latter case occurs
-for  example with  QEMU, which  splits the  I/O generated  by the  guest into
-multiple chunks,  and lets these chunks  be served by a  pool of cooperating
-processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
-available  process. CFQ  uses actual  queue merging  for the  first type of
-rocesses, whereas it  uses preemption to get a sequential  read pattern out
-of the read requests  performed by the second type of  processes. In the end
-it uses  two different  mechanisms to  achieve the  same goal: boosting the
-throughput with interleaved I/O.
-
-This patch introduces  Early Queue Merge (EQM), a unified mechanism to get a
-sequential  read pattern  with both  types of  processes. The  main idea is
-checking newly arrived requests against the next request of the active queue
-both in case of actual request insert and in case of request merge. By doing
-so, both the types of processes can be handled by just merging their queues.
-EQM is  then simpler and  more compact than the  pair of mechanisms used in
-CFQ.
-
-Finally, EQM  also preserves the  typical low-latency properties of BFQ, by
-properly restoring the weight-raising state of  a queue when it gets back to
-a non-merged state.
-
-Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
----
- block/bfq-iosched.c | 751 +++++++++++++++++++++++++++++++++++++---------------
- block/bfq-sched.c   |  28 --
- block/bfq.h         |  54 +++-
- 3 files changed, 581 insertions(+), 252 deletions(-)
-
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-index 97ee934..328f33c 100644
---- a/block/bfq-iosched.c
-+++ b/block/bfq-iosched.c
-@@ -571,6 +571,57 @@ static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
- 	return dur;
- }
- 
-+static inline unsigned
-+bfq_bfqq_cooperations(struct bfq_queue *bfqq)
-+{
-+	return bfqq->bic ? bfqq->bic->cooperations : 0;
-+}
-+
-+static inline void
-+bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	if (bic->saved_idle_window)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+	if (bic->saved_IO_bound)
-+		bfq_mark_bfqq_IO_bound(bfqq);
-+	else
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+	/* Assuming that the flag in_large_burst is already correctly set */
-+	if (bic->wr_time_left && bfqq->bfqd->low_latency &&
-+	    !bfq_bfqq_in_large_burst(bfqq) &&
-+	    bic->cooperations < bfqq->bfqd->bfq_coop_thresh) {
-+		/*
-+		 * Start a weight raising period with the duration given by
-+		 * the raising_time_left snapshot.
-+		 */
-+		if (bfq_bfqq_busy(bfqq))
-+			bfqq->bfqd->wr_busy_queues++;
-+		bfqq->wr_coeff = bfqq->bfqd->bfq_wr_coeff;
-+		bfqq->wr_cur_max_time = bic->wr_time_left;
-+		bfqq->last_wr_start_finish = jiffies;
-+		bfqq->entity.ioprio_changed = 1;
-+	}
-+	/*
-+	 * Clear wr_time_left to prevent bfq_bfqq_save_state() from
-+	 * getting confused about the queue's need of a weight-raising
-+	 * period.
-+	 */
-+	bic->wr_time_left = 0;
-+}
-+
-+/* Must be called with the queue_lock held. */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
- /* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
- static inline void bfq_reset_burst_list(struct bfq_data *bfqd,
- 					struct bfq_queue *bfqq)
-@@ -815,7 +866,7 @@ static void bfq_add_request(struct request *rq)
- 		bfq_rq_pos_tree_add(bfqd, bfqq);
- 
- 	if (!bfq_bfqq_busy(bfqq)) {
--		bool soft_rt,
-+		bool soft_rt, coop_or_in_burst,
- 		     idle_for_long_time = time_is_before_jiffies(
- 						bfqq->budget_timeout +
- 						bfqd->bfq_wr_min_idle_time);
-@@ -839,11 +890,12 @@ static void bfq_add_request(struct request *rq)
- 				bfqd->last_ins_in_burst = jiffies;
- 		}
- 
-+		coop_or_in_burst = bfq_bfqq_in_large_burst(bfqq) ||
-+			bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh;
- 		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
--			!bfq_bfqq_in_large_burst(bfqq) &&
-+			!coop_or_in_burst &&
- 			time_is_before_jiffies(bfqq->soft_rt_next_start);
--		interactive = !bfq_bfqq_in_large_burst(bfqq) &&
--			      idle_for_long_time;
-+		interactive = !coop_or_in_burst && idle_for_long_time;
- 		entity->budget = max_t(unsigned long, bfqq->max_budget,
- 				       bfq_serv_to_charge(next_rq, bfqq));
- 
-@@ -862,11 +914,20 @@ static void bfq_add_request(struct request *rq)
- 		if (!bfqd->low_latency)
- 			goto add_bfqq_busy;
- 
-+		if (bfq_bfqq_just_split(bfqq))
-+			goto set_ioprio_changed;
-+
- 		/*
--		 * If the queue is not being boosted and has been idle
--		 * for enough time, start a weight-raising period
-+		 * If the queue:
-+		 * - is not being boosted,
-+		 * - has been idle for enough time,
-+		 * - is not a sync queue or is linked to a bfq_io_cq (it is
-+		 *   shared "for its nature" or it is not shared and its
-+		 *   requests have not been redirected to a shared queue)
-+		 * start a weight-raising period.
- 		 */
--		if (old_wr_coeff == 1 && (interactive || soft_rt)) {
-+		if (old_wr_coeff == 1 && (interactive || soft_rt) &&
-+		    (!bfq_bfqq_sync(bfqq) || bfqq->bic != NULL)) {
- 			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
- 			if (interactive)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-@@ -880,7 +941,7 @@ static void bfq_add_request(struct request *rq)
- 		} else if (old_wr_coeff > 1) {
- 			if (interactive)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
--			else if (bfq_bfqq_in_large_burst(bfqq) ||
-+			else if (coop_or_in_burst ||
- 				 (bfqq->wr_cur_max_time ==
- 				  bfqd->bfq_wr_rt_max_time &&
- 				  !soft_rt)) {
-@@ -899,18 +960,18 @@ static void bfq_add_request(struct request *rq)
- 				/*
- 				 *
- 				 * The remaining weight-raising time is lower
--				 * than bfqd->bfq_wr_rt_max_time, which
--				 * means that the application is enjoying
--				 * weight raising either because deemed soft-
--				 * rt in the near past, or because deemed
--				 * interactive a long ago. In both cases,
--				 * resetting now the current remaining weight-
--				 * raising time for the application to the
--				 * weight-raising duration for soft rt
--				 * applications would not cause any latency
--				 * increase for the application (as the new
--				 * duration would be higher than the remaining
--				 * time).
-+				 * than bfqd->bfq_wr_rt_max_time, which means
-+				 * that the application is enjoying weight
-+				 * raising either because deemed soft-rt in
-+				 * the near past, or because deemed interactive
-+				 * a long ago.
-+				 * In both cases, resetting now the current
-+				 * remaining weight-raising time for the
-+				 * application to the weight-raising duration
-+				 * for soft rt applications would not cause any
-+				 * latency increase for the application (as the
-+				 * new duration would be higher than the
-+				 * remaining time).
- 				 *
- 				 * In addition, the application is now meeting
- 				 * the requirements for being deemed soft rt.
-@@ -945,6 +1006,7 @@ static void bfq_add_request(struct request *rq)
- 					bfqd->bfq_wr_rt_max_time;
- 			}
- 		}
-+set_ioprio_changed:
- 		if (old_wr_coeff != bfqq->wr_coeff)
- 			entity->ioprio_changed = 1;
- add_bfqq_busy:
-@@ -1156,90 +1218,35 @@ static void bfq_end_wr(struct bfq_data *bfqd)
- 	spin_unlock_irq(bfqd->queue->queue_lock);
- }
- 
--static int bfq_allow_merge(struct request_queue *q, struct request *rq,
--			   struct bio *bio)
-+static inline sector_t bfq_io_struct_pos(void *io_struct, bool request)
- {
--	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_io_cq *bic;
--	struct bfq_queue *bfqq;
--
--	/*
--	 * Disallow merge of a sync bio into an async request.
--	 */
--	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
--		return 0;
--
--	/*
--	 * Lookup the bfqq that this bio will be queued with. Allow
--	 * merge only if rq is queued there.
--	 * Queue lock is held here.
--	 */
--	bic = bfq_bic_lookup(bfqd, current->io_context);
--	if (bic == NULL)
--		return 0;
--
--	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
--	return bfqq == RQ_BFQQ(rq);
--}
--
--static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
--				       struct bfq_queue *bfqq)
--{
--	if (bfqq != NULL) {
--		bfq_mark_bfqq_must_alloc(bfqq);
--		bfq_mark_bfqq_budget_new(bfqq);
--		bfq_clear_bfqq_fifo_expire(bfqq);
--
--		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
--
--		bfq_log_bfqq(bfqd, bfqq,
--			     "set_in_service_queue, cur-budget = %lu",
--			     bfqq->entity.budget);
--	}
--
--	bfqd->in_service_queue = bfqq;
--}
--
--/*
-- * Get and set a new queue for service.
-- */
--static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
--						  struct bfq_queue *bfqq)
--{
--	if (!bfqq)
--		bfqq = bfq_get_next_queue(bfqd);
-+	if (request)
-+		return blk_rq_pos(io_struct);
- 	else
--		bfq_get_next_queue_forced(bfqd, bfqq);
--
--	__bfq_set_in_service_queue(bfqd, bfqq);
--	return bfqq;
-+		return ((struct bio *)io_struct)->bi_iter.bi_sector;
- }
- 
--static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
--					  struct request *rq)
-+static inline sector_t bfq_dist_from(sector_t pos1,
-+				     sector_t pos2)
- {
--	if (blk_rq_pos(rq) >= bfqd->last_position)
--		return blk_rq_pos(rq) - bfqd->last_position;
-+	if (pos1 >= pos2)
-+		return pos1 - pos2;
- 	else
--		return bfqd->last_position - blk_rq_pos(rq);
-+		return pos2 - pos1;
- }
- 
--/*
-- * Return true if bfqq has no request pending and rq is close enough to
-- * bfqd->last_position, or if rq is closer to bfqd->last_position than
-- * bfqq->next_rq
-- */
--static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+static inline int bfq_rq_close_to_sector(void *io_struct, bool request,
-+					 sector_t sector)
- {
--	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+	return bfq_dist_from(bfq_io_struct_pos(io_struct, request), sector) <=
-+	       BFQQ_SEEK_THR;
- }
- 
--static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd, sector_t sector)
- {
- 	struct rb_root *root = &bfqd->rq_pos_tree;
- 	struct rb_node *parent, *node;
- 	struct bfq_queue *__bfqq;
--	sector_t sector = bfqd->last_position;
- 
- 	if (RB_EMPTY_ROOT(root))
- 		return NULL;
-@@ -1258,7 +1265,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 	 * next_request position).
- 	 */
- 	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	if (blk_rq_pos(__bfqq->next_rq) < sector)
-@@ -1269,7 +1276,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 		return NULL;
- 
- 	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	return NULL;
-@@ -1278,14 +1285,12 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- /*
-  * bfqd - obvious
-  * cur_bfqq - passed in so that we don't decide that the current queue
-- *            is closely cooperating with itself.
-- *
-- * We are assuming that cur_bfqq has dispatched at least one request,
-- * and that bfqd->last_position reflects a position on the disk associated
-- * with the I/O issued by cur_bfqq.
-+ *            is closely cooperating with itself
-+ * sector - used as a reference point to search for a close queue
-  */
- static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
--					      struct bfq_queue *cur_bfqq)
-+					      struct bfq_queue *cur_bfqq,
-+					      sector_t sector)
- {
- 	struct bfq_queue *bfqq;
- 
-@@ -1305,7 +1310,7 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	 * working closely on the same area of the disk. In that case,
- 	 * we can group them together and don't waste time idling.
- 	 */
--	bfqq = bfqq_close(bfqd);
-+	bfqq = bfqq_close(bfqd, sector);
- 	if (bfqq == NULL || bfqq == cur_bfqq)
- 		return NULL;
- 
-@@ -1332,6 +1337,315 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	return bfqq;
- }
- 
-+static struct bfq_queue *
-+bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return NULL;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return NULL;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return NULL;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+
-+	/*
-+	 * Merging is just a redirection: the requests of the process
-+	 * owning one of the two queues are redirected to the other queue.
-+	 * The latter queue, in its turn, is set as shared if this is the
-+	 * first time that the requests of some process are redirected to
-+	 * it.
-+	 *
-+	 * We redirect bfqq to new_bfqq and not the opposite, because we
-+	 * are in the context of the process owning bfqq, hence we have
-+	 * the io_cq of this process. So we can immediately configure this
-+	 * io_cq to redirect the requests of the process to new_bfqq.
-+	 *
-+	 * NOTE, even if new_bfqq coincides with the in-service queue, the
-+	 * io_cq of new_bfqq is not available, because, if the in-service
-+	 * queue is shared, bfqd->in_service_bic may not point to the
-+	 * io_cq of the in-service queue.
-+	 * Redirecting the requests of the process owning bfqq to the
-+	 * currently in-service queue is in any case the best option, as
-+	 * we feed the in-service queue with new requests close to the
-+	 * last request served and, by doing so, hopefully increase the
-+	 * throughput.
-+	 */
-+	bfqq->new_bfqq = new_bfqq;
-+	atomic_add(process_refs, &new_bfqq->ref);
-+	return new_bfqq;
-+}
-+
-+/*
-+ * Attempt to schedule a merge of bfqq with the currently in-service queue
-+ * or with a close queue among the scheduled queues.
-+ * Return NULL if no merge was scheduled, a pointer to the shared bfq_queue
-+ * structure otherwise.
-+ *
-+ * The OOM queue is not allowed to participate to cooperation: in fact, since
-+ * the requests temporarily redirected to the OOM queue could be redirected
-+ * again to dedicated queues at any time, the state needed to correctly
-+ * handle merging with the OOM queue would be quite complex and expensive
-+ * to maintain. Besides, in such a critical condition as an out of memory,
-+ * the benefits of queue merging may be little relevant, or even negligible.
-+ */
-+static struct bfq_queue *
-+bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+		     void *io_struct, bool request)
-+{
-+	struct bfq_queue *in_service_bfqq, *new_bfqq;
-+
-+	if (bfqq->new_bfqq)
-+		return bfqq->new_bfqq;
-+
-+	if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
-+		return NULL;
-+
-+	in_service_bfqq = bfqd->in_service_queue;
-+
-+	if (in_service_bfqq == NULL || in_service_bfqq == bfqq ||
-+	    !bfqd->in_service_bic ||
-+	    unlikely(in_service_bfqq == &bfqd->oom_bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_idle(in_service_bfqq) || bfq_class_idle(bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_rt(in_service_bfqq) != bfq_class_rt(bfqq))
-+		goto check_scheduled;
-+
-+	if (in_service_bfqq->entity.parent != bfqq->entity.parent)
-+		goto check_scheduled;
-+
-+	if (bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
-+	    bfq_bfqq_sync(in_service_bfqq) && bfq_bfqq_sync(bfqq)) {
-+		new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
-+		if (new_bfqq != NULL)
-+			return new_bfqq; /* Merge with in-service queue */
-+	}
-+
-+	/*
-+	 * Check whether there is a cooperator among currently scheduled
-+	 * queues. The only thing we need is that the bio/request is not
-+	 * NULL, as we need it to establish whether a cooperator exists.
-+	 */
-+check_scheduled:
-+	new_bfqq = bfq_close_cooperator(bfqd, bfqq,
-+					bfq_io_struct_pos(io_struct, request));
-+	if (new_bfqq && likely(new_bfqq != &bfqd->oom_bfqq))
-+		return bfq_setup_merge(bfqq, new_bfqq);
-+
-+	return NULL;
-+}
-+
-+static inline void
-+bfq_bfqq_save_state(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic == NULL, the queue is already shared or its requests
-+	 * have already been redirected to a shared queue; both idle window
-+	 * and weight raising state have already been saved. Do nothing.
-+	 */
-+	if (bfqq->bic == NULL)
-+		return;
-+	if (bfqq->bic->wr_time_left)
-+		/*
-+		 * This is the queue of a just-started process, and would
-+		 * deserve weight raising: we set wr_time_left to the full
-+		 * weight-raising duration to trigger weight-raising when
-+		 * and if the queue is split and the first request of the
-+		 * queue is enqueued.
-+		 */
-+		bfqq->bic->wr_time_left = bfq_wr_duration(bfqq->bfqd);
-+	else if (bfqq->wr_coeff > 1) {
-+		unsigned long wr_duration =
-+			jiffies - bfqq->last_wr_start_finish;
-+		/*
-+		 * It may happen that a queue's weight raising period lasts
-+		 * longer than its wr_cur_max_time, as weight raising is
-+		 * handled only when a request is enqueued or dispatched (it
-+		 * does not use any timer). If the weight raising period is
-+		 * about to end, don't save it.
-+		 */
-+		if (bfqq->wr_cur_max_time <= wr_duration)
-+			bfqq->bic->wr_time_left = 0;
-+		else
-+			bfqq->bic->wr_time_left =
-+				bfqq->wr_cur_max_time - wr_duration;
-+		/*
-+		 * The bfq_queue is becoming shared or the requests of the
-+		 * process owning the queue are being redirected to a shared
-+		 * queue. Stop the weight raising period of the queue, as in
-+		 * both cases it should not be owned by an interactive or
-+		 * soft real-time application.
-+		 */
-+		bfq_bfqq_end_wr(bfqq);
-+	} else
-+		bfqq->bic->wr_time_left = 0;
-+	bfqq->bic->saved_idle_window = bfq_bfqq_idle_window(bfqq);
-+	bfqq->bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq);
-+	bfqq->bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq);
-+	bfqq->bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node);
-+	bfqq->bic->cooperations++;
-+	bfqq->bic->failed_cooperations = 0;
-+}
-+
-+static inline void
-+bfq_get_bic_reference(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic has a non-NULL value, the bic to which it belongs
-+	 * is about to begin using a shared bfq_queue.
-+	 */
-+	if (bfqq->bic)
-+		atomic_long_inc(&bfqq->bic->icq.ioc->refcount);
-+}
-+
-+static void
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)new_bfqq->pid);
-+	/* Save weight raising and idle window of the merged queues */
-+	bfq_bfqq_save_state(bfqq);
-+	bfq_bfqq_save_state(new_bfqq);
-+	if (bfq_bfqq_IO_bound(bfqq))
-+		bfq_mark_bfqq_IO_bound(new_bfqq);
-+	bfq_clear_bfqq_IO_bound(bfqq);
-+	/*
-+	 * Grab a reference to the bic, to prevent it from being destroyed
-+	 * before being possibly touched by a bfq_split_bfqq().
-+	 */
-+	bfq_get_bic_reference(bfqq);
-+	bfq_get_bic_reference(new_bfqq);
-+	/*
-+	 * Merge queues (that is, let bic redirect its requests to new_bfqq)
-+	 */
-+	bic_set_bfqq(bic, new_bfqq, 1);
-+	bfq_mark_bfqq_coop(new_bfqq);
-+	/*
-+	 * new_bfqq now belongs to at least two bics (it is a shared queue):
-+	 * set new_bfqq->bic to NULL. bfqq either:
-+	 * - does not belong to any bic any more, and hence bfqq->bic must
-+	 *   be set to NULL, or
-+	 * - is a queue whose owning bics have already been redirected to a
-+	 *   different queue, hence the queue is destined to not belong to
-+	 *   any bic soon and bfqq->bic is already NULL (therefore the next
-+	 *   assignment causes no harm).
-+	 */
-+	new_bfqq->bic = NULL;
-+	bfqq->bic = NULL;
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_bfqq_increase_failed_cooperations(struct bfq_queue *bfqq)
-+{
-+	struct bfq_io_cq *bic = bfqq->bic;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	if (bic && bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh) {
-+		bic->failed_cooperations++;
-+		if (bic->failed_cooperations >= bfqd->bfq_failed_cooperations)
-+			bic->cooperations = 0;
-+	}
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	/*
-+	 * We take advantage of this function to perform an early merge
-+	 * of the queues of possible cooperating processes.
-+	 */
-+	if (bfqq != NULL) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, bio, false);
-+		if (new_bfqq != NULL) {
-+			bfq_merge_bfqqs(bfqd, bic, bfqq, new_bfqq);
-+			/*
-+			 * If we get here, the bio will be queued in the
-+			 * shared queue, i.e., new_bfqq, so use new_bfqq
-+			 * to decide whether bio and rq can be merged.
-+			 */
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfq_get_next_queue(bfqd);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
- /*
-  * If enough samples have been computed, return the current max budget
-  * stored in bfqd, which is dynamically updated according to the
-@@ -1475,61 +1789,6 @@ static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
- 	return rq;
- }
- 
--/* Must be called with the queue_lock held. */
--static int bfqq_process_refs(struct bfq_queue *bfqq)
--{
--	int process_refs, io_refs;
--
--	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
--	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
--	BUG_ON(process_refs < 0);
--	return process_refs;
--}
--
--static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
--{
--	int process_refs, new_process_refs;
--	struct bfq_queue *__bfqq;
--
--	/*
--	 * If there are no process references on the new_bfqq, then it is
--	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
--	 * may have dropped their last reference (not just their last process
--	 * reference).
--	 */
--	if (!bfqq_process_refs(new_bfqq))
--		return;
--
--	/* Avoid a circular list and skip interim queue merges. */
--	while ((__bfqq = new_bfqq->new_bfqq)) {
--		if (__bfqq == bfqq)
--			return;
--		new_bfqq = __bfqq;
--	}
--
--	process_refs = bfqq_process_refs(bfqq);
--	new_process_refs = bfqq_process_refs(new_bfqq);
--	/*
--	 * If the process for the bfqq has gone away, there is no
--	 * sense in merging the queues.
--	 */
--	if (process_refs == 0 || new_process_refs == 0)
--		return;
--
--	/*
--	 * Merge in the direction of the lesser amount of work.
--	 */
--	if (new_process_refs >= process_refs) {
--		bfqq->new_bfqq = new_bfqq;
--		atomic_add(process_refs, &new_bfqq->ref);
--	} else {
--		new_bfqq->new_bfqq = bfqq;
--		atomic_add(new_process_refs, &bfqq->ref);
--	}
--	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
--		new_bfqq->pid);
--}
--
- static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
- {
- 	struct bfq_entity *entity = &bfqq->entity;
-@@ -2263,7 +2522,7 @@ static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-  */
- static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- {
--	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct bfq_queue *bfqq;
- 	struct request *next_rq;
- 	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
- 
-@@ -2273,17 +2532,6 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 
- 	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
- 
--	/*
--         * If another queue has a request waiting within our mean seek
--         * distance, let it run. The expire code will check for close
--         * cooperators and put the close queue at the front of the
--         * service tree. If possible, merge the expiring queue with the
--         * new bfqq.
--         */
--        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
--        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
--                bfq_setup_merge(bfqq, new_bfqq);
--
- 	if (bfq_may_expire_for_budg_timeout(bfqq) &&
- 	    !timer_pending(&bfqd->idle_slice_timer) &&
- 	    !bfq_bfqq_must_idle(bfqq))
-@@ -2322,10 +2570,7 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 				bfq_clear_bfqq_wait_request(bfqq);
- 				del_timer(&bfqd->idle_slice_timer);
- 			}
--			if (new_bfqq == NULL)
--				goto keep_queue;
--			else
--				goto expire;
-+			goto keep_queue;
- 		}
- 	}
- 
-@@ -2334,40 +2579,30 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 	 * in flight (possibly waiting for a completion) or is idling for a
- 	 * new request, then keep it.
- 	 */
--	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
--	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+	if (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq))) {
- 		bfqq = NULL;
- 		goto keep_queue;
--	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
--		/*
--		 * Expiring the queue because there is a close cooperator,
--		 * cancel timer.
--		 */
--		bfq_clear_bfqq_wait_request(bfqq);
--		del_timer(&bfqd->idle_slice_timer);
- 	}
- 
- 	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
- expire:
- 	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
- new_queue:
--	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfqq = bfq_set_in_service_queue(bfqd);
- 	bfq_log(bfqd, "select_queue: new queue %d returned",
- 		bfqq != NULL ? bfqq->pid : 0);
- keep_queue:
- 	return bfqq;
- }
- 
--static void bfq_update_wr_data(struct bfq_data *bfqd,
--			       struct bfq_queue *bfqq)
-+static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
- {
--	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
--		struct bfq_entity *entity = &bfqq->entity;
--
-+	struct bfq_entity *entity = &bfqq->entity;
-+	if (bfqq->wr_coeff > 1) { /* queue is being weight-raised */
- 		bfq_log_bfqq(bfqd, bfqq,
- 			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
--			jiffies_to_msecs(jiffies -
--				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
- 			jiffies_to_msecs(bfqq->wr_cur_max_time),
- 			bfqq->wr_coeff,
- 			bfqq->entity.weight, bfqq->entity.orig_weight);
-@@ -2376,12 +2611,16 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 		       entity->orig_weight * bfqq->wr_coeff);
- 		if (entity->ioprio_changed)
- 			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+
- 		/*
- 		 * If the queue was activated in a burst, or
- 		 * too much time has elapsed from the beginning
--		 * of this weight-raising, then end weight raising.
-+		 * of this weight-raising period, or the queue has
-+		 * exceeded the acceptable number of cooperations,
-+		 * then end weight raising.
- 		 */
- 		if (bfq_bfqq_in_large_burst(bfqq) ||
-+		    bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh ||
- 		    time_is_before_jiffies(bfqq->last_wr_start_finish +
- 					   bfqq->wr_cur_max_time)) {
- 			bfqq->last_wr_start_finish = jiffies;
-@@ -2390,11 +2629,13 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 				     bfqq->last_wr_start_finish,
- 				     jiffies_to_msecs(bfqq->wr_cur_max_time));
- 			bfq_bfqq_end_wr(bfqq);
--			__bfq_entity_update_weight_prio(
--				bfq_entity_service_tree(entity),
--				entity);
- 		}
- 	}
-+	/* Update weight both if it must be raised and if it must be lowered */
-+	if ((entity->weight > entity->orig_weight) != (bfqq->wr_coeff > 1))
-+		__bfq_entity_update_weight_prio(
-+			bfq_entity_service_tree(entity),
-+			entity);
- }
- 
- /*
-@@ -2642,6 +2883,25 @@ static inline void bfq_init_icq(struct io_cq *icq)
- 	struct bfq_io_cq *bic = icq_to_bic(icq);
- 
- 	bic->ttime.last_end_request = jiffies;
-+	/*
-+	 * A newly created bic indicates that the process has just
-+	 * started doing I/O, and is probably mapping into memory its
-+	 * executable and libraries: it definitely needs weight raising.
-+	 * There is however the possibility that the process performs,
-+	 * for a while, I/O close to some other process. EQM intercepts
-+	 * this behavior and may merge the queue corresponding to the
-+	 * process  with some other queue, BEFORE the weight of the queue
-+	 * is raised. Merged queues are not weight-raised (they are assumed
-+	 * to belong to processes that benefit only from high throughput).
-+	 * If the merge is basically the consequence of an accident, then
-+	 * the queue will be split soon and will get back its old weight.
-+	 * It is then important to write down somewhere that this queue
-+	 * does need weight raising, even if it did not make it to get its
-+	 * weight raised before being merged. To this purpose, we overload
-+	 * the field raising_time_left and assign 1 to it, to mark the queue
-+	 * as needing weight raising.
-+	 */
-+	bic->wr_time_left = 1;
- }
- 
- static void bfq_exit_icq(struct io_cq *icq)
-@@ -2655,6 +2915,13 @@ static void bfq_exit_icq(struct io_cq *icq)
- 	}
- 
- 	if (bic->bfqq[BLK_RW_SYNC]) {
-+		/*
-+		 * If the bic is using a shared queue, put the reference
-+		 * taken on the io_context when the bic started using a
-+		 * shared bfq_queue.
-+		 */
-+		if (bfq_bfqq_coop(bic->bfqq[BLK_RW_SYNC]))
-+			put_io_context(icq->ioc);
- 		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
- 		bic->bfqq[BLK_RW_SYNC] = NULL;
- 	}
-@@ -2950,6 +3217,10 @@ static void bfq_update_idle_window(struct bfq_data *bfqd,
- 	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
- 		return;
- 
-+	/* Idle window just restored, statistics are meaningless. */
-+	if (bfq_bfqq_just_split(bfqq))
-+		return;
-+
- 	enable_idle = bfq_bfqq_idle_window(bfqq);
- 
- 	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-@@ -2997,6 +3268,7 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- 	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
- 	    !BFQQ_SEEKY(bfqq))
- 		bfq_update_idle_window(bfqd, bfqq, bic);
-+	bfq_clear_bfqq_just_split(bfqq);
- 
- 	bfq_log_bfqq(bfqd, bfqq,
- 		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-@@ -3057,13 +3329,49 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- static void bfq_insert_request(struct request_queue *q, struct request *rq)
- {
- 	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq), *new_bfqq;
- 
- 	assert_spin_locked(bfqd->queue->queue_lock);
-+
-+	/*
-+	 * An unplug may trigger a requeue of a request from the device
-+	 * driver: make sure we are in process context while trying to
-+	 * merge two bfq_queues.
-+	 */
-+	if (!in_interrupt()) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
-+		if (new_bfqq != NULL) {
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) != bfqq)
-+				new_bfqq = bic_to_bfqq(RQ_BIC(rq), 1);
-+			/*
-+			 * Release the request's reference to the old bfqq
-+			 * and make sure one is taken to the shared queue.
-+			 */
-+			new_bfqq->allocated[rq_data_dir(rq)]++;
-+			bfqq->allocated[rq_data_dir(rq)]--;
-+			atomic_inc(&new_bfqq->ref);
-+			bfq_put_queue(bfqq);
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) == bfqq)
-+				bfq_merge_bfqqs(bfqd, RQ_BIC(rq),
-+						bfqq, new_bfqq);
-+			rq->elv.priv[1] = new_bfqq;
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
- 	bfq_init_prio_data(bfqq, RQ_BIC(rq));
- 
- 	bfq_add_request(rq);
- 
-+	/*
-+	 * Here a newly-created bfq_queue has already started a weight-raising
-+	 * period: clear raising_time_left to prevent bfq_bfqq_save_state()
-+	 * from assigning it a full weight-raising period. See the detailed
-+	 * comments about this field in bfq_init_icq().
-+	 */
-+	if (bfqq->bic != NULL)
-+		bfqq->bic->wr_time_left = 0;
- 	rq->fifo_time = jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
- 	list_add_tail(&rq->queuelist, &bfqq->fifo);
- 
-@@ -3228,18 +3536,6 @@ static void bfq_put_request(struct request *rq)
- 	}
- }
- 
--static struct bfq_queue *
--bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
--		struct bfq_queue *bfqq)
--{
--	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
--		(long unsigned)bfqq->new_bfqq->pid);
--	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
--	bfq_mark_bfqq_coop(bfqq->new_bfqq);
--	bfq_put_queue(bfqq);
--	return bic_to_bfqq(bic, 1);
--}
--
- /*
-  * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-  * was the last process referring to said bfqq.
-@@ -3248,6 +3544,9 @@ static struct bfq_queue *
- bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
- {
- 	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+
-+	put_io_context(bic->icq.ioc);
-+
- 	if (bfqq_process_refs(bfqq) == 1) {
- 		bfqq->pid = current->pid;
- 		bfq_clear_bfqq_coop(bfqq);
-@@ -3276,6 +3575,7 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
- 	struct bfq_queue *bfqq;
- 	struct bfq_group *bfqg;
- 	unsigned long flags;
-+	bool split = false;
- 
- 	might_sleep_if(gfp_mask & __GFP_WAIT);
- 
-@@ -3293,25 +3593,26 @@ new_queue:
- 	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
- 		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
- 		bic_set_bfqq(bic, bfqq, is_sync);
-+		if (split && is_sync) {
-+			if ((bic->was_in_burst_list && bfqd->large_burst) ||
-+			    bic->saved_in_large_burst)
-+				bfq_mark_bfqq_in_large_burst(bfqq);
-+			else {
-+			    bfq_clear_bfqq_in_large_burst(bfqq);
-+			    if (bic->was_in_burst_list)
-+			       hlist_add_head(&bfqq->burst_list_node,
-+				              &bfqd->burst_list);
-+			}
-+		}
- 	} else {
--		/*
--		 * If the queue was seeky for too long, break it apart.
--		 */
-+		/* If the queue was seeky for too long, break it apart. */
- 		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
- 			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
- 			bfqq = bfq_split_bfqq(bic, bfqq);
-+			split = true;
- 			if (!bfqq)
- 				goto new_queue;
- 		}
--
--		/*
--		 * Check to see if this queue is scheduled to merge with
--		 * another closely cooperating queue. The merging of queues
--		 * happens here as it must be done in process context.
--		 * The reference on new_bfqq was taken in merge_bfqqs.
--		 */
--		if (bfqq->new_bfqq != NULL)
--			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
- 	}
- 
- 	bfqq->allocated[rw]++;
-@@ -3322,6 +3623,26 @@ new_queue:
- 	rq->elv.priv[0] = bic;
- 	rq->elv.priv[1] = bfqq;
- 
-+	/*
-+	 * If a bfq_queue has only one process reference, it is owned
-+	 * by only one bfq_io_cq: we can set the bic field of the
-+	 * bfq_queue to the address of that structure. Also, if the
-+	 * queue has just been split, mark a flag so that the
-+	 * information is available to the other scheduler hooks.
-+	 */
-+	if (likely(bfqq != &bfqd->oom_bfqq) && bfqq_process_refs(bfqq) == 1) {
-+		bfqq->bic = bic;
-+		if (split) {
-+			bfq_mark_bfqq_just_split(bfqq);
-+			/*
-+			 * If the queue has just been split from a shared
-+			 * queue, restore the idle window and the possible
-+			 * weight raising period.
-+			 */
-+			bfq_bfqq_resume_state(bfqq, bic);
-+		}
-+	}
-+
- 	spin_unlock_irqrestore(q->queue_lock, flags);
- 
- 	return 0;
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-index 2931563..6764a7e 100644
---- a/block/bfq-sched.c
-+++ b/block/bfq-sched.c
-@@ -1091,34 +1091,6 @@ static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
- 	return bfqq;
- }
- 
--/*
-- * Forced extraction of the given queue.
-- */
--static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
--				      struct bfq_queue *bfqq)
--{
--	struct bfq_entity *entity;
--	struct bfq_sched_data *sd;
--
--	BUG_ON(bfqd->in_service_queue != NULL);
--
--	entity = &bfqq->entity;
--	/*
--	 * Bubble up extraction/update from the leaf to the root.
--	*/
--	for_each_entity(entity) {
--		sd = entity->sched_data;
--		bfq_update_budget(entity);
--		bfq_update_vtime(bfq_entity_service_tree(entity));
--		bfq_active_extract(bfq_entity_service_tree(entity), entity);
--		sd->in_service_entity = entity;
--		sd->next_in_service = NULL;
--		entity->service = 0;
--	}
--
--	return;
--}
--
- static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
- {
- 	if (bfqd->in_service_bic != NULL) {
-diff --git a/block/bfq.h b/block/bfq.h
-index 6b1a5f3..a9265d8 100644
---- a/block/bfq.h
-+++ b/block/bfq.h
-@@ -218,18 +218,21 @@ struct bfq_group;
-  *                      idle @bfq_queue with no outstanding requests, then
-  *                      the task associated with the queue it is deemed as
-  *                      soft real-time (see the comments to the function
-- *                      bfq_bfqq_softrt_next_start()).
-+ *                      bfq_bfqq_softrt_next_start())
-  * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-  *                      idle to backlogged
-  * @service_from_backlogged: cumulative service received from the @bfq_queue
-  *                           since the last transition from idle to
-  *                           backlogged
-+ * @bic: pointer to the bfq_io_cq owning the bfq_queue, set to %NULL if the
-+ *	 queue is shared
-  *
-- * A bfq_queue is a leaf request queue; it can be associated with an io_context
-- * or more, if it is async or shared between cooperating processes. @cgroup
-- * holds a reference to the cgroup, to be sure that it does not disappear while
-- * a bfqq still references it (mostly to avoid races between request issuing and
-- * task migration followed by cgroup destruction).
-+ * A bfq_queue is a leaf request queue; it can be associated with an
-+ * io_context or more, if it  is  async or shared  between  cooperating
-+ * processes. @cgroup holds a reference to the cgroup, to be sure that it
-+ * does not disappear while a bfqq still references it (mostly to avoid
-+ * races between request issuing and task migration followed by cgroup
-+ * destruction).
-  * All the fields are protected by the queue lock of the containing bfqd.
-  */
- struct bfq_queue {
-@@ -269,6 +272,7 @@ struct bfq_queue {
- 	unsigned int requests_within_timer;
- 
- 	pid_t pid;
-+	struct bfq_io_cq *bic;
- 
- 	/* weight-raising fields */
- 	unsigned long wr_cur_max_time;
-@@ -298,12 +302,42 @@ struct bfq_ttime {
-  * @icq: associated io_cq structure
-  * @bfqq: array of two process queues, the sync and the async
-  * @ttime: associated @bfq_ttime struct
-+ * @wr_time_left: snapshot of the time left before weight raising ends
-+ *                for the sync queue associated to this process; this
-+ *		  snapshot is taken to remember this value while the weight
-+ *		  raising is suspended because the queue is merged with a
-+ *		  shared queue, and is used to set @raising_cur_max_time
-+ *		  when the queue is split from the shared queue and its
-+ *		  weight is raised again
-+ * @saved_idle_window: same purpose as the previous field for the idle
-+ *                     window
-+ * @saved_IO_bound: same purpose as the previous two fields for the I/O
-+ *                  bound classification of a queue
-+ * @saved_in_large_burst: same purpose as the previous fields for the
-+ *                        value of the field keeping the queue's belonging
-+ *                        to a large burst
-+ * @was_in_burst_list: true if the queue belonged to a burst list
-+ *                     before its merge with another cooperating queue
-+ * @cooperations: counter of consecutive successful queue merges underwent
-+ *                by any of the process' @bfq_queues
-+ * @failed_cooperations: counter of consecutive failed queue merges of any
-+ *                       of the process' @bfq_queues
-  */
- struct bfq_io_cq {
- 	struct io_cq icq; /* must be the first member */
- 	struct bfq_queue *bfqq[2];
- 	struct bfq_ttime ttime;
- 	int ioprio;
-+
-+	unsigned int wr_time_left;
-+	bool saved_idle_window;
-+	bool saved_IO_bound;
-+
-+	bool saved_in_large_burst;
-+	bool was_in_burst_list;
-+
-+	unsigned int cooperations;
-+	unsigned int failed_cooperations;
- };
- 
- enum bfq_device_speed {
-@@ -539,7 +573,7 @@ enum bfqq_state_flags {
- 	BFQ_BFQQ_FLAG_prio_changed,	/* task priority has changed */
- 	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
- 	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
--	BFQ_BFQQ_FLAG_IO_bound,         /*
-+	BFQ_BFQQ_FLAG_IO_bound,		/*
- 					 * bfqq has timed-out at least once
- 					 * having consumed at most 2/10 of
- 					 * its budget
-@@ -552,12 +586,13 @@ enum bfqq_state_flags {
- 					 * bfqq has proved to be slow and
- 					 * seeky until budget timeout
- 					 */
--	BFQ_BFQQ_FLAG_softrt_update,    /*
-+	BFQ_BFQQ_FLAG_softrt_update,	/*
- 					 * may need softrt-next-start
- 					 * update
- 					 */
- 	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
--	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be split */
-+	BFQ_BFQQ_FLAG_just_split,	/* queue has just been split */
- };
- 
- #define BFQ_BFQQ_FNS(name)						\
-@@ -587,6 +622,7 @@ BFQ_BFQQ_FNS(in_large_burst);
- BFQ_BFQQ_FNS(constantly_seeky);
- BFQ_BFQQ_FNS(coop);
- BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(just_split);
- BFQ_BFQQ_FNS(softrt_update);
- #undef BFQ_BFQQ_FNS
- 
--- 
-2.1.3
-
diff --git a/helpers/DATA/linux-lts-utopic/deblob-3.16 b/helpers/DATA/linux-lts-utopic/deblob-3.16
deleted file mode 100644
index 92a8b5cf2..000000000
--- a/helpers/DATA/linux-lts-utopic/deblob-3.16
+++ /dev/null
@@ -1,2931 +0,0 @@
-#!/bin/sh
-
-#    Copyright (C) 2008-2014 Alexandre Oliva <lxoliva@fsfla.org>
-#    Copyright (C) 2008 Jeff Moe
-#    Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
-#
-#    This program is part of GNU Linux-libre, a GNU project that
-#    publishes scripts to clean up Linux so as to make it suitable for
-#    use in the GNU Project and in Free System Distributions.
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-
-# deblob - remove non-free blobs from the vanilla linux kernel
-
-# http://www.fsfla.org/svn/fsfla/software/linux-libre
-
-
-# This script, suited for the kernel version named below, in kver,
-# attempts to remove only non-Free Software bits, without removing
-# Free Software that happens to be in the same file.
-
-# Drivers that currently require non-Free firmware are retained, but
-# firmware included in GPLed sources is replaced with /*(DEBLOBBED)*/
-# if the deblob-check script, that knows how to do this, is present.
-# -lxoliva
-
-
-# See also:
-# http://wiki.debian.org/KernelFirmwareLicensing
-# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
-# http://wiki.gnewsense.org/Builder gen-kernel
-
-# Thanks to Brian Brazil @ gnewsense
-
-
-# For each kver release, start extra with an empty string, then count
-# from 1 if changes are needed that require rebuilding the tarball.
-kver=3.16 extra=
-
-case $1 in
---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
-if [ ! -f $check ] ; then
-  if $forced; then
-    die deblob-check script missing, will remove entire files
-  else
-    die deblob-check script missing
-  fi
-  have_check=false
-else
-  have_check=:
-  [ -x $check ] || check="/bin/sh $check"
-fi
-
-filetest () {
-  if [ ! -f $1 ]; then
-    die $1 does not exist, something is wrong && return 1
-  fi
-}
-
-announce () {
-  echo
-  echo "$@"
-}
-
-clean_file () {
-  #$1 = filename
-  filetest $1 || return
-  rm $1
-  echo $1: removed
-}
-
-check_changed () {
-  #$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
-  filetest $1 || return
-  if $have_check; then
-    name=$1
-    set fnord "$@" -d
-    shift 2
-    if $check "$@" -i linux-$kver $name > $name.deblob; then
-      if [ ! -s $name.deblob ]; then
-	die got an empty file after removing blobs from $name
-      fi
-    else
-      die failed removing blobs from $name
-    fi
-    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 && 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
-  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
-  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
-  filetest $1 || return
-  sed "/^config \\($2\\)\$/{p;i\
-	depends on NONFREE
-d;}" $1 > $1.deblob
-  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
-  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
-  filetest $2 || return
-  sed -e "$1" "$2" > "$2".deblob || {
-    die $2: failed: ${3-applied sed script $1} && return 1; }
-  check_changed $2 && echo $2: ${3-applied sed script $1}
-}
-
-reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g
-' "$1" 'disabled non-Free firmware-loading machinery'
-}
-
-maybe_reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request_\(ihex_\)\?firmware\(_nowait\)\?,maybe_reject_\1firmware\2,g
-' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
-}
-
-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
-  undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
-    "disabled non-Free firmware" "$@"
-}
-
-# First, check that files that contain firmwares and their
-# corresponding sources are present.
-
-for f in \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/com.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpc.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5 \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5 \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5 \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5 \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc \
-  drivers/net/wan/wanxlfw.inc_shipped \
-    drivers/net/wan/wanxlfw.S \
-  drivers/net/wireless/atmel.c \
-    drivers/net/wireless/atmel.c \
-  drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic79xx.seq \
-  drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic7xxx.seq \
-  drivers/scsi/53c700_d.h_shipped \
-    drivers/scsi/53c700.scr \
-  drivers/scsi/sym53c8xx_2/sym_fw1.h \
-    drivers/scsi/sym53c8xx_2/sym_fw1.h \
-  drivers/scsi/sym53c8xx_2/sym_fw2.h \
-    drivers/scsi/sym53c8xx_2/sym_fw2.h \
-  firmware/dsp56k/bootstrap.bin.ihex \
-    firmware/dsp56k/bootstrap.asm \
-  firmware/keyspan_pda/keyspan_pda.HEX \
-    firmware/keyspan_pda/keyspan_pda.S \
-  firmware/keyspan_pda/xircom_pgs.HEX \
-    firmware/keyspan_pda/xircom_pgs.S \
-; do
-  filetest $f
-done
-
-# Identify the tarball.
-grep -q 'EXTRAVERSION.*-gnu' Makefile ||
-clean_sed "s,^EXTRAVERSION.*,&-gnu$extra,
-" Makefile 'added -gnu to EXTRAVERSION'
-
-grep -q Linux-libre README ||
-clean_sed '
-1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>,
-2,5 s,Linux version [0-9.]*,GNU Linux-libre,
-1,20 s,\(operating system \)\?Unix,Unix kernel,
-/WHAT IS LINUX/i\
-WHAT IS GNU Linux-libre?\
-\
-  GNU Linux-libre is a Free version of the kernel Linux (see below),\
-  suitable for use with the GNU Operating System in 100% Free\
-  GNU/Linux-libre System Distributions.\
-  http://www.gnu.org/distros/\
-\
-  It removes non-Free components from Linux, that are disguised as\
-  source code or distributed in separate files.  It also disables\
-  run-time requests for non-Free components, shipped separately or as\
-  part of Linux, and documentation pointing to them, so as to avoid\
-  (Free-)baiting users into the trap of non-Free Software.\
-  http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\
-\
-  Linux-libre started within the gNewSense GNU/Linux distribution.\
-  It was later adopted by Jeff Moe, who coined its name, and in 2008\
-  it became a project maintained by FSF Latin America.  In 2012, it\
-  became part of the GNU Project.\
-\
-  The GNU Linux-libre project takes a minimal-changes approach to\
-  cleaning up Linux, making no effort to substitute components that\
-  need to be removed with functionally equivalent Free ones.\
-  Nevertheless, we encourage and support efforts towards doing so.\
-  http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\
-\
-  Our mascot is Freedo, a light-blue penguin that has just come out\
-  of the shower.  Although we like penguins, GNU is a much greater\
-  contribution to the entire system, so its mascot deserves more\
-  promotion.  See our web page for their images.\
-  http://linux-libre.fsfla.org/\
-
-' README 'added blurb about GNU Linux-libre'
-
-# Add reject_firmware and maybe_reject_firmware
-grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_FIRMWARE_H\
-#define _LINUX_LIBRE_FIRMWARE_H\
-\
-#include <linux/device.h>\
-\
-#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\
-\
-static inline int\
-report_missing_free_firmware(const char *name, const char *what)\
-{\
-	printk(KERN_ERR "%s: Missing Free %s\\n", name,\
-	       what ? what : "firmware");\
-	return -EINVAL;\
-}\
-static inline int\
-reject_firmware(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware(const struct firmware **fw,\
-		      const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_firmware(fw, name, device);\
-}\
-static inline int\
-reject_firmware_direct(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_direct(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline void\
-discard_rejected_firmware(const struct firmware *fw, void *context)\
-{\
-	release_firmware(fw);\
-}\
-static inline int\
-reject_firmware_nowait(struct module *module, int uevent,\
-		       const char *name, struct device *device,\
-		       gfp_t gfp, void *context,\
-		       void (*cont)(const struct firmware *fw,\
-				    void *context))\
-{\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\
-					 device, gfp, NULL,\
-					 discard_rejected_firmware);\
-	if (retval)\
-		return retval;\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware_nowait(struct module *module, int uevent,\
-			     const char *name, struct device *device,\
-			     gfp_t gfp, void *context,\
-			     void (*cont)(const struct firmware *fw,\
-					  void *context))\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware_nowait(module, uevent, name,\
-					      device, gfp, context, cont);\
-	else\
-		return request_firmware_nowait(module, uevent, name,\
-					       device, gfp, context, cont);\
-}\
-\
-#endif /* _LINUX_LIBRE_FIRMWARE_H */\
-' include/linux/firmware.h 'added non-Free firmware notification support'
-
-grep -q _LINUX_LIBRE_IHEX_FIRMWARE_H include/linux/ihex.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_IHEX_H\
-#define _LINUX_LIBRE_IHEX_H\
-\
-static inline int\
-maybe_reject_ihex_firmware(const struct firmware **fw,\
-			   const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_ihex_firmware(fw, name, device);\
-}\
-\
-#endif /* _LINUX_LIBRE_IHEX_H */\
-' include/linux/ihex.h 'added non-Free ihex firmware notification support'
-
-########
-# Arch #
-########
-
-# x86
-
-announce MICROCODE_AMD - "AMD microcode patch loading support"
-reject_firmware arch/x86/kernel/cpu/microcode/amd.c
-clean_blob arch/x86/kernel/cpu/microcode/amd.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD'
-clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_AMD_EARLY - "Early load AMD microcode"
-clean_blob arch/x86/kernel/cpu/microcode/amd_early.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD_EARLY'
-clean_mk CONFIG_MICROCODE_AMD_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_INTEL - "Intel microcode patch loading support"
-reject_firmware arch/x86/kernel/cpu/microcode/intel.c
-clean_blob arch/x86/kernel/cpu/microcode/intel.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL'
-clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_INTEL_EARLY - "Early load Intel microcode"
-clean_blob arch/x86/kernel/cpu/microcode/intel_early.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL_EARLY'
-clean_mk CONFIG_MICROCODE_INTEL_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_EARLY - "Early load microcode"
-clean_blob Documentation/x86/early-microcode.txt
-clean_kconfig arch/x86/Kconfig 'MICROCODE_EARLY'
-clean_mk CONFIG_MICROCODE_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
-# arm
-
-announce IXP4XX_NPE - "IXP4xx Network Processor Engine support"
-reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob Documentation/arm/IXP4xx
-clean_kconfig arch/arm/mach-ixp4xx/Kconfig 'ARCH_IXP4XX'
-clean_mk CONFIG_IXP4XX_NPE arch/arm/mach-ixp4xx/Makefile
-
-announce ARCH_NETX - "Hilscher NetX based"
-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_blob drivers/net/ethernet/netx-eth.c
-clean_kconfig arch/arm/Kconfig 'ARCH_NETX'
-clean_mk CONFIG_ARCH_NETX arch/arm/Makefile
-
-# mips
-
-# I couldn't figure out where the firmware name actually comes from.
-# If it's from some user-set property, we could reenable it.  -lxo
-announce XRX200_PHY_FW - "XRX200 PHY firmware loader"
-reject_firmware arch/mips/lantiq/xway/xrx200_phy_fw.c
-clean_kconfig arch/mips/lantiq/Kconfig 'XRX200_PHY_FW'
-clean_mk CONFIG_XRX200_PHY_FW arch/mips/lantiq/xway/Makefile
-
-#######
-# ATM #
-#######
-
-announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server"
-reject_firmware drivers/atm/ambassador.c
-clean_blob drivers/atm/ambassador.c
-clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw
-clean_kconfig drivers/atm/Kconfig 'ATM_AMBASSADOR'
-clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile
-
-announce ATM_FORE200E - "FORE Systems 200E-series"
-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 ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver"
-reject_firmware drivers/atm/solos-pci.c
-clean_blob drivers/atm/solos-pci.c
-clean_kconfig drivers/atm/Kconfig 'ATM_SOLOS'
-clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile
-
-########
-# tty #
-########
-
-announce CYCLADES - "Cyclades async mux support"
-reject_firmware drivers/tty/cyclades.c
-clean_blob drivers/tty/cyclades.c
-clean_kconfig drivers/tty/Kconfig 'CYCLADES'
-clean_mk CONFIG_CYCLADES drivers/tty/Makefile
-
-announce ISI - "Multi-Tech multiport card support"
-reject_firmware drivers/tty/isicom.c
-clean_blob drivers/tty/isicom.c
-clean_kconfig drivers/tty/Kconfig 'ISI'
-clean_mk CONFIG_ISI drivers/tty/Makefile
-
-announce MOXA_INTELLIO - "Moxa Intellio support"
-reject_firmware drivers/tty/moxa.c
-clean_blob drivers/tty/moxa.c
-clean_kconfig drivers/tty/Kconfig 'MOXA_INTELLIO'
-clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile
-
-# gpu drm
-
-announce DRM_AST - "AST server chips"
-reject_firmware drivers/gpu/drm/ast/ast_dp501.c
-clean_blob drivers/gpu/drm/ast/ast_dp501.c
-clean_kconfig drivers/gpu/drm/ast/Kconfig 'DRM_AST'
-clean_mk CONFIG_DRM_AST drivers/gpu/drm/ast/Makefile
-
-announce DRM_NOUVEAU - "Nouveau (nVidia) cards"
-reject_firmware drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/falcon.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/falcon.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_kconfig drivers/gpu/drm/nouveau/Kconfig 'DRM_NOUVEAU'
-clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile
-
-announce DRM_MGA - "Matrox g200/g400"
-drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw
-drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw
-reject_firmware drivers/gpu/drm/mga/mga_warp.c
-clean_blob drivers/gpu/drm/mga/mga_warp.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA'
-clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
-
-announce DRM_MSM - "MSM DRM"
-reject_firmware drivers/gpu/drm/msm/adreno/adreno_gpu.c
-clean_blob drivers/gpu/drm/msm/adreno/adreno_gpu.c
-clean_kconfig divers/gpu/drm/msm/Kconfig 'DRM_MSM'
-clean_mk CONFIG_DRM_MSM drivers/gpu/drm/msm/Makefile
-
-announce DRM_R128 - "ATI Rage 128"
-drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin
-reject_firmware drivers/gpu/drm/r128/r128_cce.c
-clean_blob drivers/gpu/drm/r128/r128_cce.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128'
-clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile
-
-announce DRM_RADEON - "ATI Radeon"
-drop_fw_file firmware/radeon/R100_cp.bin.ihex firmware/radeon/R100_cp.bin
-drop_fw_file firmware/radeon/R200_cp.bin.ihex firmware/radeon/R200_cp.bin
-drop_fw_file firmware/radeon/R300_cp.bin.ihex firmware/radeon/R300_cp.bin
-drop_fw_file firmware/radeon/R420_cp.bin.ihex firmware/radeon/R420_cp.bin
-drop_fw_file firmware/radeon/R520_cp.bin.ihex firmware/radeon/R520_cp.bin
-drop_fw_file firmware/radeon/R600_me.bin.ihex firmware/radeon/R600_me.bin
-drop_fw_file firmware/radeon/R600_pfp.bin.ihex firmware/radeon/R600_pfp.bin
-drop_fw_file firmware/radeon/RS600_cp.bin.ihex firmware/radeon/RS600_cp.bin
-drop_fw_file firmware/radeon/RS690_cp.bin.ihex firmware/radeon/RS690_cp.bin
-drop_fw_file firmware/radeon/RS780_me.bin.ihex firmware/radeon/RS780_me.bin
-drop_fw_file firmware/radeon/RS780_pfp.bin.ihex firmware/radeon/RS780_pfp.bin
-drop_fw_file firmware/radeon/RV610_me.bin.ihex firmware/radeon/RV610_me.bin
-drop_fw_file firmware/radeon/RV610_pfp.bin.ihex firmware/radeon/RV610_pfp.bin
-drop_fw_file firmware/radeon/RV620_me.bin.ihex firmware/radeon/RV620_me.bin
-drop_fw_file firmware/radeon/RV620_pfp.bin.ihex firmware/radeon/RV620_pfp.bin
-drop_fw_file firmware/radeon/RV630_me.bin.ihex firmware/radeon/RV630_me.bin
-drop_fw_file firmware/radeon/RV630_pfp.bin.ihex firmware/radeon/RV630_pfp.bin
-drop_fw_file firmware/radeon/RV635_me.bin.ihex firmware/radeon/RV635_me.bin
-drop_fw_file firmware/radeon/RV635_pfp.bin.ihex firmware/radeon/RV635_pfp.bin
-drop_fw_file firmware/radeon/RV670_me.bin.ihex firmware/radeon/RV670_me.bin
-drop_fw_file firmware/radeon/RV670_pfp.bin.ihex firmware/radeon/RV670_pfp.bin
-drop_fw_file firmware/radeon/RV710_me.bin.ihex firmware/radeon/RV710_me.bin
-drop_fw_file firmware/radeon/RV710_pfp.bin.ihex firmware/radeon/RV710_pfp.bin
-drop_fw_file firmware/radeon/RV730_me.bin.ihex firmware/radeon/RV730_me.bin
-drop_fw_file firmware/radeon/RV730_pfp.bin.ihex firmware/radeon/RV730_pfp.bin
-drop_fw_file firmware/radeon/RV770_me.bin.ihex firmware/radeon/RV770_me.bin
-drop_fw_file firmware/radeon/RV770_pfp.bin.ihex firmware/radeon/RV770_pfp.bin
-reject_firmware drivers/gpu/drm/radeon/radeon_cp.c
-clean_blob drivers/gpu/drm/radeon/radeon_cp.c
-reject_firmware drivers/gpu/drm/radeon/r100.c
-clean_blob drivers/gpu/drm/radeon/r100.c
-reject_firmware drivers/gpu/drm/radeon/r600.c
-clean_blob drivers/gpu/drm/radeon/r600.c
-reject_firmware drivers/gpu/drm/radeon/r600_cp.c
-clean_blob drivers/gpu/drm/radeon/r600_cp.c
-reject_firmware drivers/gpu/drm/radeon/ni.c
-clean_blob drivers/gpu/drm/radeon/ni.c
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
-reject_firmware drivers/gpu/drm/radeon/cik.c
-clean_blob drivers/gpu/drm/radeon/cik.c
-reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c
-clean_blob drivers/gpu/drm/radeon/radeon_uvd.c
-reject_firmware drivers/gpu/drm/radeon/radeon_vce.c
-clean_blob drivers/gpu/drm/radeon/radeon_vce.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON'
-clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile
-
-#######
-# dma #
-#######
-
-announce IMX_SDMA - "i.MX SDMA support"
-reject_firmware drivers/dma/imx-sdma.c
-clean_blob arch/arm/mach-imx/mm-imx25.c
-clean_blob arch/arm/mach-imx/mm-imx3.c
-clean_blob arch/arm/mach-imx/mm-imx5.c
-clean_blob arch/arm/boot/dts/imx25.dtsi
-clean_blob arch/arm/boot/dts/imx35.dtsi
-clean_blob arch/arm/boot/dts/imx50.dtsi
-clean_blob arch/arm/boot/dts/imx51.dtsi
-clean_blob arch/arm/boot/dts/imx53.dtsi
-clean_blob arch/arm/boot/dts/imx53-tx53.dtsi
-clean_blob arch/arm/boot/dts/imx6qdl.dtsi
-clean_blob arch/arm/boot/dts/imx6sl.dtsi
-clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
-clean_kconfig drivers/dma/Kconfig 'IMX_SDMA'
-clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile
-
-#########
-# Media #
-#########
-
-# media/tuner
-
-announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners"
-undefault_firmware 'XC\(2028\|3028L\)' \
-  drivers/media/tuners/tuner-xc2028.h \
-  drivers/media/pci/saa7134/saa7134-cards.c \
-  drivers/media/pci/ivtv/ivtv-driver.c \
-  drivers/media/pci/cx18/cx18-driver.c \
-  drivers/media/pci/cx18/cx18-dvb.c \
-  drivers/media/pci/cx23885/cx23885-dvb.c \
-  drivers/media/pci/cx23885/cx23885-video.c \
-  drivers/media/pci/cx88/cx88-dvb.c \
-  drivers/media/pci/cx88/cx88-cards.c \
-  drivers/media/usb/em28xx/em28xx-cards.c \
-  drivers/media/usb/dvb-usb/dib0700_devices.c \
-  drivers/media/usb/dvb-usb/cxusb.c
-reject_firmware drivers/media/tuners/tuner-xc2028.c
-clean_blob drivers/media/tuners/tuner-xc2028.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC2028'
-clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/tuners/Makefile
-
-announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards"
-clean_blob drivers/media/usb/tm6000/tm6000-cards.c
-clean_kconfig drivers/media/usb/tm6000/Kconfig 'VIDEO_TM6000_DVB'
-clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/usb/tm6000/Makefile
-
-announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner"
-undefault_firmware 'XC4000' drivers/media/tuners/xc4000.c
-maybe_reject_firmware drivers/media/tuners/xc4000.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC4000'
-clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/tuners/Makefile
-
-announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner"
-undefault_firmware 'XC5000' \
-  drivers/media/usb/cx231xx/cx231xx-cards.c
-reject_firmware drivers/media/tuners/xc5000.c
-clean_blob drivers/media/tuners/xc5000.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC5000'
-clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/tuners/Makefile
-
-announce DVB_USB - "Support for various USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dvb-usb-firmware.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB'
-clean_mk CONFIG_DVB_USB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_V2 - "Support for various USB DVB devices v2"
-reject_firmware drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_V2'
-clean_mk CONFIG_DVB_USB_V2 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
-reject_firmware drivers/media/common/b2c2/flexcop-fe-tuner.c
-
-announce DVB_BT8XX - "BT8xx based PCI cards"
-reject_firmware drivers/media/pci/bt8xx/dvb-bt8xx.c
-
-announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)"
-clean_blob drivers/media/usb/dvb-usb/a800.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_A800'
-clean_mk CONFIG_DVB_USB_A800 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support"
-clean_file drivers/media/usb/dvb-usb/af9005-script.h
-clean_sed '
-s,^	deb_info("load init script\\n");$,	{\n		err("Missing Free init script\\n");\n		return scriptlen = ret = -EINVAL;\n		,;
-' drivers/media/usb/dvb-usb/af9005-fe.c 'report missing Free init script'
-clean_blob drivers/media/usb/dvb-usb/af9005-fe.c
-clean_blob drivers/media/usb/dvb-usb/af9005.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AF9005'
-clean_mk CONFIG_DVB_USB_AF9005 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9015'
-clean_mk CONFIG_DVB_USB_AF9015 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9035'
-clean_mk CONFIG_DVB_USB_AF9035 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/az6007.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AZ6007'
-clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support"
-clean_blob drivers/media/usb/dvb-usb/az6027.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AZ6027'
-clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support"
-clean_blob drivers/media/usb/dvb-usb/cxusb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_CXUSB'
-clean_mk CONFIG_DVB_USB_CXUSB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_core.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIB0700'
-clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB'
-clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mc.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC'
-clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/digitv.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIGITV'
-clean_mk CONFIG_DVB_USB_DIGITV drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)"
-clean_blob drivers/media/usb/dvb-usb/dtt200u.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DTT200U'
-clean_mk CONFIG_DVB_USB_DTT200U drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/dw2102.c
-clean_blob drivers/media/usb/dvb-usb/dw2102.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DW2102'
-clean_mk CONFIG_DVB_USB_DW2102 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.h
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_EC168'
-clean_mk CONFIG_DVB_USB_EC168 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support"
-reject_firmware drivers/media/usb/dvb-usb/gp8psk.c
-clean_blob drivers/media/usb/dvb-usb/gp8psk.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_GP8PSK'
-clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_blob drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_file Documentation/dvb/lmedm04.txt
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_LME2510'
-clean_mk CONFIG_DVB_USB_LME2510 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/m920x.c
-clean_blob drivers/media/usb/dvb-usb/m920x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_M920X'
-clean_mk CONFIG_DVB_USB_M920X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/nova-t-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_NOVA_T_USB2'
-clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver"
-reject_firmware drivers/media/usb/dvb-usb/opera1.c
-clean_blob drivers/media/usb/dvb-usb/opera1.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_OPERA1'
-clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/technisat-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TECHNISAT_USB2'
-clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/ttusb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TTUSB2'
-clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/umt-010.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_UMT_010'
-clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp702x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP702X'
-clean_mk CONFIG_DVB_USB_VP702X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp7045.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP7045'
-clean_mk CONFIG_DVB_USB_VP7045 drivers/media/usb/dvb-usb/Makefile
-
-# dvb/frontends
-
-announce DVB_AF9013 - "Afatech AF9013 demodulator"
-reject_firmware drivers/media/dvb-frontends/af9013.c
-clean_blob 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
-
-announce DVB_BCM3510 - "Broadcom BCM3510"
-undefault_firmware 'BCM3510' drivers/media/dvb-frontends/bcm3510.c
-reject_firmware drivers/media/dvb-frontends/bcm3510.c
-reject_firmware drivers/media/dvb-frontends/bcm3510.h
-clean_sed '
-/You.ll need a firmware/,/dvb-fe-bcm/d;
-' drivers/media/dvb-frontends/bcm3510.c \
-  "removed non-Free firmware notes"
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_BCM3510'
-clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24116 - "Conexant CX24116 based"
-undefault_firmware CX24116 drivers/media/dvb-frontends/cx24116.c
-reject_firmware drivers/media/dvb-frontends/cx24116.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24116'
-clean_mk CONFIG_DVB_CX24116 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24117 - "Conexant CX24117 based"
-undefault_firmware CX24117 drivers/media/dvb-frontends/cx24117.c
-reject_firmware drivers/media/dvb-frontends/cx24117.c
-clean_blob drivers/media/dvb-frontends/cx24117.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24117'
-clean_mk CONFIG_DVB_CX24117 drivers/media/dvb-frontends/Makefile
-
-announce DVB_DS3000 - "Montage Tehnology DS3000 based"
-undefault_firmware 'DS3000' \
-  drivers/media/dvb-frontends/ds3000.c
-reject_firmware drivers/media/dvb-frontends/ds3000.c
-clean_blob drivers/media/dvb-frontends/ds3000.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DS3000'
-clean_mk CONFIG_DVB_DS3000 drivers/media/dvb-frontends/Makefile
-
-announce DVB_DRX39XYJ - "Micronas DRX-J demodulator"
-reject_firmware drivers/media/dvb-frontends/drx39xyj/drxj.c
-clean_blob drivers/media/dvb-frontends/drx39xyj/drxj.c
-clean_kconfig drivers/media/dvb-frontends/drx39xyj/Kconfig 'DVB_DRX39XYJ'
-clean_mk CONFIG_DVB_DRX39XYJ drivers/media/dvb-frontends/drx39xyj/Makefile
-
-announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
-reject_firmware drivers/media/dvb-frontends/lgs8gxx.c
-clean_blob drivers/media/dvb-frontends/lgs8gxx.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_LGS8GXX'
-clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb-frontends/Makefile
-
-announce DVB_M88DS3103 - "Montage M88DS3103"
-reject_firmware drivers/media/dvb-frontends/m88ds3103.c
-clean_blob drivers/media/dvb-frontends/m88ds3103.c
-clean_blob drivers/media/dvb-frontends/m88ds3103_priv.h
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_M88DS3103'
-clean_mk CONFIG_DVB_M88DS3103 drivers/media/dvb-frontends/Makefile
-
-announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based"
-undefault_firmware 'NXT200[24]' drivers/media/dvb-frontends/nxt200x.c
-reject_firmware drivers/media/dvb-frontends/nxt200x.c
-clean_blob drivers/media/dvb-frontends/nxt200x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_NXT200X'
-clean_mk CONFIG_DVB_NXT200X drivers/media/dvb-frontends/Makefile
-
-announce DVB_OR51132 - "Oren OR51132 based"
-reject_firmware drivers/media/dvb-frontends/or51132.c
-clean_blob drivers/media/dvb-frontends/or51132.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51132'
-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_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51211'
-clean_mk CONFIG_DVB_OR51211 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SI2168 - "Silicon Labs Si2168"
-reject_firmware drivers/media/dvb-frontends/si2168.c
-clean_blob drivers/media/dvb-frontends/si2168.c
-clean_blob drivers/media/dvb-frontends/si2168_priv.h
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SI2168'
-clean_mk CONFIG_DVB_SI2168 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP8870 - "Spase sp8870"
-undefault_firmware 'SP8870' drivers/media/dvb-frontends/sp8870.c
-reject_firmware drivers/media/dvb-frontends/sp8870.c
-reject_firmware drivers/media/dvb-frontends/sp8870.h
-clean_blob drivers/media/dvb-frontends/sp8870.c
-clean_kconfig drivers/media/dvb-frontends 'DVB_SP8870'
-clean_mk CONFIG_DVB_SP8870 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP887X - "Spase sp887x based"
-undefault_firmware 'SP887X' drivers/media/dvb-frontends/sp887x.c
-reject_firmware drivers/media/dvb-frontends/sp887x.c
-reject_firmware drivers/media/dvb-frontends/sp887x.h
-clean_blob drivers/media/dvb-frontends/sp887x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SP887X'
-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'
-clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H"
-undefault_firmware 'TDA1004[56]' drivers/media/dvb-frontends/tda1004x.c
-reject_firmware drivers/media/dvb-frontends/tda1004x.c
-reject_firmware drivers/media/dvb-frontends/tda1004x.h
-clean_blob drivers/media/dvb-frontends/tda1004x.c
-clean_kconfig drivers/media/dvb-frontends 'DVB_TDA1004X'
-clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA10071 - "NXP TDA10071"
-reject_firmware drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071_priv.h
-clean_kconfig drivers/media/dvb-frontends 'DVB_TDA10071'
-clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile
-
-# dvb
-
-announce DVB_AS102 - "Abilis AS102 DVB receiver"
-reject_firmware drivers/staging/media/as102/as102_fw.c
-clean_blob drivers/staging/media/as102/as102_fw.c
-clean_kconfig drivers/staging/media/as102/Kconfig 'DVB_AS102'
-clean_mk CONFIG_DVB_AS102 drivers/staging/media/as102/Makefile
-
-announce DVB_AV7110 - "AV7110 cards"
-reject_firmware drivers/media/pci/ttpci/av7110.c
-clean_blob drivers/media/pci/ttpci/av7110.c
-clean_kconfig drivers/media/pci/ttpci/Kconfig 'DVB_AV7110'
-clean_mk CONFIG_DVB_AV7110 drivers/media/pci/ttpci/Makefile
-
-announce DVB_BUDGET - "Budget cards"
-reject_firmware drivers/media/pci/ttpci/budget.c
-reject_firmware drivers/media/dvb-frontends/tdhd1.h
-
-announce DVB_BUDGET_AV - "Budget cards with analog video inputs"
-reject_firmware drivers/media/pci/ttpci/budget-av.c
-
-announce DVB_BUDGET_CI - "Budget cards with onboard CI connector"
-reject_firmware drivers/media/pci/ttpci/budget-ci.c
-
-announce DVB_DRXD - "Micronas DRXD driver"
-reject_firmware drivers/media/dvb-frontends/drxd_hard.c
-clean_blob drivers/media/dvb-frontends/drxd_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXD'
-clean_mk CONFIG_DVB_DRXD drivers/media/dvb-frontends/Makefile
-
-announce DVB_DRXK - "Micronas DRXK based"
-reject_firmware drivers/media/dvb-frontends/drxk_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXK'
-clean_mk CONFIG_DVB_DRXK drivers/media/dvb-frontends/Makefile
-
-announce DVB_NGENE - "Micronas nGene support"
-reject_firmware drivers/media/pci/ngene/ngene-core.c
-clean_blob drivers/media/pci/ngene/ngene-core.c
-clean_kconfig drivers/media/pci/ngene/Kconfig 'DVB_NGENE'
-clean_mk CONFIG_DVB_NGENE drivers/media/pci/ngene/Makefile
-
-announce DVB_PLUTO2 - "Pluto2 cards"
-reject_firmware drivers/media/pci/pluto2/pluto2.c
-
-announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver"
-reject_firmware drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.h
-clean_kconfig drivers/media/common/siano/Kconfig 'SMS_SIANO_MDTV'
-clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/common/siano/Makefile
-
-announce SMS_USB_DRV - "Siano's USB interface support"
-reject_firmware drivers/media/usb/siano/smsusb.c
-clean_blob drivers/media/usb/siano/smsusb.c
-clean_kconfig drivers/media/usb/siano/Kconfig 'SMS_USB_DRV'
-clean_mk CONFIG_SMS_USB_DRV drivers/media/usb/siano/Makefile
-
-announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices"
-drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin
-reject_firmware drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_blob drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_kconfig drivers/media/usb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET'
-clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/usb/ttusb-budget/Makefile
-
-announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices"
-reject_firmware drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob Documentation/dvb/ttusb-dec.txt
-clean_kconfig drivers/media/usb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC'
-clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/usb/ttusb-dec/Makefile
-
-# video
-
-announce VIDEO_BT848 - "BT848 Video For Linux"
-reject_firmware drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob Documentation/video4linux/bttv/README
-clean_kconfig drivers/media/pci/bt8xx/Kconfig 'VIDEO_BT848'
-clean_mk CONFIG_VIDEO_BT848 drivers/media/pci/bt8xx/Makefile
-
-announce VIDEO_CODA - "Chips&Media Coda multi-standard codec IP"
-reject_firmware drivers/media/platform/coda.c
-clean_blob drivers/media/platform/coda.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_CODA'
-clean_mk CONFIG_VIDEO_CODA drivers/media/platform/Makefile
-
-announce VIDEO_CPIA2 - "CPiA2 Video For Linux"
-clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin
-reject_firmware drivers/media/usb/cpia2/cpia2_core.c
-clean_blob drivers/media/usb/cpia2/cpia2_core.c
-clean_kconfig drivers/media/usb/cpia2/Kconfig 'VIDEO_CPIA2'
-clean_mk CONFIG_VIDEO_CPIA2 drivers/media/usb/cpia2/Makefile
-
-announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support"
-reject_firmware drivers/media/pci/cx18/cx18-av-firmware.c
-reject_firmware drivers/media/pci/cx18/cx18-dvb.c
-reject_firmware drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-av-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-dvb.c
-clean_blob drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-driver.c
-clean_kconfig drivers/media/pci/cx18/Kconfig 'VIDEO_CX18'
-clean_mk CONFIG_VIDEO_CX18 drivers/media/pci/cx18/Makefile
-
-announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support"
-reject_firmware drivers/media/usb/cx231xx/cx231xx-417.c
-clean_blob drivers/media/usb/cx231xx/cx231xx-417.c
-clean_kconfig drivers/media/usb/cx231xx/Kconfig 'VIDEO_CX231XX'
-clean_mk CONFIG_VIDEO_CX231XX drivers/media/usb/cx231xx/Makefile
-
-announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support"
-reject_firmware drivers/media/pci/cx23885/cx23885-417.c
-clean_blob drivers/media/pci/cx23885/cx23885-417.c
-reject_firmware drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-video.c
-clean_kconfig drivers/media/pci/cx23885/Kconfig 'VIDEO_CX23885'
-clean_mk CONFIG_VIDEO_CX23885 drivers/media/pci/cx23885/Makefile
-
-announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders"
-reject_firmware drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_blob drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_kconfig drivers/media/i2c/cx25840/Kconfig 'VIDEO_CX25840'
-clean_mk CONFIG_VIDEO_CX25840 drivers/media/i2c/cx25840/Makefile
-
-announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)"
-reject_firmware drivers/media/pci/cx88/cx88-blackbird.c
-clean_kconfig drivers/media/pci/cx88/Kconfig 'VIDEO_CX88_BLACKBIRD'
-clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/pci/cx88/Makefile
-
-announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards"
-clean_blob drivers/media/usb/em28xx/em28xx-dvb.c
-clean_kconfig drivers/media/usb/em28xx/Kconfig 'VIDEO_EM28XX_DVB'
-clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/usb/em28xx/Makefile
-
-announce VIDEO_EXYNOS4_FIMC_IS - "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
-reject_firmware drivers/media/platform/exynos4-is/fimc-is.c
-clean_blob drivers/media/platform/exynos4-is/fimc-is.h
-clean_kconfig drivers/media/platform/exynos4-is/Kconfig 'VIDEO_EXYNOS4_FIMC_IS'
-clean_mk CONFIG_VIDEO_EXYNOS4_FIMC_IS drivers/media/platform/exynos4-is/Makefile
-
-announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support"
-reject_firmware drivers/media/pci/ivtv/ivtv-firmware.c
-clean_blob drivers/media/pci/ivtv/ivtv-firmware.c
-clean_kconfig drivers/media/pci/ivtv/Kconfig 'VIDEO_IVTV'
-clean_mk CONFIG_VIDEO_IVTV drivers/media/pci/ivtv/Makefile
-
-announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support"
-reject_firmware drivers/media/usb/pvrusb2/pvrusb2-hdw.c
-clean_blob drivers/media/usb/pvrusb2/pvrusb2-devattr.c
-clean_kconfig drivers/media/usb/pvrusb2/Kconfig 'VIDEO_PVRUSB2'
-clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/usb/pvrusb2/Makefile
-
-announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above"
-clean_blob include/media/cx2341x.h
-
-announce VIDEO_GO7007 - "Go 7007 support"
-reject_firmware drivers/staging/media/go7007/go7007-driver.c
-clean_blob drivers/staging/media/go7007/go7007-driver.c
-reject_firmware drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/saa7134-go7007.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007'
-clean_mk CONFIG_VIDEO_GO7007 drivers/staging/media/go7007/Makefile
-
-announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support"
-reject_firmware drivers/staging/media/go7007/go7007-loader.c
-clean_blob drivers/staging/media/go7007/go7007-loader.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007_USB_S2250_BOARD'
-clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/staging/media/go7007/Makefile
-
-announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards"
-reject_firmware drivers/media/pci/saa7134/saa7134-dvb.c
-clean_kconfig drivers/media/pci/saa7134/Kconfig 'VIDEO_SAA7134_DVB'
-clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/pci/saa7134/Makefile
-
-announce VIDEO_SAA7164 - "NXP SAA7164 support"
-reject_firmware drivers/media/pci/saa7164/saa7164-fw.c
-clean_blob drivers/media/pci/saa7164/saa7164-fw.c
-clean_kconfig drivers/media/pci/saa7164/Kconfig 'VIDEO_SAA7164'
-clean_mk CONFIG_VIDEO_SAA7164 drivers/media/pci/saa7164/Makefile
-
-announce VIDEO_S5C73M3 - "Samsung S5C73M3 sensor support"
-reject_firmware drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_blob drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5C73M3'
-clean_mk CONFIG_VIDEO_S5C73M3 drivers/media/i2c/s5c73m3/Makefile
-
-announce VIDEO_S5K4ECGX - "Samsung S5K4ECGX sensor support"
-reject_firmware drivers/media/i2c/s5k4ecgx.c
-clean_blob drivers/media/i2c/s5k4ecgx.c
-clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5K4ECGX'
-clean_mk CONFIG_VIDEO_S5K4ECGX drivers/media/i2c/Makefile
-
-announce VIDEO_S5K5BAF - "Samsung S5K5BAF sensor support"
-reject_firmware drivers/media/i2c/s5k5baf.c
-clean_blob drivers/media/i2c/s5k5baf.c
-clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5K5BAF'
-clean_mk CONFIG_VIDEO_S5K5BAF drivers/media/i2c/Makefile
-
-announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec"
-reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
-clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_SAMSUNG_S5P_MFC'
-clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/platform/s5p-mfc/Makefile
-
-announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support"
-reject_firmware drivers/media/usb/tlg2300/pd-main.c
-clean_blob drivers/media/usb/tlg2300/pd-main.c
-clean_kconfig drivers/media/usb/tlg2300/Kconfig 'VIDEO_TLG2300'
-clean_mk CONFIG_VIDEO_TLG2300 drivers/media/usb/tlg2300/Makefile
-
-announce USB_S2255 - "USB Sensoray 2255 video capture device"
-reject_firmware drivers/media/usb/s2255/s2255drv.c
-clean_blob drivers/media/usb/s2255/s2255drv.c
-clean_kconfig drivers/media/usb/Kconfig 'USB_S2255'
-clean_mk CONFIG_USB_S2255 drivers/media/usb/s2255/Makefile
-
-announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam"
-drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw
-reject_firmware drivers/media/usb/gspca/vicam.c
-clean_blob drivers/media/usb/gspca/vicam.c
-clean_kconfig drivers/media/usb/gspca/Kconfig 'USB_GSPCA_VICAM'
-clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/usb/gspca/Makefile
-
-announce VIDEO_TI_VPE - "TI VPE (Video Processing Engine) driver"
-reject_firmware drivers/media/platform/ti-vpe/vpdma.c
-clean_blob drivers/media/platform/ti-vpe/vpdma.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_TI_VPE'
-clean_mk CONFIG_VIDEO_TI_VPE drivers/media/platform/ti-vpe/Makefile
-
-# radio
-
-announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio"
-reject_firmware drivers/media/radio/radio-wl1273.c
-clean_blob drivers/media/radio/radio-wl1273.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL1273'
-clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile
-
-announce RADIO_WL128X - "Texas Instruments WL128x FM Radio"
-clean_blob drivers/media/radio/wl128x/fmdrv_common.h
-reject_firmware drivers/media/radio/wl128x/fmdrv_common.c
-clean_blob drivers/media/radio/wl128x/fmdrv_common.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL128X'
-clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile
-
-#######
-# net #
-#######
-
-announce ACENIC - "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit"
-drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin
-drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin
-reject_firmware drivers/net/ethernet/alteon/acenic.c
-clean_blob drivers/net/ethernet/alteon/acenic.c
-clean_kconfig drivers/net/ethernet/alteon/Kconfig 'ACENIC'
-clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile
-
-announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support"
-clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin
-clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin
-reject_firmware drivers/net/ethernet/adaptec/starfire.c
-clean_blob drivers/net/ethernet/adaptec/starfire.c
-clean_kconfig drivers/net/ethernet/adaptec/Kconfig 'ADAPTEC_STARFIRE'
-clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile
-
-announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support"
-clean_blob drivers/net/ethernet/brocade/bna/bnad.c
-clean_blob drivers/net/ethernet/brocade/bna/cna.h
-reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c
-reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c
-clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig 'BNA'
-clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile
-
-announce BNX2 - "Broadcom NetXtremeII"
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1a.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2.c
-clean_blob drivers/net/ethernet/broadcom/bnx2.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2'
-clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile
-
-announce BNX2X - "Broadcom NetXtremeII 10Gb support"
-drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^#include "bnx2x_init\.h"/,/^$/{
-  /^$/i\
-#define bnx2x_init_block(bp, start, end) \\\
-  return (printk(KERN_ERR "%s: Missing Free firmware\\n", bp->dev->name),\\\
-	  -EINVAL)
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 'report missing Free firmware'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^int bnx2x_compare_fw_ver/,/^}$/{
-  /^		u32 my_fw = /i\
-		/*(DEBLOBBED)*/
-  /^		u32 my_fw = /,/<< 24);/d;
-  /^		u32 loaded_fw = /,/^$/{
-    /^$/i\
-\
-		u32 my_fw = ~loaded_fw;
-  }
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 'fail already-loaded test'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
-clean_sed '
-/static void bnx2x_init_wr_wb/{
-  i\
-extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32);
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2X'
-clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile
-
-announce CASSINI - "Sun Cassini"
-drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin
-reject_firmware drivers/net/ethernet/sun/cassini.c
-clean_blob drivers/net/ethernet/sun/cassini.c
-clean_kconfig drivers/net/ethernet/sun/Kconfig 'CASSINI'
-clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile
-
-announce CHELSIO_T3 - "Chelsio AEL 2005 support"
-drop_fw_file firmware/cxgb3/t3b_psram-1.1.0.bin.ihex firmware/cxgb3/t3b_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/t3c_psram-1.1.0.bin.ihex firmware/cxgb3/t3c_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/ael2005_opt_edc.bin.ihex firmware/cxgb3/ael2005_opt_edc.bin
-drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_edc.bin
-drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin
-reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T3'
-clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile
-
-announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support"
-reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T4'
-clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile
-
-announce E100 - "Intel PRO/100+"
-drop_fw_file firmware/e100/d101m_ucode.bin.ihex firmware/e100/d101m_ucode.bin
-drop_fw_file firmware/e100/d101s_ucode.bin.ihex firmware/e100/d101s_ucode.bin
-drop_fw_file firmware/e100/d102e_ucode.bin.ihex firmware/e100/d102e_ucode.bin
-reject_firmware drivers/net/ethernet/intel/e100.c
-clean_sed '
-/^static const struct firmware \*e100_\(reject\|request\)_firmware(/,/^}$/{
-  s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;:
-}' drivers/net/ethernet/intel/e100.c 'proceed without firmware'
-clean_blob drivers/net/ethernet/intel/e100.c
-clean_kconfig drivers/net/ethernet/intel/Kconfig 'E100'
-clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile
-
-announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device."
-clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img
-reject_firmware drivers/staging/ft1000/TODO
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h
-clean_sed '
-/^static int ft1000_reset_card/,/^}$/ {
-  /card_bootload/i\
-		return /*(DEBLOBBED)*/ false;
-}
-' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \
-  'disabled non-Free firmware-loading machinery'
-reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_PCMCIA'
-clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile
-
-announce FT1000_USB - "Driver for ft1000 USB devices."
-clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img
-reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_USB'
-clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile
-
-announce MYRI_SBUS - "MyriCOM Gigabit Ethernet"
-drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin
-
-announce MYRI10GE - "Myricom Myri-10G Ethernet support"
-reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_kconfig drivers/net/ethernet/myricom/Kconfig 'MYRI10GE'
-clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile
-
-announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC"
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'NETXEN_NIC'
-clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile
-
-announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support"
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'QLCNIC'
-clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile
-
-announce R8169 - "Realtek 8169 gigabit ethernet support"
-reject_firmware drivers/net/ethernet/realtek/r8169.c
-clean_blob drivers/net/ethernet/realtek/r8169.c
-clean_kconfig drivers/net/ethernet/realtek/Kconfig R8169
-clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile
-
-announce SLICOSS - "Alacritech Gigabit IS-NIC cards"
-reject_firmware drivers/staging/slicoss/slicoss.c
-clean_blob drivers/staging/slicoss/slicoss.c
-clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS'
-clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile
-
-announce SPIDER_NET - "Spider Gigabit Ethernet driver"
-reject_firmware drivers/net/ethernet/toshiba/spider_net.c
-clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \
-  drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes'
-clean_blob drivers/net/ethernet/toshiba/spider_net.c
-clean_blob drivers/net/ethernet/toshiba/spider_net.h
-clean_kconfig drivers/net/ethernet/toshiba/Kconfig 'SPIDER_NET'
-clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile
-
-announce TEHUTI - "Tehuti Networks 10G Ethernet"
-drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin
-reject_firmware drivers/net/ethernet/tehuti/tehuti.c
-clean_blob drivers/net/ethernet/tehuti/tehuti.c
-clean_kconfig drivers/net/ethernet/tehuti/Kconfig 'TEHUTI'
-clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile
-
-announce TIGON3 - "Broadcom Tigon3"
-drop_fw_file firmware/tigon/tg3.bin.ihex firmware/tigon/tg3.bin
-drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin
-drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin
-reject_firmware drivers/net/ethernet/broadcom/tg3.c
-clean_blob drivers/net/ethernet/broadcom/tg3.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'TIGON3'
-clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile
-
-announce TYPHOON - "3cr990 series Typhoon"
-drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin
-reject_firmware drivers/net/ethernet/3com/typhoon.c
-clean_blob drivers/net/ethernet/3com/typhoon.c
-clean_kconfig drivers/net/ethernet/3com/Kconfig 'TYPHOON'
-clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile
-
-announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter"
-reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_kconfig drivers/net/ethernet/neterion/Kconfig 'VXGE'
-clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile
-
-# appletalk
-
-announce COPS - "COPS LocalTalk PC"
-clean_sed '
-/sizeof(\(ff\|lt\)drv_code)/{
-  i\
-		printk(KERN_INFO "%s: Missing Free firmware.\\n", dev->name);\
-		return;
-}
-/\(ff\|lt\)drv_code/d;
-' drivers/net/appletalk/cops.c 'report missing Free firmware'
-clean_blob drivers/net/appletalk/cops.c
-clean_file drivers/net/appletalk/cops_ffdrv.h
-clean_file drivers/net/appletalk/cops_ltdrv.h
-clean_kconfig drivers/net/appletalk/Kconfig 'COPS'
-clean_mk CONFIG_COPS drivers/net/appletalk/Makefile
-
-# hamradio
-
-announce YAM - "YAM driver for AX.25"
-drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin
-drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin
-reject_firmware drivers/net/hamradio/yam.c
-clean_blob drivers/net/hamradio/yam.c
-clean_kconfig drivers/net/hamradio/Kconfig 'YAM'
-clean_mk CONFIG_YAM drivers/net/hamradio/Makefile
-
-# irda
-
-announce USB_IRDA - "IrDA USB dongles"
-reject_firmware drivers/net/irda/irda-usb.c
-clean_blob drivers/net/irda/irda-usb.c
-clean_kconfig drivers/net/irda/Kconfig 'USB_IRDA'
-clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile
-
-# smsc
-
-announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA"
-drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin
-reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_kconfig drivers/net/ethernet/smsc/Kconfig 'PCMCIA_SMC91C92'
-clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile
-
-# near-field communication
-
-announce NFC_WILINK - "Texas Instruments NFC WiLink driver"
-reject_firmware drivers/nfc/nfcwilink.c
-clean_blob drivers/nfc/nfcwilink.c
-clean_kconfig drivers/nfc/Kconfig 'NFC_WILINK'
-clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile
-
-announce NFC_PN544_I2C - "NFC PN544 i2c support"
-reject_firmware drivers/nfc/pn544/i2c.c
-clean_kconfig drivers/nfs/pn544/Kconfig 'NFC_PN544_I2C'
-clean_mk NFC_PN544_I2C drivers/nfc/pn544/Kconfig
-
-# pcmcia
-
-# CIS files are not software.
-# announce PCCARD - "PCCard (PCMCIA/CardBus) support"
-# reject_firmware drivers/pcmcia/ds.c
-# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
-# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
-
-announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CCFEM556.cis.ihex firmware/cis/3CCFEM556.cis
-# clean_blob drivers/net/pcmcia/3c574_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
-# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CXEM556.cis.ihex firmware/cis/3CXEM556.cis
-# clean_blob drivers/net/pcmcia/3c589_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
-# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis
-drop_fw_file firmware/cis/PCMLM28.cis.ihex firmware/cis/PCMLM28.cis
-drop_fw_file firmware/cis/DP83903.cis.ihex firmware/cis/DP83903.cis
-drop_fw_file firmware/cis/NE2K.cis.ihex firmware/cis/NE2K.cis
-drop_fw_file firmware/cis/tamarack.cis.ihex firmware/cis/tamarack.cis
-drop_fw_file firmware/cis/PE-200.cis.ihex firmware/cis/PE-200.cis
-drop_fw_file firmware/cis/PE520.cis.ihex firmware/cis/PE520.cis
-# clean_blob drivers/net/pcmcia/pcnet_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
-# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
-
-# usb
-
-announce USB_KAWETH - "USB KLSI KL5USB101-based ethernet device support"
-drop_fw_file firmware/kaweth/new_code.bin.ihex firmware/kaweth/new_code.bin
-drop_fw_file firmware/kaweth/new_code_fix.bin.ihex firmware/kaweth/new_code_fix.bin
-drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code.bin
-drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin
-reject_firmware drivers/net/usb/kaweth.c
-clean_blob drivers/net/usb/kaweth.c
-clean_kconfig drivers/net/usb/Kconfig 'USB_KAWETH'
-clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile
-
-# wireless
-
-announce ATMEL "Atmel at76c50x chipset  802.11b support"
-reject_firmware drivers/net/wireless/atmel.c
-clean_blob drivers/net/wireless/atmel.c
-clean_kconfig drivers/net/wireless/Kconfig 'ATMEL'
-clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile
-
-announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards"
-reject_firmware drivers/net/wireless/at76c50x-usb.c
-clean_blob drivers/net/wireless/at76c50x-usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'AT76C50X_USB'
-clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile
-
-announce B43 - "Broadcom 43xx wireless support (mac80211 stack)"
-maybe_reject_firmware drivers/net/wireless/b43/main.c
-clean_sed '
-/^static int b43_upload_microcode(/,/^}$/{
-  /	if (dev->fw\.opensource) {$/i\
-	if (!dev->fw.opensource) {\
-		b43err(dev->wl, "Rejected non-Free firmware\\n");\
-		err = -EOPNOTSUPP;\
-		goto error;\
-	}
-}' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware'
-# Major portions of firmware filenames not deblobbed.
-clean_blob drivers/net/wireless/b43/main.c
-clean_kconfig drivers/net/wireless/b43/Kconfig 'B43'
-clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile
-
-announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)"
-reject_firmware drivers/net/wireless/b43legacy/main.c
-# Major portions of firwmare filenames not deblobbed.
-clean_blob drivers/net/wireless/b43legacy/main.c
-clean_kconfig drivers/net/wireless/b43legacy/Kconfig 'B43LEGACY'
-clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile
-
-announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMSMAC'
-clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile
-
-announce BRCMFMAC - "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/firmware.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC'
-clean_mk CONFIG_BRCMFMAC drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver"
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_SDIO'
-clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver"
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_USB'
-clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)"
-reject_firmware drivers/net/wireless/orinoco/fw.c
-clean_blob drivers/net/wireless/orinoco/fw.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'HERMES'
-clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile
-
-announce ORINOCO_USB - "Agere Orinoco USB support"
-reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c
-clean_blob drivers/net/wireless/orinoco/orinoco_usb.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'ORINOCO_USB'
-clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile
-
-announce WLAGS49_H2 - "Agere Systems HERMES II Wireless PC Card Model 0110"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h2.c
-clean_blob drivers/staging/wlags49_h2/sta_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h2.c
-clean_blob drivers/staging/wlags49_h2/wl_profile.c
-clean_sed '
-  s,\(.*hcf_status = \)dhf_download_fw(.*&fw_image );,//& /*(DEBLOBBED)*/\n\1HCF_ERR_INCOMP_FW;,
-' drivers/staging/wlags49_h2/wl_main.c 'reject built-in non-Free firmware'
-clean_kconfig drivers/staging/wlags49_h2/Kconfig 'WLAGS49_H2'
-clean_mk CONFIG_WLAGS49_H2 drivers/staging/Makefile
-
-announce WLAGS49_H25 - "Linksys Systems HERMES II.5 Wireless-G_CompactFlash_Card"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h25.c
-clean_blob drivers/staging/wlags49_h2/sta_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h25.c
-clean_kconfig drivers/staging/wlags49_h25/Kconfig 'WLAGS49_H25'
-clean_mk CONFIG_WLAGS49_H25 drivers/staging/Makefile
-
-announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2100.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2100'
-clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile
-
-announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2200.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2200'
-clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile
-
-announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection"
-reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945.h
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL3945'
-clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWL4965 - "Intel Wireless WiFi 4965AGN"
-reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965.c
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL4965'
-clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN"
-reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLWIFI'
-clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile
-
-announce IWLDVM - "Intel Wireless WiFi DVM Firmware support"
-clean_blob drivers/net/wireless/iwlwifi/iwl-1000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-2000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-5000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-6000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLDVM'
-clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/Makefile
-
-announce IWLMVM - "Intel Wireless WiFi MVM Firmware support"
-reject_firmware drivers/net/wireless/iwlwifi/mvm/nvm.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-7000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-8000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLMVM'
-clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/Makefile
-
-announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support"
-reject_firmware drivers/net/wireless/libertas/firmware.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS'
-clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_cs.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_CS'
-clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_sdio.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SDIO'
-clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_spi.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SPI'
-clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_usb.c
-clean_blob drivers/net/wireless/libertas/README
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB'
-clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
-reject_firmware drivers/net/wireless/libertas_tf/if_usb.c
-clean_blob drivers/net/wireless/libertas_tf/if_usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB'
-clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile
-
-announce MWIFIEX - "Marvell WiFi-Ex Driver"
-clean_blob drivers/net/wireless/mwifiex/README
-reject_firmware drivers/net/wireless/mwifiex/main.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX'
-clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787"
-clean_blob drivers/net/wireless/mwifiex/sdio.h
-clean_blob drivers/net/wireless/mwifiex/sdio.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_SDIO'
-clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766"
-clean_blob drivers/net/wireless/mwifiex/pcie.h
-clean_blob drivers/net/wireless/mwifiex/pcie.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_PCIE'
-clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797"
-clean_blob drivers/net/wireless/mwifiex/usb.h
-clean_blob drivers/net/wireless/mwifiex/usb.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_USB'
-clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile
-
-announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support"
-reject_firmware drivers/net/wireless/mwl8k.c
-clean_blob drivers/net/wireless/mwl8k.c
-clean_kconfig drivers/net/wireless/Kconfig 'MWL8K'
-clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile
-
-announce AR5523 - "Atheros AR5523 wireless driver support"
-reject_firmware drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.h
-clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig 'AR5523'
-clean_mk CONFIG_AR5523 drivers/net/wireless/ath/ar5523/Makefile
-
-announce ATH6KL - "Atheros ath6kl support"
-reject_firmware drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/core.h
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL'
-clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_SDIO - "Atheros ath6kl SDIO support"
-clean_blob drivers/net/wireless/ath/ath6kl/sdio.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_SDIO'
-clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_USB - "Atheros ath6kl USB support"
-clean_blob drivers/net/wireless/ath/ath6kl/usb.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_USB'
-clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH10K - "Atheros 802.11ac wireless cards support"
-reject_firmware drivers/net/wireless/ath/ath10k/core.c
-clean_blob drivers/net/wireless/ath/ath10k/hw.h
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K'
-clean_mk CONFIG_ATH10K drivers/net/wireless/ath/ath10k/Makefile
-
-announce ATH10K_PCI - "Atheros ath10k PCI support"
-clean_blob drivers/net/wireless/ath/ath10k/pci.c
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K_PCI'
-clean_mk CONFIG_ATH10K_PCI drivers/net/wireless/ath/ath10k/Makefile
-
-announce CW1200 - "CW1200 WLAN support"
-reject_firmware drivers/net/wireless/cw1200/fwio.c
-clean_blob drivers/net/wireless/cw1200/fwio.h
-reject_firmware drivers/net/wireless/cw1200/sta.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200'
-clean_mk CONFIG_CW1200 drivers/net/wireless/cw1200/Makefile
-
-announce CW1200_WLAN_SDIO - "Support SDIO platforms"
-clean_blob drivers/net/wireless/cw1200/cw1200_sdio.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200_WLAN_SDIO'
-clean_mk CONFIG_CW1200_WLAN_SDIO drivers/net/wireless/cw1200/Makefile
-
-announce PRISM2_USB - "Prism2.5/3 USB driver"
-reject_firmware drivers/staging/wlan-ng/prism2fw.c
-clean_blob drivers/staging/wlan-ng/prism2fw.c
-clean_kconfig drivers/staging/wlan-ng/Kconfig PRISM2_USB
-clean_mk CONFIG_PRISM2_USB drivers/staging/wlan-ng/Makefile
-
-announce P54_PCI - "Prism54 PCI support"
-reject_firmware drivers/net/wireless/p54/p54pci.c
-clean_blob drivers/net/wireless/p54/p54pci.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_PCI'
-clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile
-
-announce P54_SPI - "Prism54 SPI (stlc45xx) support"
-# There's support for loading custom 3826.eeprom here, with a default
-# eeprom that is clearly pure data.  Without Free 3826.arm, there's
-# little point in trying to retain the ability to load 3826.eeprom, so
-# we drop it altogether.
-reject_firmware drivers/net/wireless/p54/p54spi.c
-clean_blob drivers/net/wireless/p54/p54spi.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_SPI'
-clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile
-
-announce P54_USB - "Prism54 USB support"
-reject_firmware drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.h
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB'
-clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile
-
-announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus"
-reject_firmware drivers/net/wireless/prism54/islpci_dev.c
-clean_blob drivers/net/wireless/prism54/islpci_dev.c
-clean_kconfig drivers/net/wireless/Kconfig 'PRISM54'
-clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile
-
-announce RSI_91X - "Redpine Signals Inc 91x WLAN driver support"
-clean_blob drivers/net/wireless/rsi/rsi_common.h
-clean_kconfig drivers/net/wireless/rsi/Kconfig 'RSI_91X'
-clean_mk CONFIG_RSI_91X drivers/net/wireless/rsi/Makefile
-
-announce RSI_SDIO - "Redpine Signals SDIO bus support"
-reject_firmware drivers/net/wireless/rsi/rsi_91x_sdio_ops.c
-clean_blob drivers/net/wireless/rsi/rsi_91x_sdio.c
-clean_kconfig drivers/net/wireless/rsi/Kconfig 'RSI_SDIO'
-clean_mk CONFIG_RSI_SDIO drivers/net/wireless/rsi/Makefile
-
-announce RSI_USB - "Redpine Signals USB bus support"
-reject_firmware drivers/net/wireless/rsi/rsi_91x_usb_ops.c
-clean_blob drivers/net/wireless/rsi/rsi_91x_usb.c
-clean_kconfig drivers/net/wireless/rsi/Kconfig 'RSI_USB'
-clean_mk CONFIG_RSI_USB drivers/net/wireless/rsi/Makefile
-
-announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support"
-reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE'
-clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile
-
-announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt61pci.h
-clean_blob drivers/net/wireless/rt2x00/rt61pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT61PCI'
-clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT73USB - "Ralink rt2501/rt73 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt73usb.h
-clean_blob drivers/net/wireless/rt2x00/rt73usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT73USB'
-clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.h
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800PCI
-clean_mk CONFIG_RT2800PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800USB - "Ralink rt2800 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.h
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB
-clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile
-
-announce RTLWIFI - "Realtek Wireless Network Adapters"
-reject_firmware drivers/net/wireless/rtlwifi/core.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTLWIFI
-clean_mk CONFIG_RTLWIFI drivers/net/wireless/rtlwifi/Makefile
-
-announce RTL8188EE - "Realtek RTL8188EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8188EE
-clean_mk CONFIG_RTL8188EE drivers/net/wireless/rtlwifi/rtl8188ee/Makefile
-
-announce R8188EU - "Realtek RTL8188EU Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-clean_blob drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-clean_blob drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-clean_kconfig drivers/staging/rtl8188eu/Kconfig R8188EU
-clean_mk CONFIG_R8188EU drivers/staging/rtl8188eu/Makefile
-
-announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE
-clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
-
-announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU
-clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile
-
-announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE
-clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile
-
-announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE
-clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile
-
-announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
-clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c
-clean_kconfig drivers/staging/rtl8192e/Kconfig RTL8192E
-clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile
-
-announce R8192EE - "RealTek RTL8192EE Wireless Network Adapter"
-reject_firmware drivers/staging/rtl8192ee/rtl8192ee/sw.c
-clean_blob drivers/staging/rtl8192ee/rtl8192ee/sw.c
-clean_kconfig drivers/staging/rtl8192ee/Kconfig R8192EE
-clean_mk CONFIG_R8192EE drivers/staging/rtl8192ee/Makefile
-
-announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c
-clean_blob drivers/staging/rtl8192u/r819xU_firmware.c
-clean_kconfig drivers/staging/rtl8192u/Kconfig 'RTL8192U'
-clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile
-
-announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8712/hal_init.c
-clean_blob drivers/staging/rtl8712/hal_init.c
-clean_kconfig drivers/staging/rtl8712/Kconfig 'R8712U'
-clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile
-
-announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723AE'
-clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile
-
-announce R8723AU - "RealTek RTL8723AU Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-clean_blob drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-clean_blob drivers/staging/rtl8723au/os_dep/os_intfs.c
-clean_kconfig drivers/staging/rtl8723au/Kconfig 'R8723AU'
-clean_mk CONFIG_R8723AU drivers/staging/rtl8723au/Makefile
-
-announce RTL8723BE - "Realtek RTL8723BE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723BE'
-clean_mk CONFIG_RTL8723BE drivers/net/wireless/rtlwifi/rtl8723be/Makefile
-
-announce R8821AE - "Realtek RTL8821AE Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8821ae/rtl8821ae/sw.c
-clean_blob drivers/staging/rtl8821ae/rtl8821ae/sw.c
-clean_kconfig drivers/staging/rtl8821ae/Kconfig 'R8821AE'
-clean_mk CONFIG_R8821AE drivers/staging/rtl8821ae/Makefile
-
-announce VT6656 - "VIA Technologies VT6656 support"
-reject_firmware drivers/staging/vt6656/firmware.c
-clean_blob drivers/staging/vt6656/firmware.c
-clean_kconfig drivers/staging/vt6656/Kconfig 'VT6656'
-clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile
-
-announce WL1251 - "TI wl1251 support"
-reject_firmware drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/wl1251.h
-clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig 'WL1251'
-clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile
-
-announce WL12XX - "TI wl12xx support"
-clean_blob drivers/net/wireless/ti/wl12xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig 'WL12XX'
-clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile
-
-announce WL18XX - "TI wl18xx support"
-reject_firmware drivers/net/wireless/ti/wl18xx/main.c
-clean_blob drivers/net/wireless/ti/wl18xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig 'WL18XX'
-clean_mk CONFIG_WL18XX drivers/net/wireless/ti/wl18xx/Makefile
-
-announce WLCORE - "TI wlcore support"
-reject_firmware drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/wlcore_i.h
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE'
-clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile
-
-announce USB_ZD1201 - "USB ZD1201 based Wireless device support"
-reject_firmware drivers/net/wireless/zd1201.c
-clean_blob drivers/net/wireless/zd1201.c
-clean_kconfig drivers/net/wireless/Kconfig 'USB_ZD1201'
-clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile
-
-announce WCN36XX - "Qualcomm Atheros WCN3660/3680 support"
-reject_firmware drivers/net/wireless/ath/wcn36xx/smd.c
-clean_blob drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-clean_blob drivers/net/wireless/ath/wcn36xx/main.c
-clean_kconfig drivers/net/wireless/ath/wcn36xx/Kconfig 'WCN36XX'
-clean_mk CONFIG_WCN36XX drivers/net/wireless/ath/wcn36xx/Makefile
-
-announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support"
-reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c
-clean_blob drivers/net/wireless/zd1211rw/zd_usb.c
-clean_kconfig drivers/net/wireless/zd1211rw/Kconfig 'ZD1211RW'
-clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile
-
-# bluetooth
-
-announce BT_ATH3K - "Atheros firmware download driver"
-reject_firmware drivers/bluetooth/ath3k.c
-clean_blob drivers/bluetooth/ath3k.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_ATH3K'
-clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile
-
-announce BT_HCIBCM203X - "HCI BCM203x USB driver"
-reject_firmware drivers/bluetooth/bcm203x.c
-clean_blob drivers/bluetooth/bcm203x.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBCM203X'
-clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile
-
-announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver"
-reject_firmware drivers/bluetooth/bfusb.c
-clean_blob drivers/bluetooth/bfusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBFUSB'
-clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile
-
-announce BT_HCIBT3C - "HCI BT3C (PC Card) driver"
-reject_firmware drivers/bluetooth/bt3c_cs.c
-clean_blob drivers/bluetooth/bt3c_cs.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C'
-clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile
-
-announce BT_HCIBTUSB - "HCI USB driver"
-reject_firmware drivers/bluetooth/btusb.c
-clean_blob drivers/bluetooth/btusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBTUSB'
-clean_mk CONFIG_BT_HCIBTUSB drivers/bluetooth/Makefile
-
-announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver"
-reject_firmware drivers/bluetooth/btmrvl_sdio.c
-clean_blob drivers/bluetooth/btmrvl_sdio.c
-clean_blob Documentation/btmrvl.txt
-clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL_SDIO'
-clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile
-
-announce BT_NOKIA_H4P - "HCI driver with H4 Nokia extensions"
-reject_firmware drivers/staging/nokia_h4p/nokia_fw.c
-clean_blob drivers/staging/nokia_h4p/nokia_fw.c
-clean_kconfig drivers/staging/nokia_h4p/Kconfig 'BT_NOKIA_H4P'
-clean_mk CONFIG_BT_NOKIA_H4P drivers/staging/nokia_h4p/Makefile
-
-announce TI_ST - "Texas Instruments shared transport line discipline"
-reject_firmware drivers/misc/ti-st/st_kim.c
-clean_blob drivers/misc/ti-st/st_kim.c
-clean_kconfig drivers/misc/ti-st/Kconfig 'TI_ST'
-clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile
-
-# wimax
-
-announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400"
-reject_firmware drivers/net/wimax/i2400m/fw.c
-clean_blob drivers/net/wimax/i2400m/usb.c
-clean_blob Documentation/wimax/README.i2400m
-clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M'
-clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile
-
-announce BCM_WIMAX - "Beceem BCS200/BCS220-3 and BCSM250 wimax support"
-clean_blob drivers/staging/bcm/Macros.h
-# This disables loading of the .cfg file as well, but it's useless without
-# the firmware proper.
-clean_sed '
-/^static \(inline \)\?struct file \*open_firmware_file/,/^}$/ {
-  s,\(flp *= *\)filp_open[^;]*,\1/*(DEBLOBBED)*/(void*)-ENOENT,
-}' drivers/staging/bcm/Misc.c 'disabled non-Free firmware loading machinery'
-clean_kconfig drivers/staging/bcm/Kconfig 'BCM_WIMAX'
-clean_mk CONFIG_BCM_WIMAX drivers/staging/bcm/Makefile
-
-announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface"
-reject_firmware drivers/staging/gdm72xx/sdio_boot.c
-clean_blob drivers/staging/gdm72xx/sdio_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_SDIO'
-clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile
-
-announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface"
-reject_firmware drivers/staging/gdm72xx/usb_boot.c
-clean_blob drivers/staging/gdm72xx/usb_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_USB'
-clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile
-
-# infiniband
-
-announce INFINIBAND_QIB - "QLogic PCIe HCA support"
-drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw
-reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c
-clean_blob drivers/infiniband/hw/qib/qib_sd7220.c
-clean_kconfig drivers/infiniband/hw/qib/Kconfig 'INFINIBAND_QIB'
-clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile
-
-# CAN
-
-announce CAN_SOFTING - "Softing Gmbh CAN generic support"
-reject_firmware drivers/net/can/softing/softing_fw.c
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING'
-clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile
-
-announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards"
-clean_blob drivers/net/can/softing/softing_cs.c
-clean_blob drivers/net/can/softing/softing_platform.h
-clean_sed '
-/^config CAN_SOFTING_CS$/,${
-  /You need firmware/i\
-	  /*(DEBLOBBED)*/
-  /You need firmware/,/softing-fw.*tar\.gz/d
-}' drivers/net/can/softing/Kconfig 'removed firmware notes'
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING_CS'
-clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/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
-
-announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+"
-reject_firmware drivers/isdn/hardware/mISDN/speedfax.c
-clean_blob drivers/isdn/hardware/mISDN/speedfax.c
-clean_kconfig drivers/isdn/hardware/mISDN/Kconfig 'MISDN_SPEEDFAX'
-clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile
-
-##########
-# Serial #
-##########
-
-announce DGAP - "Digi EPCA PCI products"
-reject_firmware drivers/staging/dgap/dgap.c
-clean_blob drivers/staging/dgap/dgap.c
-clean_kconfig drivers/staging/dgap/Kconfig 'DGAP'
-clean_mk CONFIG_DGAP drivers/staging/dgap/Makefile
-
-announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/MT5634ZLX.cis.ihex firmware/cis/MT5634ZLX.cis
-drop_fw_file firmware/cis/RS-COM-2P.cis.ihex firmware/cis/RS-COM-2P.cis
-drop_fw_file firmware/cis/COMpad2.cis.ihex firmware/cis/COMpad2.cis
-drop_fw_file firmware/cis/COMpad4.cis.ihex firmware/cis/COMpad4.cis
-# These are not software; they're Free, but GPLed without textual sources.
-# It could be assumed that these binaries *are* sources, since they
-# can be trivially converted back to a textual form, without loss,
-# but we're better off safe than sorry, so remove them from our tree.
-drop_fw_file firmware/cis/SW_555_SER.cis.ihex firmware/cis/SW_555_SER.cis
-drop_fw_file firmware/cis/SW_7xx_SER.cis.ihex firmware/cis/SW_7xx_SER.cis
-drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis
-# clean_blob drivers/tty/serial/serial_cs.c
-# clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_8250_CS'
-# clean_mk CONFIG_SERIAL_8250_CS drivers/tty/serial/Makefile
-
-announce SERIAL_ICOM - "IBM Multiport Serial Adapter"
-reject_firmware drivers/tty/serial/icom.c
-clean_blob drivers/tty/serial/icom.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_ICOM'
-clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile
-
-announce SERIAL_QE - "Freescale QUICC Engine serial port support"
-reject_firmware drivers/tty/serial/ucc_uart.c
-clean_blob drivers/tty/serial/ucc_uart.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_QE'
-clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile
-
-announce SERIAL_RP2 - "Comtrol RocketPort EXPRESS/INFINITY support"
-reject_firmware drivers/tty/serial/rp2.c
-clean_blob drivers/tty/serial/rp2.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_RP2'
-clean_mk CONFIG_SERIAL_RP2 drivers/tty/serial/Makefile
-
-########
-# Leds #
-########
-
-announce LEDS_LP55XX_COMMON - "Common Driver for TI/National LP5521 and LP5523/55231"
-reject_firmware drivers/leds/leds-lp55xx-common.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP55XX_COMMON'
-clean_mk CONFIG_LEDS_LP55XX_COMMON drivers/leds/Makefile
-
-announce LEDS_LP5521 - "LED Support for N.S. LP5521 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5521.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP5521'
-clean_mk CONFIG_LEDS_LP5521 drivers/leds/Makefile
-
-announce LEDS_LP5523 - "LED Support for TI/National LP5523/55231 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5523.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP5523'
-clean_mk CONFIG_LEDS_LP5523 drivers/leds/Makefile
-
-#########
-# input #
-#########
-
-announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen"
-reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c
-clean_blob drivers/input/touchscreen/atmel_mxt_ts.c
-clean_kconfig drivers/input/touchscreen/Kconfig 'TOUCHSCREEN_ATMEL_MXT'
-clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile
-
-announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter"
-reject_firmware drivers/staging/media/lirc/lirc_zilog.c
-clean_blob drivers/staging/media/lirc/lirc_zilog.c
-clean_kconfig drivers/staging/media/lirc/Kconfig 'LIRC_ZILOG'
-clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile
-
-announce INPUT_IMS_PCU - "IMS Passenger Control Unit driver"
-reject_firmware drivers/input/misc/ims-pcu.c
-clean_blob drivers/input/misc/ims-pcu.c
-clean_kconfig drivers/input/misc/Kconfig 'INPUT_IMS_PCU'
-clean_mk CONFIG_INPUT_IMS_PCU drivers/input/misc/Makefile
-
-####################
-# Data acquisition #
-####################
-
-announce COMEDI - "Data acquisition support (comedi)"
-reject_firmware drivers/staging/comedi/drivers.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI'
-clean_mk CONFIG_COMEDI drivers/staging/comedi/Makefile
-
-announce COMEDI_DAQBOARD2000 - "IOtech DAQboard/2000 support"
-clean_blob drivers/staging/comedi/drivers/daqboard2000.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_DAQBOARD2000'
-clean_mk CONFIG_COMEDI_DAQBOARD2000 drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_JR3_PCI - "JR3/PCI force sensor board support"
-clean_blob drivers/staging/comedi/drivers/jr3_pci.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_JR3_PCI'
-clean_mk CONFIG_COMEDI_JR3_PCI drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_ME_DAQ - "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support"
-clean_blob drivers/staging/comedi/drivers/me_daq.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_ME_DAQ'
-clean_mk CONFIG_COMEDI_ME_DAQ drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_NI_PCIDIO - "NI PCI-DIO32HS, PCI-6533, PCI-6534 support"
-clean_blob drivers/staging/comedi/drivers/ni_pcidio.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_NI_PCIDIO'
-clean_mk CONFIG_COMEDI_NI_PCIDIO drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUX - "ITL USBDUX support"
-clean_blob drivers/staging/comedi/drivers/usbdux.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUX'
-clean_mk CONFIG_COMEDI_USBDUX drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXFAST - "ITL USB-DUXfast support"
-clean_blob drivers/staging/comedi/drivers/usbduxfast.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXFAST'
-clean_mk CONFIG_COMEDI_USBDUXFAST drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXSIGMA - "ITL USB-DUXsigma support"
-clean_blob drivers/staging/comedi/drivers/usbduxsigma.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXSIGMA'
-clean_mk CONFIG_COMEDI_USBDUXSIGMA drivers/staging/comedi/drivers/Makefile
-
-
-#######
-# MMC #
-#######
-
-announce MMC_VUB300 - "VUB300 USB to SDIO/SD/MMC Host Controller support"
-clean_sed '
-/^config MMC_VUB300/,/^config /{
-  /Some SDIO cards/i\
-	  /*(DEBLOBBED)*/
-  /Some SDIO cards/,/obtainable data rate\.$/d
-}
-' drivers/mmc/host/Kconfig "removed firmware notes"
-reject_firmware drivers/mmc/host/vub300.c
-clean_blob drivers/mmc/host/vub300.c
-clean_kconfig drivers/mmc/host/Kconfig 'MMC_VUB300'
-clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile
-
-########
-# SCSI #
-########
-
-announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver"
-drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin
-reject_firmware drivers/scsi/qlogicpti.c
-clean_blob drivers/scsi/qlogicpti.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGICPTI'
-clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile
-
-announce SCSI_ADVANSYS - "AdvanSys SCSI"
-drop_fw_file firmware/advansys/mcode.bin.ihex firmware/advansys/mcode.bin
-drop_fw_file firmware/advansys/3550.bin.ihex firmware/advansys/3550.bin
-drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin
-drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin
-reject_firmware drivers/scsi/advansys.c
-clean_blob drivers/scsi/advansys.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_ADVANSYS'
-clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile
-
-announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI"
-drop_fw_file firmware/qlogic/1040.bin.ihex firmware/qlogic/1040.bin
-drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin
-drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin
-reject_firmware drivers/scsi/qla1280.c
-clean_blob drivers/scsi/qla1280.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGIC_1280'
-clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile
-
-announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support"
-reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.h
-clean_kconfig drivers/scsi/aic94xx/Kconfig 'SCSI_AIC94XX'
-clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile
-
-announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support"
-reject_firmware drivers/scsi/bfa/bfad.c
-clean_blob drivers/scsi/bfa/bfad.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_BFA_FC'
-clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile
-
-announce SCSI_CHELSIO_FCOE - "Chelsio Communications FCoE support"
-reject_firmware drivers/scsi/csiostor/csio_hw.c
-clean_blob drivers/scsi/csiostor/csio_hw_chip.h
-clean_blob drivers/scsi/csiostor/csio_init.c
-clean_kconfig drivers/scsi/csiostor/Kconfig 'SCSI_CHELSIO_FCOE'
-clean_mk CONFIG_SCSI_CHELSIO_FCOE drivers/scsi/csiostor/Makefile
-
-announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support"
-# The firmware name is built out of Vital Product Data read from the
-# adapter.  The firmware is definitely code, and I couldn't find
-# evidence it is Free, so I'm disabling it.  It's not clear whether
-# this is the hardware or the software inducing to the installation of
-# non-Free firmware.
-reject_firmware drivers/scsi/lpfc/lpfc.h
-reject_firmware drivers/scsi/lpfc/lpfc_crtn.h
-reject_firmware drivers/scsi/lpfc/lpfc_init.c
-reject_firmware drivers/scsi/lpfc/lpfc_attr.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_LPFC'
-clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile
-
-announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support"
-reject_firmware drivers/scsi/qla2xxx/qla_gbl.h
-reject_firmware drivers/scsi/qla2xxx/qla_init.c
-reject_firmware drivers/scsi/qla2xxx/qla_os.c
-reject_firmware drivers/scsi/qla2xxx/qla_nx.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
-
-
-#######
-# USB #
-#######
-
-# atm
-
-announce USB_CXACRU - "Conexant AccessRunner USB support"
-reject_firmware drivers/usb/atm/cxacru.c
-clean_blob drivers/usb/atm/cxacru.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_CXACRU'
-clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile
-
-announce USB_SPEEDTOUCH - "Speedtouch USB support"
-reject_firmware drivers/usb/atm/speedtch.c
-clean_blob drivers/usb/atm/speedtch.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_SPEEDTOUCH'
-clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile
-
-announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem"
-reject_firmware drivers/usb/atm/ueagle-atm.c
-clean_blob drivers/usb/atm/ueagle-atm.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_UEAGLEATM'
-clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile
-
-# misc
-
-announce USB_EMI26 - "EMI 2|6 USB Audio interface"
-# These files are not under the GPL, better remove them all.
-drop_fw_file firmware/emi26/bitstream.HEX firmware/emi26/bitstream.fw
-drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw
-drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw
-reject_firmware drivers/usb/misc/emi26.c
-clean_blob drivers/usb/misc/emi26.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI26'
-clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile
-
-announce USB_EMI62 - "EMI 6|2m USB Audio interface"
-# These files are probably not under the GPL, better remove them all.
-drop_fw_file firmware/emi62/bitstream.HEX firmware/emi62/bitstream.fw
-drop_fw_file firmware/emi62/loader.HEX firmware/emi62/loader.fw
-drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw
-drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw
-reject_firmware drivers/usb/misc/emi62.c
-clean_blob drivers/usb/misc/emi62.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI62'
-clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile
-
-announce USB_EZUSB_FX2 - "Functions for loading firmware on EZUSB chips"
-maybe_reject_firmware drivers/usb/misc/ezusb.c
-
-announce USB_ISIGHTFW - "iSight firmware loading support"
-reject_firmware drivers/usb/misc/isight_firmware.c
-clean_blob drivers/usb/misc/isight_firmware.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_ISIGHTFW'
-clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile
-
-# storage
-
-announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support"
-reject_firmware drivers/usb/storage/ene_ub6250.c
-clean_blob drivers/usb/storage/ene_ub6250.c
-clean_kconfig drivers/usb/storage/Kconfig 'USB_STORAGE_ENE_UB6250'
-clean_mk 'CONFIG_USB_STORAGE_ENE_UB6250' drivers/usb/storage/Makefile
-
-announce USB_ENESTORAGE - "USB ENE card reader support"
-clean_blob drivers/staging/keucr/init.h
-clean_sed '
-/^int ENE_LoadBinCode(/,/^}$/ {
-  /kmalloc/i\
-	return /*(DEBLOBBED)*/ USB_STOR_TRANSPORT_ERROR;
-}
-' drivers/staging/keucr/init.c 'disable non-Free firmware loading machinery'
-clean_kconfig drivers/staging/keucr/Kconfig 'USB_ENESTORAGE'
-clean_mk 'CONFIG_USB_ENESTORAGE' drivers/staging/keucr/Makefile
-
-# serial
-
-announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver"
-drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_MPR'
-drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA18X'
-drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19'
-drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QI'
-drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QW'
-drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19W'
-drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28'
-drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XA'
-drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XB'
-drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28X'
-drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49W'
-drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49WLC'
-clean_blob drivers/usb/serial/keyspan.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN'
-clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver"
-clean_fw firmware/edgeport/boot.H16 firmware/edgeport/boot.fw
-clean_fw firmware/edgeport/boot2.H16 firmware/edgeport/boot2.fw
-clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw
-clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw
-reject_firmware drivers/usb/serial/io_edgeport.c
-clean_blob drivers/usb/serial/io_edgeport.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)"
-clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin
-reject_firmware drivers/usb/serial/io_ti.c
-clean_blob drivers/usb/serial/io_ti.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT_TI'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_MXUPORT - "USB Moxa UPORT Serial Driver"
-reject_firmware drivers/usb/serial/mxuport.c
-clean_blob drivers/usb/serial/mxuport.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_MXUPORT'
-clean_mk CONFIG_USB_SERIAL_MXUPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver"
-drop_fw_file firmware/ti_3410.fw.ihex firmware/ti_3410.fw
-drop_fw_file firmware/ti_5052.fw.ihex firmware/ti_5052.fw
-drop_fw_file firmware/mts_cdma.fw.ihex firmware/mts_cdma.fw
-drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw
-drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw
-reject_firmware drivers/usb/serial/ti_usb_3410_5052.c
-clean_blob drivers/usb/serial/ti_usb_3410_5052.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_TI'
-clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver"
-clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw
-clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw
-clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw
-clean_blob drivers/usb/serial/whiteheat.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_WHITEHEAT'
-clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile
-
-# uwb
-
-announce UWB_I1480U - Support for Intel Wireless UWB Link 1480 HWA
-reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h
-reject_firmware drivers/uwb/i1480/dfu/mac.c
-reject_firmware drivers/uwb/i1480/dfu/phy.c
-clean_blob drivers/uwb/i1480/dfu/usb.c
-clean_kconfig drivers/uwb/Kconfig 'UWB_I1480U'
-clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile
-
-
-
-################
-# Programmable #
-################
-
-announce LATTICE_ECP3_CONFIG - "Lattice ECP3 FPGA bitstrap configuration via SPI"
-reject_firmware drivers/misc/lattice-ecp3-config.c
-clean_blob drivers/misc/lattice-ecp3-config.c
-clean_kconfig drivers/misc/Kconfig 'LATTICE_ECP3_CONFIG'
-clean_mk CONFIG_LATTICE_ECP3_CONFIG drivers/misc/Makefile
-
-announce STE_MODEM_RPROC - "STE-Modem remoteproc support"
-maybe_reject_firmware drivers/remoteproc/remoteproc_core.c
-undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \
-  "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c
-clean_kconfig drivers/remoteproc/Kconfig 'STE_MODEM_RPROC'
-clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile
-
-
-#########
-# Sound #
-#########
-
-announce SND_ASIHPI - "AudioScience ASIxxxx"
-reject_firmware sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpioctl.c
-clean_kconfig sound/pci/Kconfig 'SND_ASIHPI'
-clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile
-
-announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
-reject_firmware sound/pci/cs46xx/cs46xx_lib.c
-clean_blob sound/pci/cs46xx/cs46xx_lib.c
-clean_kconfig sound/pci/Kconfig 'SND_CS46XX'
-clean_mk 'CONFIG_SND_CS46XX' sound/pci/cs46xx/Makefile
-
-announce SND_KORG1212 - "Korg 1212 IO"
-drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp
-reject_firmware sound/pci/korg1212/korg1212.c
-clean_blob sound/pci/korg1212/korg1212.c
-clean_kconfig sound/pci/Kconfig 'SND_KORG1212'
-clean_mk 'CONFIG_SND_KORG1212' sound/pci/korg1212/Makefile
-
-announce SND_MAESTRO3 - "ESS Allegro/Maestro3"
-drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw
-drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw
-reject_firmware sound/pci/maestro3.c
-clean_blob sound/pci/maestro3.c
-clean_kconfig sound/pci/Kconfig 'SND_MAESTRO3'
-clean_mk 'CONFIG_SND_MAESTRO3' sound/pci/Makefile
-
-announce SND_YMFPCI - "Yamaha YMF724/740/744/754"
-drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw
-drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw
-drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw
-reject_firmware sound/pci/ymfpci/ymfpci_main.c
-clean_blob sound/pci/ymfpci/ymfpci_main.c
-clean_kconfig sound/pci/Kconfig 'SND_YMFPCI'
-clean_mk 'CONFIG_SND_YMFPCI' sound/pci/ymfpci/Makefile
-
-announce SND_SB16_CSP - "SB16 Advanced Signal Processor"
-drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp
-drop_fw_file firmware/sb16/mulaw_main.csp.ihex firmware/sb16/mulaw_main.csp
-drop_fw_file firmware/sb16/ima_adpcm_init.csp.ihex firmware/sb16/ima_adpcm_init.csp
-drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_capture.csp
-drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp
-reject_firmware sound/isa/sb/sb16_csp.c
-clean_blob sound/isa/sb/sb16_csp.c
-clean_kconfig sound/isa/Kconfig 'SND_SB16_CSP'
-clean_mk 'CONFIG_SND_SB16_CSP' sound/isa/sb/Makefile
-
-announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
-drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin
-reject_firmware sound/isa/wavefront/wavefront_fx.c
-clean_blob sound/isa/wavefront/wavefront_fx.c
-reject_firmware sound/isa/wavefront/wavefront_synth.c
-clean_blob sound/isa/wavefront/wavefront_synth.c
-clean_kconfig sound/isa/Kconfig 'SND_WAVEFRONT'
-clean_mk 'CONFIG_SND_WAVEFRONT' sound/isa/wavefront/Makefile
-
-announce SND_VX_LIB - Digigram VX soundcards
-reject_firmware sound/drivers/vx/vx_hwdep.c
-clean_blob sound/drivers/vx/vx_hwdep.c
-clean_kconfig sound/drivers/Kconfig 'SND_VX_LIB'
-clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile
-
-announce SND_DARLA20 - "(Echoaudio) Darla20"
-clean_blob sound/pci/echoaudio/darla20.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA20'
-clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile
-
-announce SND_DARLA24 - "(Echoaudio) Darla24"
-clean_blob sound/pci/echoaudio/darla24.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA24'
-clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile
-
-announce SND_ECHO3G - "(Echoaudio) 3G cards"
-clean_blob sound/pci/echoaudio/echo3g.c
-clean_kconfig sound/pci/Kconfig 'SND_ECHO3G'
-clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile
-
-announce SND_GINA20 - "(Echoaudio) Gina20"
-clean_blob sound/pci/echoaudio/gina20.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA20'
-clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile
-
-announce SND_GINA24 - "(Echoaudio) Gina24"
-clean_blob sound/pci/echoaudio/gina24.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA24'
-clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile
-
-announce SND_INDIGO - "(Echoaudio) Indigo"
-clean_blob sound/pci/echoaudio/indigo.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGO'
-clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJ - "(Echoaudio) Indigo DJ"
-clean_blob sound/pci/echoaudio/indigodj.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJ'
-clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJX - "(Echoaudio) Indigo DJx"
-clean_blob sound/pci/echoaudio/indigodjx.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJX'
-clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIO - "(Echoaudio) Indigo IO"
-clean_blob sound/pci/echoaudio/indigoio.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIO'
-clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx"
-clean_blob sound/pci/echoaudio/indigoiox.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIOX'
-clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA20 - "(Echoaudio) Layla20"
-clean_blob sound/pci/echoaudio/layla20.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA20'
-clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA24 - "(Echoaudio) Layla24"
-clean_blob sound/pci/echoaudio/layla24.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA24'
-clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile
-
-announce SND_MIA - "(Echoaudio) Mia"
-clean_blob sound/pci/echoaudio/mia.c
-clean_kconfig sound/pci/Kconfig 'SND_MIA'
-clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile
-
-announce SND_MONA - "(Echoaudio) Mona"
-clean_blob sound/pci/echoaudio/mona.c
-clean_kconfig sound/pci/Kconfig 'SND_MONA'
-clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile
-
-announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above "
-reject_firmware sound/pci/echoaudio/echoaudio.c
-clean_blob sound/pci/echoaudio/echoaudio.c
-
-announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)"
-reject_firmware sound/pci/emu10k1/emu10k1_main.c
-clean_blob sound/pci/emu10k1/emu10k1_main.c
-clean_kconfig sound/pci/Kconfig 'SND_EMU10K1'
-clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile
-
-announce SND_MIXART - "Digigram miXart"
-reject_firmware sound/pci/mixart/mixart_hwdep.c
-clean_blob sound/pci/mixart/mixart_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_MIXART'
-clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile
-
-announce SND_PCXHR - "Digigram PCXHR"
-reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c
-clean_blob sound/pci/pcxhr/pcxhr_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_PCXHR'
-clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile
-
-announce SND_RIPTIDE - "Conexant Riptide"
-reject_firmware sound/pci/riptide/riptide.c
-clean_blob sound/pci/riptide/riptide.c
-clean_kconfig sound/pci/Kconfig 'SND_RIPTIDE'
-clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile
-
-# This is ok, patch filenames are supplied as module parameters, and
-# they are text files with patch instructions.
-#announce SND_HDA_PATCH_LOADER - "Support initialization patch loading for HD-audio"
-#reject_firmware sound/pci/hda/hda_hwdep.c
-#clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_PATCH_LOADER'
-
-announce SND_HDA_CODEC_CA0132_DSP - "Support new DSP code for CA0132 codec"
-reject_firmware sound/pci/hda/patch_ca0132.c
-clean_blob sound/pci/hda/patch_ca0132.c
-clean_sed '
-/^config SND_HDA_CODEC_CA0132_DSP$/, /^config / {
-  s,(ctefx.bin),(/*(DEBLOBBED)*/),;
-}' sound/pci/hda/Kconfig 'removed blob name'
-clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_CODEC_CA0132_DSP'
-# There are no separate source files or Makefile entries for the _DSP option.
-clean_mk CONFIG_SND_HDA_CODEC_CA0132 sound/pci/hda/Makefile
-
-announce SND_HDSP - "RME Hammerfall DSP Audio"
-reject_firmware sound/pci/rme9652/hdsp.c
-clean_blob sound/pci/rme9652/hdsp.c
-clean_kconfig sound/pci/Kconfig 'SND_HDSP'
-clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile
-
-announce SND_AICA - "Dreamcast Yamaha AICA sound"
-reject_firmware sound/sh/aica.c
-clean_blob sound/sh/aica.c
-clean_kconfig sound/sh/Kconfig 'SND_AICA'
-clean_mk CONFIG_SND_AICA sound/sh/Makefile
-
-announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle"
-clean_blob sound/isa/msnd/msnd_pinnacle.h
-reject_firmware sound/isa/msnd/msnd_pinnacle.c
-clean_blob sound/isa/msnd/msnd_pinnacle.c
-clean_kconfig sound/isa/Kconfig 'SND_MSND_PINNACLE'
-clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile
-
-announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey"
-clean_blob sound/isa/msnd/msnd_classic.h
-clean_kconfig sound/isa/Kconfig 'SND_MSND_CLASSIC'
-clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile
-
-announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)"
-clean_blob sound/oss/msnd_classic.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS'
-clean_sed '
-/^config MSNDCLAS_INIT_FILE$/, /^config / {
-  /^	default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDCLAS_PERM_FILE$/, /^config / {
-  /^	default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile
-
-announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)"
-clean_blob sound/oss/msnd_pinnacle.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN'
-clean_sed '
-/^config MSNDPIN_INIT_FILE$/, /^config / {
-  /^	default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDPIN_PERM_FILE$/, /^config / {
-  /^	default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile
-
-announce SND_SSCAPE - "Ensoniq SoundScape driver"
-reject_firmware sound/isa/sscape.c
-clean_blob sound/isa/sscape.c
-clean_sed '
-/^config SND_SSCAPE$/, /^config / {
-  s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g;
-}' sound/isa/Kconfig 'removed firmware names'
-clean_kconfig sound/isa/Kconfig 'SND_SSCAPE'
-clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile
-
-announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1701.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1701'
-clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile
-
-announce SND_SOC_ADAU1761 - "ADAU1761 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1761.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1761'
-clean_mk CONFIG_SND_SOC_ADAU1761 sound/soc/codecs/Makefile
-
-announce SND_SOC_ADAU1781 - "ADAU1781 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1781.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1781'
-clean_mk CONFIG_SND_SOC_ADAU1781 sound/soc/codecs/Makefile
-
-announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader"
-maybe_reject_firmware sound/soc/codecs/sigmadsp.c
-
-announce SND_SOC_INTEL_SST_ACPI - "Intel SST (LPE) Driver"
-reject_firmware sound/soc/intel/sst-acpi.c
-clean_blob sound/soc/intel/sst-acpi.c
-clean_kconfig sound/soc/intel/Kconfig 'SND_SOC_INTEL_SST_ACPI'
-clean_mk 'CONFIG_SND_SOC_INTEL_SST_ACPI' sound/soc/intel/Makefile
-
-announce SND_SOC_WM0010 - "WM0010 DSP driver"
-reject_firmware sound/soc/codecs/wm0010.c
-clean_blob sound/soc/codecs/wm0010.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM0010'
-clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile
-
-# It's not clear that wm2000_anc.bin is pure data.
-# Check with developer, clean up for now.
-announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm2000.c
-clean_blob sound/soc/codecs/wm2000.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM2000'
-clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile
-
-announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm8958-dsp2.c
-clean_blob sound/soc/codecs/wm8958-dsp2.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM8994'
-clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile
-
-# The coeff files might be pure data, but the wmfw surely aren't.
-announce SND_SOC_WM_ADSP - "Wolfson ADSP support"
-reject_firmware sound/soc/codecs/wm_adsp.c
-clean_blob sound/soc/codecs/wm_adsp.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM_ADSP'
-clean_mk CONFIG_SND_SOC_WM_ADSP sound/soc/codecs/Makefile
-
-announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral"
-reject_firmware sound/soc/sh/siu_dai.c
-clean_blob sound/soc/sh/siu_dai.c
-clean_kconfig sound/soc/sh/Kconfig 'SND_SOC_SH4_SIU'
-clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile
-
-announce SOUND_TRIX - "MediaTrix AudioTrix Pro support"
-clean_blob sound/oss/trix.c
-clean_kconfig sound/oss/Kconfig 'SOUND_TRIX'
-clean_sed '
-/^config TRIX_BOOT_FILE$/, /^config / {
-  /^	default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile
-
-announce SOUND_TRIX - "See above,"
-announce SOUND_PAS - "ProAudioSpectrum 16 support,"
-announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support"
-clean_blob sound/oss/sb_common.c
-clean_kconfig sound/oss/Kconfig 'SOUND_PAS'
-clean_kconfig sound/oss/Kconfig 'SOUND_SB'
-clean_mk CONFIG_SOUND_PAS sound/oss/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 '
-/^config PSS_BOOT_FILE$/, /^config / {
-  /^	default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_PSS sound/oss/Makefile
-
-announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB"
-reject_firmware sound/usb/6fire/firmware.c
-clean_blob sound/usb/6fire/firmware.c
-clean_kconfig sound/usb/Kconfig 'SND_USB_6FIRE'
-clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile
-
-#################
-# Documentation #
-#################
-
-announce Documentation - "non-Free firmware scripts and documentation"
-clean_blob Documentation/dvb/avermedia.txt
-clean_blob Documentation/dvb/opera-firmware.txt
-clean_blob Documentation/sound/alsa/ALSA-Configuration.txt
-clean_blob Documentation/sound/oss/MultiSound
-clean_blob Documentation/sound/oss/PSS
-clean_blob Documentation/sound/oss/PSS-updates
-clean_blob Documentation/sound/oss/README.OSS
-clean_file Documentation/dvb/get_dvb_firmware
-clean_file Documentation/video4linux/extract_xc3028.pl
-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
diff --git a/helpers/DATA/linux-lts-utopic/deblob-check b/helpers/DATA/linux-lts-utopic/deblob-check
deleted file mode 100644
index 20bb408c0..000000000
--- a/helpers/DATA/linux-lts-utopic/deblob-check
+++ /dev/null
@@ -1,7977 +0,0 @@
-#! /bin/sh
-
-# deblob-check version 2014-08-07
-# Inspired in gNewSense's find-firmware script.
-# Written by Alexandre Oliva <lxoliva@fsfla.org>
-
-# Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer
-# versions.
-
-# Copyright 2008-2014 Alexandre Oliva <lxoliva@fsfla.org>
-#
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-
-# usage: deblob-check [-S] [-v] [-v] [-s S] [--reverse-patch] \
-#        [--use-...|--gen-flex] [-lDdBbCcXxPpFftVh?H] \
-#        *.tar* patch-* [-i prefix/] *.patch *.diff...
-
-# Look for and report too-long undocumented sequences of numbers
-# (generally blobs in disguise) in source files, as well as requests
-# for loading non-Free firmware.
-
-# The order of command line flags is significant.  Flags given out of
-# the order above won't be handled correctly, sorry.
-
-# -s --sensitivity: Specifies the number of consecutive integral or
-#		character constants that trigger the blob detector.
-#	        Must be followed by a blank and a number.
-
-#    --reverse-patch: Test the removed parts of a patch, rather than
-#		the added ones.
-
-#    --use-awk: Choose the internal GNU awk script for the bulk of the
-#		work.  This is the default option, if GNU awk is found.
-#		The awk interpreter is named gawk, unless AWK is set.
-
-#    --use-sed: Choose the internal GNU sed script for the bulk of the
-#		work.  This is the default option, if GNU awk is not
-#		found.
-
-#    --use-python: Choose the internal python script.  This is not
-#		recommended, because the regular expressions we use
-#		invoke exponential behavior in the python engine.
-
-#    --use-perl: Choose the internal perl script.  This is not
-#		recommended, because our regular expressions exceed
-#		some limits hard-coded into perl.
-
-#    --save-script-input: Save the input that would have been fed to
-#		any of the engines above.
-
-#    --gen-flex: Generate a flex input file with all known blob and
-#		false positive patterns.  It would have been a fast
-#		regular expression processor if only the flex program
-#		completed in reasonable time.
-
-
-# The default sensitivity is 32 constants.
-
-# The sensitivity, if present, must be the first option.  The action
-# selection, if present, must be the first argument, except for the
-# sensitivity and verbosity.
-
-# The default can be overridden with one of:
-
-# -l --list-blobs: list files that contain sequences that match the
-#		blob detector test and that are not known to be false
-#		positives.  This is the default option.
-
-# -d --deblob --mark-blobs: print the processed input, replacing
-#		sequences that match the blob detector test and that
-#		are NOT known to be false positives with
-#		/*(DEBLOBBED)*/.
-
-# -D --cat: print the processed input, as it would have been fed to
-#		the blob detector script.  Use -S to save the sed
-#		script used to process it, and search for `sedcat:' in
-#		comments to locate the relevant adaptation points.
-
-# -b --print-marked-blobs: like -d, but print only the matching
-#		sequences.
-
-# -B --print-blobs: like -b, but do not deblob the sequences.
-
-# -c --print-marked-blobs-with-context: like -b, but try to maximize
-#		the context around the blobs.  This maximization will
-#		sometimes disregard known false positives, if they
-#		happen to be contained within the extended match.
-#		This is probably an indication that the false positive
-#		matching rule could be improved.
-
-# -C --print-blobs-with-context: like -B, but try to maximize the
-#		context around the blobs.
-
-# -X --print-all-matches: print all blobs, be they known false
-#		positives or actual blobs.
-
-# -x --list-all-matches: list files that contain sequences that appear
-#		to be blobs, be they known false positives or not.
-
-# -p --mark-false-positives: print the processed input, replacing
-#		sequences that match the blob detector test, even those
-#		known to be false positives, with /*(DEBLOBBED)*/.
-
-# -P --list-false-positives: list files that contain false positives.
-
-# -f --print-marked-false-positives: like -p, but print only the
-#		matching sequences.
-
-# -F --print-false-positives: like -f, but do not deblob the sequences.
-
-# -t --test: run (very minimal) self-test.
-
-# -V --version: print a version number
-
-# -h -? -H --help: print short or long help message
-
-
-# debugging options:
-
-# -S --save-scripts: save scripts and temporary files.
-
-# -v --verbose: increase verbosity level, for internal debugging.  May
-#		be given at most twice.
-
-
-# file options:
-
-# --: Don't process command-line options any further.  All following
-#		arguments are taken as filenames.
-
-# -i --implied-prefix --prefix: prepend the given prefix to each filename
-#		listed after this option, when configuring false positives
-#		and negatives.
-
-# *.tar*: iterate over all files in the named tar file.
-
-# *.patch, patch-*, *.diff: Look for blobs in the [ +] parts of the
-# 		*patch, unless --reverse-patch is given, in which case
-# 		the [ -] parts will be used.
-
-# Anything else is assumed to be a source file.
-
-# *.gz | *.bz2 | *.xz | *.lz: Decompress automatically.
-
-
-# The exit status is only significant for the --list options: it will
-# be true if nothing was found, and false otherwise.
-
-: # Mark the end of the help message.
-
-# TODO:
-
-# - Improve handling of command-line arguments, so as to not make the
-# order relevant.
-
-# - Add an option for the user to feed their own false positive
-# patterns.
-
-# - Add support to recognize known blobs (or other non-Free
-# signatures, really), to speed up the scanning of files containing
-# blobs, and to avoid attempts to disguise blobs.
-
-# - Factor out the code in the various print_* and list_* parts of the
-# sed script, at least in the shell sources.  Make sure they're all
-# included and expanded in a saved --cat script though.
-
-# - Add support for file name tagging in patterns, such that blobs or
-# false positives are recognized only when handling the specific
-# filename, be it stand-alone, as part of a patch or a tarball.  This
-# should help avoid recognition of actual blobs as false positives
-# just because there's a symbol with a different name elsewhere.
-
-#   It is convenient that the patterns provided by the user to
-# recognize file names can be empty (for backward compatibility), but
-# this should ideally be phased out in favor of more precise matches.
-# It's important that files can be recognized with leading tarball or
-# patch names, that the filename used within the tarball contain
-# leading garbage, and even that a partial pathname be recognizable
-# (say recognize drivers/net/whatever.c when the input file is named
-# ../net/whatever.c).
-
-#   Rather than using regular expressions to recognize multiple files
-# it's convenient (but not quite essential) that filename patterns be
-# specifiable as regular expressions, rather than simple filenames,
-# but there are other ways around this.
-
-#   Maintaining begin/end markers in a stack-like fashion as part of
-# the processed stream, and using the names in them as (optional) part
-# of the recognition patterns, would enable us to do it.
-
-#   Introducing annotations next to the false positives (and recognized
-# blobs) as an early part of the process may speed things up and
-# enable fast processing, but how to introduce the annotations quickly
-# in the first place?  Given patterns such as
-
-#   \(\(file1\)\(.*\)\(pat1\)\|\(file2\)\(.*\)\(pat2\)\|...\)
-
-# how do we get sed to introduce a marker that contains file2 right
-# before or right after pat2, without turning a big efficient regexp
-# into a slowish sequence of s/// commands?
-
-# - Re-check and narrow false-positive patterns to make sure they
-# apply only to the relevant content.
-
-# - Scripting abilities, so as to be able to automate the removal of
-# source files or of blobs from source files in a tarball without
-# having to extract the entire tarball (as in tar --update/--delete)
-# would be nice.  Carrying over removed files automatically into
-# patches would also be great, and this sort of script would be
-# perfect to document what has been done to a tarball plus a set of
-# patches.  Something like deblob.script:
-#
-#   tarball linux-2.6.24.tar.bz2
-#   delete net/wireloss/freedom.c drivers/me/crazy.c
-#   deblob include/linux/slab-blob-kfree.h
-#   deconfig drivers/char/drm DRM_IS_BAD
-#
-#   patch patch-2.6.25-rc7.bz2
-#   delete arch/power/over/you.c
-
-# such that the deletes from an earlier file would carry over into the
-# subsequent ones, and new tarballs and patch files would be generated
-# with the libre- prefix in their basename, and the xdeltas between
-# the original files and the modified files would be minimal, and
-# redundant with this script and the input script while at that.
-
-# - Improve documentation of the code.
-
-# - Write a decent testsuite.
-
-# - Insert your idea here. :-)
-
-# Yeah, lots of stuff to do.  Want to help?
-
-# This makes it much faster, and mostly immune to non-ASCII stuff, as
-# long as a 8-bit-safe sed is used.  Probably a safe assumption these
-# days.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-rm="rm -f"
-
-for echo in 'echo' 'printf %s\n'; do
-  case `$echo '\nx'` in
-  '\nx') break;;
-  esac
-done
-case `$echo '\nx'` in
-'\nx') ;; *) echo Cannot find out what echo to use >&2; exit 1;;
-esac
-
-for echo_n in "echo -n" "printf %s"; do
-  case `$echo_n '\na'; $echo_n '\nb'` in
-  '\na\nb') break;;
-  esac
-done
-case `$echo_n a; $echo_n b` in
-'ab') ;; *) echo Cannot find out an echo -n equivalent to use >&2; exit 1;;
-esac
-
-case $1 in
---save-scripts | -S)
-  shift
-  rm="echo preserving"
-  ;;
-esac
-
-# Choose verbosity level for sed script debugging and performance
-# analysis.
-case $1 in
---verbose | -v)
-  shift
-  case $1 in
-  --verbose | -v)
-    shift
-    v="i\\
-:
-p
-i\\
-"
-    vp="2"
-    ;;
-  *)
-    v="P;i\\
-"
-    vp="1"
-    ;;
-  esac
-  ;;
-*)
-  v="# "
-  vp="0"
-  ;;
-esac
-
-sens=31 # 32 - 1
-case $1 in
---sensitivity | -s)
-  sens=$2;
-  shift 2 || exit 1
-
-  if test "$sens" -gt 0 2>/dev/null; then
-    :
-  else
-    echo invalid sensitivity: $sens >&2
-    exit 1
-  fi
-
-  sens=`expr $sens - 1`
-  ;;
-esac
-
-reverse_patch=false
-case $1 in
---reverse-patch)
-  reverse_patch=:
-  shift;
-  ;;
-esac
-
-prefix=/
-case $1 in
---implied-prefix | --prefix| -i)
-  prefix=$2
-  case $prefix in
-  /*/) ;;
-  */) prefix=/$prefix ;;
-  /*) prefix=$prefix/ ;;
-  *) prefix=/$prefix/ ;;
-  esac
-  shift 2 || exit 1
-  ;;
-esac
-
-test_mode=false
-
-name=deblob-check
-
-set_eqscript_main () {
-  $set_main_cmd "$@"
-}
-
-set_eqscript_cmd () {
-  set_eqscript_main "list_blob"
-}
-
-set_sed_cmd () {
-  set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-}
-
-set_flex_cmd () {
-  set_flex_main
-}
-
-set_save_script_input_cmd () {
-  set_save_script_input_main
-}
-
-set_cmd=set_eqscript_cmd
-if (${PYTHON-python} --version) > /dev/null 2>&1; then
-  # Python will exhibit exponential behavior processing some regular
-  # expressions, but we may have already fixed them all.  (see
-  # http://swtch.com/~rsc/regexp/regexp1.html for details)
-  set_main_cmd=set_python_main
-elif (${AWK-gawk} --re-interval --version) > /dev/null 2>&1; then
-  # GNU awk works fine, but it requires --re-interval to accept regexp
-  # ranges, which we rely on to match blobs.  We could expand the blob
-  # on our own, but, yuck.
-  set_main_cmd=set_awk_main
-elif (${PERL-false} --version) > /dev/null 2>&1; then
-  # Don't choose perl by default.  Besides the potential for
-  # exponential behavior, we exceed some internal recursion limits.
-  set_main_cmd=set_perl_main
-else
-  # Sed takes GBs of RAM to compile all the huge regexps in the sed
-  # script we generate with all known false positives and blobs in
-  # Linux.  However, it is somewhat faster than GNU awk and even
-  # python for long runs.
-  # Try it: deblob-check --use-sed linux-2.6.32.tar.bz2
-  set_cmd=set_sed_cmd
-fi
-
-case $1 in
---use-python)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_python_main;
-  ;;
-
---use-perl)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_perl_main;
-  ;;
-
---use-awk)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_awk_main;
-  ;;
-
---use-sed)
-  shift;
-  set_cmd=set_sed_cmd;
-  ;;
-
---gen-flex)
-  shift;
-  set_cmd=set_flex_cmd;
-  ;;
-
---save-script-input)
-  shift;
-  set_cmd=set_save_script_input_cmd;
-  ;;
-esac
-
-case $1 in
---version | -V)
-  ${SED-sed} -e '/^# '$name' version /,/^# Written by/ { s/^# //; p; }; d' < $0
-  exit 0
-  ;;
-
--\? | -h)
-  ${SED-sed} -n -e '/^# usage:/,/# -h/ { /^# -/,/^$/{s/^# \(-.*\):.*/\1/p; d; }; s/^\(# \?\)\?//p; }' < $0 &&
-  echo
-  echo "run \`$name --help | more' for full usage"
-  exit 0
-  ;;
-
---help | -H)
-  ${SED-sed} -n -e '/^# '$name' version /,/^[^#]/ s/^\(# \?\)\?//p' < $0
-  exit 0
-  ;;
-
---test | -t)
-  test_mode=:
-  ;;
-
---mark-false-positives | -p)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_both" "p" "b list_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = without_falsepos"
-  }
-  ;;
-
---print-marked-false-positives | -f)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_matches" "" "b print_marked_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_falsepos = print_falsepos"
-  }
-  ;;
-
---print-false-positives | -F)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_matches" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_falsepos"
-  }
-  ;;
-
---deblob | --mark-blobs | -d)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_blobs" "p" "p"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---cat | -D)
-  shift;
-  set_sed_cmd () {
-    set_sed_main \
-      "# sedcat: Actual blob detected, but there may be false positives." \
-      "# sedcat: No blob whatsoever found." \
-      "# sedcat: False positives found." \
-      "p
-d
-# sedcat: Just print stuff, remove this line to run the actual script."
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---print-marked-blobs | -b)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs | -B)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob"
-  }
-  ;;
-
---print-marked-blobs-with-context | -c)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs-with-context | -C)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = print_blob"
-  }
-  ;;
-
---list-false-positives | -P)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_falsepos"
-  }
-  ;;
-
---list-all-matches | -x)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_blob = list_falsepos"
-  }
-  ;;
-
---print-all-matches | -X)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_both" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos"
-  }
-  ;;
-
-*)
-  case $1 in
-  --list-blobs | -l) shift;;
-  esac
-  case $1 in
-  -- | --implied-prefix | --prefix | -i) ;;
-  -*)
-    if test ! -f "$1"; then
-      echo "$name: \`$1' given too late or out of the proper sequence." >&2
-      echo "$name: The order of arguments is significant, see the usage." >&2
-      exit 1
-    fi
-    ;;
-  esac
-  ;;
-
-esac
-
-case $1 in
---)
-  sawdashdash=t
-  shift;;
-esac
-
-if $test_mode; then
- allpass=:
- for tool in awk perl python sed; do
-  echo testing $tool...
-
-  targs="-s 4 -i /deblob-check-testsuite/ --use-$tool"
-
-  pass=:
-
-
-  # Exercise some nasty inputs to see that we
-  # recognize them as blobs with full context.
-  test="positive context"
-  for string in \
-    "1,2,3,4" \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-    ".long 1,2
-     .long \$3,\$4" \
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-    "= {
-blob(
-)
-accept(
-)
-1, 2, 3, 4
-}" \
-  ; do
-    case `echo "$string" | $0 $targs -C` in
-    "::: - :::
-$string") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we do not recognize these as blobs.
-  test=negative
-  for string in \
-    "#define X { 1, 2 }
-#define Y { 3, 4 }" \
-    " 0x00, 0x00, 0x00 " \
-    "accept(1, 2, 3,
-4, 5, 6)" \
-  ; do
-    case `echo "$string" | $0 $targs` in
-    "") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we print only the lines with blobs.
-  test="only blob"
-  odd=:
-  for string in \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-	"1, 0x2, 03, L'\x4'" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long 1,2
-     .long \$3,\$4" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { 1, 2, \\
-		 3, 4, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   0x4c00c000, 0x00000000, 0x00060000, 0x00000000," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6, 7, 8;
-9, 10, 11" \
-      "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-::: - :::
-1, 2, 3, 4; 5, 6, 7, 8;" \
-\
-    "= {
-blob()
-accept()
-1, 2, 3, 4
-}" \
-	"blob()
-::: - :::
-1, 2, 3, 4" \
-\
-    "a blobeol y
-x" \
-	"a blobeol y
-x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -B` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # Make sure we deblob only the blobs.
-  test="deblobs"
-  odd=:
-  for string in \
-    "= { 1, 0x2, 03, L'\x4' }" \
-	"= { /*(DEBLOBBED)*/' }" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x/*(DEBLOBBED)*/\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long /*(DEBLOBBED)*/" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { /*(DEBLOBBED)*/, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   /*(DEBLOBBED)*/," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6; 7, 8, 9, 10;
-9, 10, 11" \
-      "/*(DEBLOBBED)*/
-::: - :::
-/*(DEBLOBBED)*/; 5, 6; /*(DEBLOBBED)*/;" \
-\
-    "= {
-accept() blob() x blob(
-) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "= {
-accept() blob() x blob(
-w) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "a blobeol y
-x" \
-	"a /*(DEBLOBBED)*/x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -b` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # How did we do?
-  if $pass; then
-    echo success for $tool
-  else
-    allpass=$pass
-  fi
- done
- $allpass
- exit
-fi
-
-# Call addx as needed to set up more patterns to be recognized as
-# false positives.  Takes the input filename in $1.
-
-set_except () {
-  blob "$blobseq"
-  # We leave out the initial and final letters of request_firmware so
-  # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
-  blobna 'equest_firmwar'
-  blobna 'equest_ihex_firmwar'
-  blobna 'MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\([ 	\n]*MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\)*'
-  blobna 'DEFAULT_FIRMWARE'
-  blobna '\([.]\|->\)firmware[ 	\n]*=[^=]'
-  blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\)["]'
-  # Ideally we'd whitelist URLs that don't recommend non-Free
-  # Software, but there are just too many URLs in Linux, and most are
-  # fine, so we just blacklist when we find undesirable URLs.
-  # Please report if you find any inappropriate URL in Linux-libre
-  # deblobbed documentation, sources or run-time log messages.
-  # blobna '\(f\|ht\)tp:[/]\([/]\+[^/ \n ]\+\)\+'
-
-  case $prefix$1 in
-  */*linux*.tar* | */*kernel*.tar* | */*linux-*.*/*)
-    # false alarms, contain source
-    # drivers/net/wan/wanxlfw.inc_shipped -> wanxlfw.S
-    accept 'static[ ]u8[ ]firmware\[\]=[{][\n]0x60,\(0x00,\)*0x16,\(0x00,\)*\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*[\n]0x23,0xFC,0x00,0x00,0x00,0x01,0xFF,0xF9,0x00,0xD4,0x61,0x00,0x06,0x74,0x33,0xFC,\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*0x00[\n][}][;]'
-    # drivers/usb/serial/xircom_pgs_fw.h -> xircom_pgs.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]xircom_pgs_firmware\[\][ ]='
-    # drivers/usb/serial/keyspan_pda_fw_h -> keyspan_pda.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]keyspan_pda_firmware\[\][ ]='
-    # arch/m68k/ifpsp060/*.sa -> src/*.s
-    accept '[	]\.long[	]0x60ff0000,0x02360000,0x60ff0000,0x16260000[\n]'"$sepx$blobpat*"
-    accept '[	]\.long[	]0x60ff0000,0x17400000,0x60ff0000,0x15f40000[\n]'"$sepx$blobpat*"
-    # arch/powerpc/platforms/cell/spufs/spu_save_dump.h_shipped -> spu_save.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_save_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped -> spu_restore.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_restore_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # drivers/net/ixp2000/ixp2400_tx.ucode -> ixp2400_tx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    # drivers/net/ixp2000/ixp2400_rx.ucode -> ixp2400_rx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-
-
-    # checked:
-
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    accept '__clz_tab:[\n][	]\.byte[	]0\(,[0-5]\)\+'"$sepx$blobpat*" arch/sparc/lib/divdi3.S
-    accept 'PITBL:[\n][ ][ ]\.long[ ][ ]0xC0040000,0xC90FDAA2,'"$blobpat*" arch/sparc/lib/divdi3.S
-    accept '\(0x[0F][0F],\)\+\\[\n]\(\(0x[0F][0F],\)\+\\[\n]\)*\(0x[0F][0F],\)\+0x00' arch/m68k/mac/mac_penguin.S
-    accept '\.lowcase:[\n][	]\.byte[ ]0x00\(,0x0[1-7]\)\+'"$sepx$blobpat*"'$' arch/s390/kernel/head.S
-    accept '_zb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]0\(,[123],0\)\+,4'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '_sb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]8\(,0,[123]\)\+,0'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]cpu_745x\[2\]\[16\][ ]=' arch/ppc/platforms/ev64260.c
-    initnc 'const[ ]unsigned[ ]char[ ]__flsm1_tab\[256\][ ]=' arch/alpha/lib/fls.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    initc '[	]static[ ]int[ ][ ][ ][ ][ ][ ]init_values_b\[\][ ]=' sound/oss/ad1848.c
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set2_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix\.txt|Documentation/serial/specialix\.txt'
-    accept '[ ][ ][ ][ ][ ][ ][ ][ ][ ]:[ ][ ][ ]3600000[ ][ ][ ]3400000[ ][ ][ ]3200000[ ][ ][ ]3000000[ ][ ][ ]2800000[ ]' Documentation/cpu-freq/cpufreq-stats.txt
-    accept '00[ ]00[\n]64[ ]01[\n]8e[ ]0b[\n][\n][0-9a-f \n]*fe[ ]fe' 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0f[ ]00[ ]08[ ]08[ ]64[ ]00[ ]0a[ ]00[ ]-[ ]id[ ]0[\n]'"$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept 'default[ ]nvram[ ]data:'"$sepx$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0x0458[ ][ ][ ][ ][ ]0x7025[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    accept '[ ][ ][(]gdb[)][ ]x[/]100x[ ][$]25[\n][ ][ ]0x507d2434:[ ][ ][ ][ ][ ]0x507d2434[ ][ ][ ][ ][ ][ ]0x00000000[ ][ ][ ][ ][ ][ ]0x08048000[ ][ ][ ][ ][ ][ ]0x080a4f8c'"$sepx$blobpat*" Documentation/uml/UserModeLinux-HOWTO.txt
-    accept '[ ][ ][ ][ ][ ][ ]1[ ][ ]0[ ][ ]0[ ][ ]0[ ][ ]0x308'"$sepx$blobpat*" Documentation/isdn/README.inc
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$' Documentation/sched-stats.txt
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync.c|net/sctp/sm_make_chunk.c|include/linux/scpt.h'
-    accept '[ ][*][ ][ ]1[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0' arch/x86/lguest/boot.c
-    ocomment '[	][/][*][ ]Configure[ ]the[ ]PCI[ ]bus[ ]bursts[ ]and[ ]FIFO[ ]thresholds.' drivers/net/fealnx.c
-    ocomment '[/][*][ ]the[ ]original[ ]LUT[ ]values[ ]from[ ]Alex[ ]van[ ]Kaam[ ]<darkside@chello\.nl>' drivers/hwmon/via686a.c
-    initc 'static[ ]const[ ]unsigned[ ]char[ ]init\[\][ ]=[ ][{][^;]*MODE=0[ ][;].*SAA_7114_NTSC_HSYNC_START' drivers/media/video/saa7114.c
-
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    # initnc '[ 	]*\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ \n	]*=[ ][{"]' 'crypto/\(tcrypt\|testmgr\).h'
-
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/delkin_cb\.c\|drivers/ide/pci/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]u8[ ]tas3004_treble_table\[\][ ]=' sound/aoa/codecs/tas-basstreble.h
-
-    # This file contains firmwares that we deblob with high
-    # sensitivity, so make sure the sequences of numbers that are not
-    # blobs are not deblobbed.  FIXME: we should have patterns to
-    # recognize the blobs instead.
-    defsnc '[	]static[ ]const[ ]u32[ ]test_pat\[4\]\[6\][ ]=' drivers/net/tg3.c
-    accept "[	][}]\\(,\\?[ ]mem_tbl_5\\(70x\\|705\\|755\\|906\\)\\[\\][ ]=[ ][{]$sepx$blobpat*$sepx[}]\\)*[;]" drivers/net/tg3.c
-
-    # end of generic checked expressions.
-    # version-specific checked bits start here
-
-    # removed in 2.6.28
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    # removed in 2.6.24
-    accept "[ ]Psize[ ][ ][ ][ ]Ipps[ ][ ][ ][ ][ ][ ][ ]Tput[ ][ ][ ][ ][ ]Rxint[ ][ ][ ][ ][ ]Txint[ ][ ][ ][ ]Done[ ][ ][ ][ ][ ]Ndone[\\n][ ]---------------------------------------------------------------\\([\\n][ 0-9]\\+\\)\\+"'$'
-    initnc 'static[ ]u_short[ ]ataplain_map\[NR_KEYS\][ ]__initdata[ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]char[ ]invert5\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]alpa2target\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]target2alpa\[\][ ]='
-    oprepline '#define[ ]INIT_THREAD[ ][{0},]\+[ 	]*\\[\n][ 	]*[{0},]\+'
-    initnc 'static[ ]uint[ ]tas300\(1c\|4\)_\(master\|mixer\|treble\|bass\)_tab\[\]='
-    initnc 'static[ ]short[ ]dmasound_[au]law2dma16\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]DACVolTable\[101\][ ]='
-
-    # removed in 2.6.23
-    initnc 'static[ ]const[ ]UQItype[ ]__clz_tab\[\][ ]=' arch/arm26/lib/udivdi3.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]scale\[101\][ ]=' sound/oss/opl3sa2.c
-    initnc '[}][ ]syncs\[\][ ]=' drivers/scsi/53c7xx.c
-    initnc 'genoa_md:'"$sepx$blobpat*"'[\n][	]\.ascii[	]["]Genoa["]' arch/i386/boot/video.S
-
-    # removed in 2.6.22
-    initnc 'Vendor[ ]ID[ ][ ]Product[ ]ID[\n]-\+[ ][ ]-\+[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    defsnc 'static[ ]short[ ][au]law2dma16\[\]' arch/ppc/8xx_io/cs4218_tdm.c
-    defsnc '[	]static[ ]const[ ]char[ ]minimal_ascii_table\[\]' drivers/ieee1394/csr1212.c
-    defsnc 'static[ ]u16[ ]key_map[ ]\[256\][ ]=' drivers/media/dvb/ttpci/av7110_ir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]gf64_inv\[64\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]short[ ]err_pos_lut\[4096\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]testdata\[TESTDATA_LEN\][ ]=' fs/jffs2/comprtest.c
-
-    # added in 2.6.25
-    accept "%canned_values[ ]=[ ][(][\\n][	]\\([0-9]\\+[ ]=>[ ]\\[[ 	\\n]\\+\\(\\([0-9]\\+\\|\\'0x[0-9a-f]\\+\\'\\),[ 	\\n]*\\)*\\]\\(,[ ]\\|[\\n]\\)\\)*[)][;]"
-
-    # from 2.6.25-rc* patches
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-
-    # new in 2.6.26
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf24\(13\|25\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-
-    # new in 2.6.27
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca561\|rev72a\)_init_data3\?\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]\(__\)\?u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_\(agc\|ofdm\|power_cck\(_ch14\)\?\)\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' Documentation/bt8xxgpio.txt
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]\(UINT32\|u32\)[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_b\[\][ ]=' drivers/net/wireless/rt2x00/rt2400pci.c
-
-    # request_firmware matches for 2.6.28
-    accept 'D:[ ]Firmware[ ]loader[ ][(]request_firmware[)]' CREDITS
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept 'This[ ]driver[ ]requires[ ]a[ ]patch[ ]for[ ]firmware_class[^\n]*[\n]request_firmware_nowait[ ]function\.' Documentation/dell_rbu.txt
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept 'Still,[ ]there[ ]are[ ]kernel[ ]threads[ ]that[ ]may[ ]want.*For[ ]example,[ ]if[ ]request_.*_firmware[(][)][ ]will[ ]fail[ ]regardless' Documentation/power/freezing-of-tasks.txt
-    accept 'Also,[ ]there[ ]may[ ]be[ ]some[ ]operations,.*calling[ ]request_firmware[(][)][ ]from[ ]their[ ].resume[(][)][ ]routines' Documentation/power/notifiers.txt
-    accept 'There[ ]is[ ]an[ ]USB[ ]interface[ ]for[ ]downloading[/]uploading.*request_firmware[ ]interface\.' Documentation/video4linux/si470x.txt
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    accept 'config[ ]FIRMWARE_IN_KERNEL.*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware:[ ]-[ ]send[ ]firmware[ ][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[^{]*[\n][{]\([\n]\+[^\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][	]return[ ]-EINVAL[;][\n][}]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-
-    accept 'static[ ]inline[ ]int[ ]request_ihex_firmware\?[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' include/linux/ihex.h
-    ocomment '[/][*][ ]Optional[ ]firmware\([^\n]*[\n][ ][*]\)*[^\n]*[ ]MODULE_FIRMWARE[(][)]'
-    oprepline '#define[ ]MODULE_FIRMWARE[(]_firmware[)]' include/linux/module.h
-    accept '[ ][*][ ]Sample[ ]code[ ]on[ ]how[ ]to[ ]use[ ]request_firmware[(][)][ ]from[ ]drivers\.' samples/firmware_class/firmware_sample_driver.c
-    accept '[	]\(retval\|error\)[ ]=[ ]request_firmware\(_nowait\)\?[(][^;]*["]sample_driver_fw["],[^;]*[)][;]' samples/firmware_class/firmware_sample_driver.c
-    ocomment '[	][/][*][ ]request_firmware[ ]blocks[ ]until[ ]userspace[ ]finished' samples/firmware_class/firmware_sample_driver.c
-    accept '[	][	][ 	]*["][ ]request_firmware_nowait[ ]failed' samples/firmware_class/firmware_sample_driver.c
-
-    # We used to remove these in early versions of Linux-libre.
-    # They're now believed to be mere initialization data, rather than
-    # code disguised as such, and they're not long enough so as to
-    # render the software non-Free.
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\|IPA_PDU_HEADER\|\(READ\|WRITE\)_CCW\)\[\][ ]=' drivers/net/qeth_core_mpc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]\(sync\|magic[0-3]\)_data\[\][ ]=' arch/sh/boards/mach-migor/lcd_qvga.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ov772x_magic\[\][ ]=' arch/sh/boards/mach-migor/setup.c
-    defsnc 'static[ ]struct[ ]chips_init_reg[ ]chips_init_[sgacfx]r\[\][ ]=' 'drivers/video/\(asiliant\|chips\)fb.c'
-
-    # This one is quite suspicious, but it's small enough (64 bytes
-    # total) that it's believable that it could be actual source code.
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-
-    # Hunting down non-Free firmware-loading code and instructions.
-    # Firmware names are to be caught anywhere.
-
-    # 2.6.26 but not later
-
-    blobname 'atmsar1[12]\.\(x\|start\|regions\|data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|ambassador\.c\)'
-    blob '#\(define\|include\)[ ]UCODE2\?[(][^\n]*' drivers/atm/ambassador.c
-    blob 'static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]' drivers/atm/ambassador.c
-    blob '\(#\(ifdef[ ]AMB_NEW_MICROCODE\|else\|endif\)[\n]#\(define\|include\)[ ]UCODE2\?[(][^\n]*[\n]\)\+\([\n]*static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]\)*' drivers/atm/ambassador.c
-
-    blobname '\(pca\|sba\)200e\(_ecd\)\?\.\(data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|fore200e\(_mkfirm\)\?\.c\)'
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*PCA-200E[ ]firmware[ ][*][/]' drivers/atm/fore200e_mkfirm.c
-    blobna '_fore200e_\(pca\|sba\)_fw_\(data\|size\)' drivers/atm/fore200e.c
-    blob '#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\([\n]\+#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\)*' drivers/atm/fore200e.c
-
-    # 2.6.27 but not later
-
-    blob 'cas_saturn_patch_t[ ]cas_saturn_patch\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/cassini.h
-    accept '[	][ ][ ]firmware[ ]files[ ]--[ ]the[ ]same[ ]names[ ]which[ ]appear[ ]in[ ]MODULE_FIRMWARE[(][)]' drivers/base/Kconfig
-
-    # 2.6.28 or earlier
-
-    blobname 'atmsar11\.fw' drivers/atm/ambassador.c
-
-    blob '\(#ifdef[ ]__\(LITTLE\|BIG\)_ENDIAN[\n]\)\?#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\([\n]#else[\n]#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\)*\([\n]#endif\)\?' drivers/atm/fore200e.c
-    blobna 'sprintf[(][^;]*fore200[^;]*FW_EXT[^;]*[)][;]' drivers/atm/fore200e.c
-    blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]\?' drivers/atm/fore200e.c
-    blobna 'The[ ]supplied[ ]firmware[ ]images.*http:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
-
-    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[ ]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]\+[}]\)\([\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]*\)*[^\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]*[\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]_\(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}][^\n]*\)*cp_microcode[^\n]*\([\n]\+[^\n}][^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    blobna 'Please[ ]use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
-    blob 'To[ ]extract[ ]the[ ]firmware[^\n]*Opera[ ]DVB-S1[ ]USB-Box.*[/]lib[/]firmware[/][ ]\.' Documentation/dvb/opera-firmware.txt
-    blobname '\(dvb-usb-opera[^\n]*\.fw\|2830S[^\n]*2\.sys\)' Documentation/dvb/opera-firmware.txt
-    blob 'Getting[ ]the[ ]Firmware\([\n][^\n]\+\)*' Documentation/dvb/ttusb-dec.txt
-
-    blob '[/][*][\n 	]*File[ ]automatically[ ]generated[ ]by[ ]createinit\.py[ ]using[ ]data[\n 	]*extracted[ ]from[ ]AF05BDA\.sys.*[}][;]' drivers/media/dvb/dvb-usb/af9005-script.h
-    blob '#include[ ]["]af9005-script\.h["]' drivers/media/dvb/dvb-usb/af9005-fe.c
-    blobna '[\n][	]scriptlen[ ]=[ ]sizeof[(]script[)][^;]*[;][\n][	]for[^{]*scriptlen[^{]*[{][^}]*[^\n	}]' drivers/media/dvb/dvb-usb/af9005-fe.c
-
-    accept 'struct[ ]\(sp8870\|tda1004x\)_config[\n][{][^}]*[(][*]request_firmware[)][^}]*[\n][}][;]' 'drivers/media/dvb/frontends/\(sp8870\|tda1004x\)\.h'
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*get_dvb_firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n]\(#define[ ]\(\([^\n 	]*_DEFAULT\|NONFREE\)_FIRMWARE\|["][^"]*["]\)[ ]\([^\n]\|[\\][\n]\)*\|[/][*][(]DEBLOBBED[)][*][/]\)\)*' 'drivers/media/dvb/frontends/\(nxt200x\|or51211\|sp887[0x]\|tda1004[8x]\)\.c'
-    blobname 'dvb-fe-sp8870\.fw' drivers/media/dvb/frontends/sp8870.c
-    blobname 'dvb-fe-tda1004[56]\.fw' drivers/media/dvb/frontends/tda1004x.c
-
-    # This bootcode is actually Free Software under GPLv2, but since it's
-    # being distributed without source code, we're taking it out.
-    blob 'static[ ]u8[ ]bootcode\[\][ ]=[ ][{][^}]*[}][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    blobname 'dvb-ttpci-01\.fw' drivers/media/dvb/ttpci/av7110.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-
-    blobname 'ttusb-budget[/]dspbootcode\.bin' drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-
-    blobname 'cpia2[/]stv0672_vp4\.bin' drivers/media/video/cpia2/cpia2_core.c
-
-    blobname 'dabusb[/]\(firmware\.fw\|bitstream\.bin\)' drivers/media/video/dabusb.c
-
-    blob 'static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\([\n]static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\)*' drivers/net/acenic_firwmare.h
-    blob '#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\([\n]#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\)\+' drivers/net/acenic_firmware.h
-    blob '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Do[ ]not[ ]try[ ]to[ ]clear[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n][	]\)\?ace_clear[^;]*[;][\n]\([^}]*[{][^}]*ace_copy[^}]*tigon2\?Fw[^}]*[}]\)*[\n]\+[	]return[ ]0[;][\n][}]' drivers/net/acenic.c
-    blob 'if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\([\n][	]if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\)*' drivers/net/acenic.c
-
-    blob '#include[ ]["]starfire_firmware\.h["]' drivers/net/starfire.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Load[ ]Rx[/]Tx[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n][	]for[ ][(][^)]*FIRMWARE_[RT]X_SIZE[^)]*[)][\n][	][	]writel[^;]*firmware_[rt]x[^;]*[;]\)\+' drivers/net/starfire.c
-
-    blob 'static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\)*' 'drivers/net/bnx2_fw2\?.h'
-    blob '#include[ ]["]bnx2_fw\.h["][\n][\n]*#include[ ]["]bnx2_fw2\.h["]' drivers/net/bnx2.c
-    blob 'static[ ]void[\n]load_rv2p_fw[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-    blob 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-
-    # init_data_e1h? might actually be just data, but it doesn't
-    # really matter.
-    blob 'static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\)*' drivers/net/bnx2x_init_values.h
-    blob 'static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\([\n][\n]*static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\)*' 'drivers/net/bnx2x_init\(_ops\)\?\.h'
-
-    blobname 'sun[/]cassini\.bin' drivers/net/cassini.c
-
-    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 '\(cxgb3[/]\)\?t3\(fw\|\(%c\|.\)_p\(rotocol_\)\?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]*[/][*][^*]*\([*]\+\([^/*]\|[/][\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
-
-    blob 'static[ ]unsigned[ ]char[ ]__devinitdata[ ]lanai4_\(code\|data\)\[[0-9]*\][ ]=[ ][{][^;]*[}][;]' drivers/net/myri_code.h
-    blob '#include[ ]["]myri_code\.h["]' drivers/net/myri_sbus.c
-    blobna '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_code_off[^;]*[;]\([\n	 ]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_\(code\|data\)_off[^;]*[;]\)*' drivers/net/myri_sbus.c
-
-    blob 'static[ ]u32[ ]s_firmLoad\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/tehuti_fw.h
-    blobna 'bdx_tx_push_desc_safe[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-    blobna 'for[ ][(][^\n]*ARRAY_SIZE[(]s_firmLoad[)][^\n]*[)][\n	 ]*s_firmLoad[^;]*=[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-
-    blob '[ ][*][ ]Firmware[ ]is:[\n][ ][*][	]Derived[ ]from[ ]proprietary[^/]*notice[ ]is[ ]accompanying[ ]it\.[\n][ ][*][/]' drivers/net/tg3.c
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blob '\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*\(static[ ]const[ ]u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\|#if[ ]0\([ ][/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?[\n]\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;][\n]#endif\)\)*' drivers/net/tg3.c
-
-    blob 'static[ ]const[ ]u8[ ]typhoon_firmware_image\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/typhoon-firmware.h
-
-    blobna 'licensed[^\n]*strictly[ ]for[ ]use[^\n]*[\n]*[^\n]*COPS[ ]LocalTalk' 'drivers/net/appletalk/cops_\(ff\|lt\)drv\.h'
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]ffdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ffdrv.h
-    blob 'static[ ]const[ ]unsgined[ ]char[ ]ltdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ltdrv.h
-    blob '#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/net/appletalk/cops.c
-
-    blob 'static[ ]unsigned[ ]char[ ]bits_1200\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam1200.h
-    blob 'static[ ]unsigned[ ]char[ ]bits_9600\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam9600.h
-    blob '#include[ ]["]yam\(96\|12\)00\.h["]\([\n][\n]*#include[ ]["]yam\(96\|12\)00\.h["]\)*' drivers/net/hamradio/yam.c
-
-    blobna 'static[ ]const[ ]u_char[ ]__Xilinx7OD\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/pcmcia/ositech.h
-    blob '#include[ ]["]ositech\.h["]' drivers/net/pcmcia/smc91c92_cs.c
-    blobna '\([/][*][ ]Download[ ]the[ ]Seven[ ]of[ ]Diamonds[ ]firmware[^/]*[*][/][\n	 ]*\)\?for[ ]*[(][^\n]*__Xilinx7OD[^{}]*[{][\n][	 ]*outb[ ]*[(]__Xilinx7OD[^}]*[}]' drivers/net/pcmcia/smc91c92_cs.c
-
-    blob 'static[ ]const[ ]u8[ ]microcode\[\][ ]=[ ][{][^}]*[}][ ]*[;]' drivers/net/tokenring/3c359_microcode.h
-    blob '#include[ ]["]3c359_microcode\.h["]' drivers/net/tokenring/3c359.c
-    blobna 'start[ ]=[ ][(]0xFFFF[ ]-[ ][(]mc_size[)][^;]*[;][\n 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n 	]*printk[(]KERN_INFO[ ]["]3C359:[ ]Uploading[ ]Microcode:[ ]["][)][;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\([\n][ 	]*printk[^\n]*[;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\)*' drivers/net/tokenring/3c359.c
-
-    blobname 'tr_smctr\.bin' drivers/net/tokenring/smctr.c
-
-    blobname 'kaweth[/]\(new\|trigger\)_code\(_fix\)\?\.bin' drivers/net/usb/kaweth.c
-
-
-    blobname '\(agere\|prism\)_\(sta\|ap\)_fw\.bin' 'drivers/net/wireless/\(orinico/\)\?\(orinoco\|fw\)\.c'
-    blobname 'symbol_sp24t_\(prim\|sec\)_fw' 'drivers/net/wireless/\(\(orinico/\)\?orinoco\.c\|spectrum_cs\.c\)'
-
-    blob 'unsigned[ ]short[ ]sbus_risc_code01\[\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]' drivers/scsi/qlogicpti_asm.c
-    blob '#include[ ]["]qlogicpti_asm\.c["]' drivers/scsi/qlogicpti.c
-
-    blob '\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/scsi/advansys.c
-
-    blob '\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc\|fw12\(80e\|160\)i\)_code01\[\][ ]=[ ][{]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code01\[\][ ]=[ ][{][\n]#endif[\n]\)\?[^}]*[}][;]\([\n][\n]*\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc_code\|fw12\(80e\|160\)i\)_length01[ ]=[ ][^;]*[;]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code_length01[ ]=[ ][^;]*[;][\n]#endif\)\?\)\?' 'drivers/scsi/ql1\(04\|2\(8\|16\)\)0_fw\.h'
-
-    blobname 'emi26[/]\(bitstream\|firmware\|loader\)\.fw' drivers/usb/misc/emi26.c
-
-    blobname 'emi62[/]\(bitstream\|midi\|spdif\|loader\)\.fw' drivers/usb/misc/emi62.c
-
-    blobname 'keyspan[/]\(mpr\|usa\(18x\|19\(q[iw]\|w\)\?\|28\(x\(a\|b\)\?\)\?\|49w\(lc\)\?\)\)\.fw' drivers/usb/serial/keyspan.c
-
-    accept '[	][	]fw_name[ ]=[ ]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][;]' drivers/usb/serial/keyspan_pda.c
-    blobna 'fw_name[ ]=[ ][^\n]*\([\n]\+[^\n}][^\n]*\)*\([/][*]KEYSPAN_PDA[*][/]\)\?request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-
-    blobname 'edgeport[/]\(boot\|down\)2\?\.fw' drivers/usb/serial/io_edgeport.c
-    blobname 'edgeport[/]down3\.bin' drivers/usb/serial/io_ti.c
-
-    blobname 'ti_\(usb-\)\?\(%d\|3410\|5052\)\.\(fw\|bin\)' drivers/usb/serial/ti_usb_3410_5052.c
-
-    blobname 'whiteheat\(_loader\(_debug\)\?\)\?\.fw' drivers/usb/serial/whiteheat.c
-
-    blob 'static[ ]struct[ ]BA1struct[ ]BA1Struct[ ]=[ ][{][^;]*[}][;]' sound/pci/cs46xx/cs46xx_image.h
-
-    blob 'static[ ]u32[ ]cwc\(4630\|async\|snoop\)_\(code\|parameter\)\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(4630\|async\|snoop\)\.h'
-    # cwcbinhack appears to have been created by hand.
-    # cwcdma has sources (not verified) in cwcdma.asp.
-    accept 'static[ ]u32[ ]cwc\(binhack\|dma\)_code\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(binhack\|dma\)\.h'
-    blob '#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\([\n][\n]*#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\)*' sound/pci/cs46xx/cs46xx_lib.c
-
-    blobname 'korg[/]k1212\.dsp' sound/pci/korg1212/korg1212.c
-
-    blobname 'ess[/]maestro3_assp_\(kernel\|minisrc\)\.fw' sound/pci/maestro3.c
-
-    blobname 'yamaha[/]ds1e\?_\(ctrl\|dsp\)\.fw' sound/pci/ymfpci/ymfpci_main.c
-
-    blobname 'sb16[/]\(\(a\|mu\)law_main\|ima_adpcm_\(init\|capture\|playback\)\)\.csp' sound/isa/sb/sb16_dsp.c
-
-    blob 'static[ ]const[ ]struct[ ][{][^}]*[}][ ]yss225_registers\[\][ ]__devinitdata[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/yss225.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    blobna 'firmware[ ]=[ ][&]yss225_registers_firmware[;]' sound/isa/wavefront/wavefront_fx.c
-    blob 'static[ ]const[ ]struct[ ]firmware[ ]yss225_registers_firmware[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/wavefront_fx.c
-    blobna '\(ospath[	 ]*-[ ]Pathname[^\n]*ICS2115[^-]*wavefront\.os\|Note:[ ]the[ ]firmware[ ]file[ ]["]wavefront\.os["]\)[^-]*[/]lib[/]firmware\.\([^.]*after[ ]upgrading[ ]the[ ]kernel\)\?' Documentation/sound/alsa/ALSA-Configuration.txt
-    blobname 'wavefront\.os' sound/isa/wavefront/wavefront_synth.c
-
-    blobna 'and[\n]require[ ]the[ ]use[ ]of[^\n]*propr\?ietary[^:]*' Documentation/arm/IXP4xx
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-
-    blobname 'xc\(%d\|[0-9]*\)\.bin' arch/arm/mach-netx/include/mach/xc.h
-    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 'iop_fw_load_[sm]pu' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'int[ ]iop_fw_load_[sm]pu[(]' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept '[	]retval[ ]=[ ]request_firmware[^;]*[&]iop_[sm]pu_device' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'EXPORT_SYMBOL[(]iop_fw_load_[sm]pu[)][;]' arch/cris/arch-v32/drivers/iop_fw_load.c
-
-    accept '[/][*][ ]fake[ ]device[ ]for[ ]request_firmware[ ][*][/]' arch/x86/kernel/microcode_core.c
-
-    blobname 'amd-ucode[/]microcode_amd\.bin' arch/x86/kernel/microcode_amd.c
-
-    blobname 'intel-ucode[/]\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)' 'arch/x86/kernel/microcode\(_intel\)\?\.c'
-
-    blobname 'BCM2033-\(MD\.hex\|FW\.bin\)' drivers/bluetooth/bcm203x.c
-
-    blobname 'bfubase\.frm' drivers/bluetooth/bfusb.c
-
-    blobname 'BT3CPCC\.bin' drivers/bluetooth/bt3c_cs.c
-
-    blobname 'cyzfirm\.bin' drivers/char/cyclades.c
-
-    accept 'MODULE_FIRMWARE[(]["]dsp56k[/]bootstrap\.bin["][)][;]' drivers/char/dsp56k.c
-    blobna 'const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-    accept '[	]const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-
-    blobname 'isi\(6\(08\|\(08\|16\)em\)\|46\(08\|16\)\)\.bin' drivers/char/isicom.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
-    # only issues a firmware request if specifically told to.  It
-    # doesn't require any non-Free firwmare to function, and it
-    # doesn't actually recommend users to perform updates, so I'm
-    # leaving it in.
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    accept '[	]*["]dell_rbu:%s[ ]request_firmware_nowait["]' drivers/firmware/dell_rbu.c
-
-    blobname 'xc3028-v27\.fw' drivers/media/common/tuners/tuner-xc2028.h
-    blobname 'xc3028L-v36\.fw' drivers/media/common/tuners/tuner-xc2028.h
-
-    blobname 'dvb-fe-xc5000-1\.1\.fw' drivers/media/common/tuners/xc5000.c
-
-    blobname '4210\(100[12]\|%4X\)\.sb' drivers/net/irda/irda-usb.c
-    blobna '[/][*][ 	\n*]*[ ]Known[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]*\(STIR421x\|4210\(100[12]\|%4X\)\.sb\)[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/irda/irda-usb.c
-
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobna 'If[ ]the[ ]driver[ ]can[ ]neither[ ]enable[ ]ECRC[^*]*\([*]\+[^/*][^*]*\)*[*]*myri10ge_\(rss_\)\?ethp\?_z8e\.dat[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/myri10ge.c
-
-    blobname 'spider_fw\.bin' drivers/net/spider_net.h
-
-    blobname 'tms380tr\.bin' drivers/net/tokenring/tms380tr.c
-
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    accept '[	]*priv->firmware[ ]=[ ]\(NULL\|new_firmware\)[;]' drivers/net/wireless/atmel.c
-
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname 'pcm5\.fw' drivers/net/wireless/b43/main.c
-    blobna 'b43legacyerr[(][^;]*must[ ]go[ ]to[ ]http[^;]*b43#devicefirmware[^;]*[)][;]' drivers/net/wireless/b43legacy/main.c
-    blobna 'You[ ]must[ ]go[ ]to[^;]*b43#devicefirmware[^;]*[^";)]' drivers/net/wireless/b43/main.c
-    blobna 'http:[/][/]wireless[^ ";)]*b43#devicefirmware' drivers/net/wireless/b43/main.c
-
-    blob '#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\([\n][\n]*#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname 'ipw2100-\(["]\([^"\n]\|[\\][\n]\)*["]\([^"]\|[\\]["]\)*\)\+' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '__stringify[(]IPW2100_FW_MINOR_VERSION[)]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[ ]*Portions[ ]of[ ]ipw2100_\(do_\)\?mod_firmware_load[, 	]*\(ipw2100_\(do_\)\?mod_firmware_load[, 	and\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]ipw2100_mod_firmware_load[(]fw[)][;]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobna 'if[ ][(]IPW2100_FW_MAJOR[^{]*[{][^}]*[	][}]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '["]["][ ]x[ ]["]\.fw["]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-
-    accept '[/][*][ ]Call[ ]this[ ]function[ ]from[ ]process[ ]context[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    blobname 'ipw2200-\(i\?bss\|sniffer\)\.fw' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    accept '[	][	]IPW_ERROR[(]["]%s[ ]request_firmware[ ]failed' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname 'iwlwifi-3945-' drivers/net/iwlwifi/iwl-3945.h
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    accept '#define\([ ]_\?IWL3945_MODULE_FIRMWARE[(]api[)]\)\+' drivers/net/iwlwifi/iwl-3945.h
-    accept '[	][ ][*][ ]request_firmware[(][)][ ]is[ ]synchronous' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\)\.c'
-    blobname 'iwlwifi-4965-' drivers/net/iwlwifi/iwl-4965.c
-    blobname 'iwlwifi-5\(00\|15\)0-' drivers/net/iwlwifi/iwl-5000.c
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\|idx\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'usb8388\(-5\.126\.0\.p5\)\?\.bin' drivers/net/wireless/libertas/if_usb.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*usb8388\(-5\.126\.0\.p5\)\?\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]lbs_pr_err[(]["]request_firmware\([(][)]\)\?[ ]failed' 'drivers/net/wireless/if_\(spi\|usb\)\.c'
-    blobna 'o\.[ ]Copy[ ]the[ ]firmware[ ]image[^\n]*usb8388\([^\n]\|[\n][ 	]*[^ 	\n]\)*' drivers/net/wireless/libertas/README
-    blobna '\[fw_name=usb8388[^]]*\]' drivers/net/wireless/libertas/README
-
-    blobname 'usb8388\.bin' drivers/base/Kconfig
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-
-    blobname 'lbtf_usb\.bin' drivers/net/wireless/libertas_tf/if_usb.c
-
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' '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 'rt2[56]61s\?\.bin' drivers/net/wireless/rt2x00/rt61pci.h
-    blobname 'rt73\.bin' drivers/net/wireless/rt2x00/rt73usb.h
-
-    blobname 'zd1201\(-ap\)\?\.fw' drivers/net/wireless/zd1201.c
-
-    blobname 'zd1211[/]zd1211b\?_\(u\([rb]\|phr\)\?\)\?' drivers/net/wireless/zd1211/zd_usb.c
-
-    # ??? gotta introduce some means to match false-positives
-    # including post context containing blobs, so that the macro name
-    # is not flagged or deblobbed, but the blob name is.
-    # blobna 'PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)'
-    # accept '[	]    PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(][^)]*, ["][/][*][(]DEBLOBBED[)][*][/]["][)]'
-    # accept '#define PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(]' include/pcmcia/device_id.h
-
-    # These are not software; they're Free, but GPLed without in-tree sources.
-    # blobname '\(cis[/]\)\?3CCFEM556\.cis' drivers/net/pcmcia/3c574_cs.c
-    # blobname '\(cis[/]\)\?3CXEM556\.cis' drivers/net/pcmcia/3c589_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis' drivers/net/pcmcia/pcnet_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\)\.cis' drivers/serial/serial_cs.c
-    # These are not software; they're Free, but GPLed without textual sources.
-    # It is safe to assume that these binaries *are* sources, since they
-    # can be trivially converted back to a textual form, without loss.
-    # blobname '\(cis[/]\)\?SW_\([78]xx\|555\)_SER\.cis' drivers/serial/serial_cs.c
-
-    accept '[	]\(ds_\)\?\(dev_\)\?dbg[(]\(1[,][ ]\)\?\([&]dev->dev,[ ]\)\?["]trying[ ]to[ ]load[ ]\(CIS[ ]file\|firmware\)[ ]%s[\\]n["],[ ]filename[)][;][\n]*[	]if[ ][(]\(strlen[(]filename[)][^\n]*\([{][^}]*[	][}]\|[)][\n][	]*return[^\n]*[;]\)[\n]*[	]snprintf[(]path,[ ]\(20\|sizeof[(]path[)]\),[^\n]*,[ ]filename[)][;][\n]*[	]if[ ][(]request_firmware[(][&]fw,[ ]path\|request_firmware[(][&]fw,[ ]filename\),[ ][&]dev->dev[)][^\n]*[)][ ][{][\n][	]*if[ ][(]fw->size[ ]>=[ ]CISTPL_MAX_CIS_SIZE[)]' drivers/pcmcia/ds.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\)*' drivers/net/pcnet_cs.c
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]err[ ]=[ ]request_firmware[(][&]asd_ha->bios_image,[\n 	]*filename_ptr,[\n 	]*[&]asd_ha->pcidev->dev[)][;]' drivers/scsi/aic94xx/aic94xx_init.c
-    blobname 'aic94xx-seq\.fw' drivers/scsi/aic94xx/aic94xx_seq.h
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-
-    accept '[	]res[ ]=[ ]request_firmware[(]&fw,[ ]["]sas_addr["],[ ]&shost->shost_gendev[)][;]' drivers/scsi/libsas/sas_scsi_host.c
-
-    blobname 'ql\(2\([12345]00\|322\)\|8[12]00\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]' drivers/scsi/qla2xxx/Kconfig
-
-    blobname 'icom_\(asc\|res_dce\|call_setup\)\.bin' drivers/serial/icom.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\|net/wireless\)/at76_usb/at76_usb\.c\|at76c50x-usb\.c\)'
-
-    accept 'static[ ]struct[ ]go7007_usb_board[ ]board_\(matrix_\(ii\|reload\|revolution\)\|star_trek\|px_tv402u\|xmen\|lifeview_lr192\|endura\|adlink_mpg24\|sensoray_2250\)[ ]=[ ][{][\n]\([	]\.flags[ 	]*=[ ][^",]*,[\n]*\)*[	]\.main_info[ 	]*=[ ][{][\n][	][	]\.firmware[ 	]*=[ ]' drivers/staging/go7007/go7007-usb.c
-    accept 'static[ ]struct[ ]go7007_board_info[ ]board_voyager[ ]=[ ][{][\n][	]\.firmware[	 ]*=[ ]' drivers/staging/go7007/saa7134-go7007.c
-    blobname 'go7007\(fw\|tv\)\.bin' 'drivers/staging/go7007/\(go7007-\(driver\|usb\)\|saa7134-go7007\)\.c'
-
-    blobname 'cxacru-\(%s\|fw\|bp\|cf\)\.bin' drivers/usb/atm/cxacru.c
-
-    blobname 'speedtch-\(%d\|[0-9]*\)\.bin\(\.\(%x\|\(0x\)\?[0-9a-fA-F]*\)\(\.\(%02x\|[0-9a-fA-F][0-9a-fA-F]\)\)\?\)\?' drivers/usb/atm/speedtch.c
-
-    blobname 'ueagle-atm[/]' drivers/usb/atm/ueagle-atm.c
-    blobname '\(adi930\|eagle\(I*\|IV\)\)\.fw' drivers/usb/atm/ueagle-atm.c
-    blobname 'DSP[49e][ip]\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname '930-fpga\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-
-    blobname 'isight\.fw' drivers/usb/misc/isight_firwmare.c
-
-    blobname '\(i1480-\(pre-phy\|usb\|phy\)\|ptc\)-0\.0\.bin' drivers/uwb/i1480/dfu/usb.c
-
-    accept '[	]retval[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]metronome\.wbf["],[ ][&]dev->dev[)][;]' drivers/video/metronomefb.c
-
-    blobname '\(vx[/]\)\?\(bx_1_v\(xp\|p4\)\.b56\|x1_\(1_v\(x[2p]\|p4\)\|2_v22\)\.xlx\|bd56\(002\|3v2\|3s3\)\.boot\|l_1_v\(x[2p]\|p4\|22\)\.d56\)' sound/drivers/vx/vx_hwdep.c
-
-    blobname '\(ea[/]\)\?darla20_dsp\.fw' sound/pci/echoaudio/darla20.c
-    blobname '\(ea[/]\)\?darla24_dsp\.fw' sound/pci/echoaudio/darla24.c
-    blobname '\(ea[/]\)\?\(\(loader\|echo3g\)_dsp\|3g_asic\)\.fw' sound/pci/echoaudio/echo3g.c
-    blobname '\(ea[/]\)\?gina20_dsp\.fw' sound/pci/echoaudio/gina20.c
-    blobname '\(ea[/]\)\?\(\(loader\|gina24_3[06]1\)_dsp\|gina24_3[06]1_asic\)\.fw' sound/pci/echoaudio/gina24.c
-    blobname '\(ea[/]\)\?\(loader\|indigo\)_dsp\.fw' sound/pci/echoaudio/indigo.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_dj\)_dsp\.fw' sound/pci/echoaudio/indigodj.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_io\)_dsp\.fw' sound/pci/echoaudio/indigoio.c
-    blobname '\(ea[/]\)\?layla20_\(dsp\|asic\)\.fw' sound/pci/echoaudio/layla20.c
-    blobname '\(ea[/]\)\?\(\(loader\|layla24\)_dsp\|layla24_\(1\|2[AS]\)_asic\)\.fw' sound/pci/echoaudio/layla24.c
-    blobname '\(ea[/]\)\?\(loader\|mia\)_dsp\.fw' sound/pci/echoaudio/mia.c
-    blobname '\(ea[/]\)\?\(\(loader\|mona_3[06]1\)_dsp\|mona_3[06]1\(_1\)\?_asic_\(48\|96\)\|mona_2_asic\)\.fw' sound/pci/echoaudio/gina24.mona
-    blobname 'ea[/]%s' sound/pci/echoaudio/echoaudio.c
-
-    blobname 'emu[/]\(hana\|\(audio\|micro\)_dock\|emu\(0404\|1010\(b\|_notebook\)\)\)\.fw' sound/pci/emu10k1/emu10k1_main.c
-
-    blobname '\(mixart[/]\)\?miXart8\(AES\)\?\.\(xlx\|elf\)' sound/pci/mixart/mixart_hwdep.c
-
-    blobname '\(pcxhr[/]\)\?\(x[ic]_1_882\|[ebd]321_512\|xlxint\|\(xlxc\|dsp[ebd]\)\(882\|1\?222\|924\)\(e\|hr\)\?\)\(\.dat\|\.[ebd]56\)' sound/pci/pcxhr/pcxhr_hwdep.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
-    blobna 'chip->firmware[ ]=[ ]firmware[;]' sound/pci/riptide/riptide.c
-
-    blobname '\(multi\|digi\)face_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-
-    blobname 'aica_firmware\.bin' sound/sh/aica.c
-
-    accept '[ ][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Caution:[ ]This[ ]API[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware.' sound/sound_firmware.c
-    accept 'static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'int[ ]mod_firmware_load[(]' sound/sound_firmware.c
-    accept '[	]r[ ]=[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'EXPORT_SYMBOL[(]mod_firmware_load[)][;]' sound/sound_firmware.c
-    accept 'extern[ ]int[ ]mod_firmware_load[(]' sound/oss/sound_firmware.h
-
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]PERMCODESIZE[ ]=[ ]mod_firmware_load[(]PERMCODEFILE,[ ][&]PERMCODE[)][;]' sound/oss/msnd_pinnacle.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?pndsp\(ini\|erm\)\.bin' '\(sound/oss/msnd_pinnacle.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' '\(sound/oss/msnd_classic.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobna '\(Important[ ]Notes[ ]-[ ]Read[ ]Before[ ]Using\|Obtaining[ ]and[ ]Creating[ ]Firmware[ ]Files\)[\n]#[ ][ ]~*\([^\n]\|[\n]#[ ]*\([\n]#[ ]*\([\n]#[ ]*For[ ]the[^\n]*[\n]#[ ]*~*[\n]\)\?\)\?[^\n ]\)*\.' Documentation/sound/oss/MultiSound
-
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    blobname '[/]sndscape[/]\(scope\.cod\|sndscape\.co\([?dx01234]\|%d\)\)' sound/oss/sscape.c
-
-    accept '[	][	]trix_boot_len[ ]=[ ]mod_firmware_load[(]' sound/oss/trix.c
-    blobname '\([/]etc[/]sound[/]\)\?trxpro\.bin' sound/oss/trix.c
-
-    accept '[	][	]smw_ucodeLen[ ]=[ ]mod_firmware_load[(]' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\)\?midi0001\.bin' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' sound/oss/Kconfig
-
-    blob 'When[ ]the[ ]module[ ]is[ ]loaded[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]*\)*' Documentation/sound/oss/PSS
-    blob 'pss_firmware[ \n	]*This[ ]parameter[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]\+\)*' Documentation/sound/oss/PSS-updates
-    accept '[	][	]pss_synthLen[ ]=[ ]mod_firmware_load[(]pss_firmware,[ ][(]void[ ][*][)][ ][&]pss_synth[)][;]' sound/oss/pss.c
-    accept '[	]*if[ ]\?[(]\(!\|fw_load[ ][&][&][ ]\)\?pss_synth' sound/oss/pss.c
-    accept '[	]*if[ ][(]!pss_download_boot[(]devc,[ ]pss_synth,[ ]pss_synthLen,' sound/oss/pss.c
-    accept '[	]*vfree[(]pss_synth[)][;]' sound/oss/pss.c
-    blobna 'to[ ]allow[ ]the[ ]user[ ][^/"]*fir[em]ware[ ]file[^/"]*["][^"*]*["]' sound/oss/pss.c
-    blobname '\([/]etc[/]sound[/]\)\?pss_synth' sound/oss/pss.c
-    accept '[	][$][(]obj[)][/]bin2hex[ ]pss_synth' sound/oss/Makefile
-    accept '[	][ ]*echo[ ][\'"'"']static[ ]\(unsigned[ ]char[ ][*][ ]*\|int[ ]\)pss_synth\(Len\)\?[ ]=[ ]\(NULL\|0\)[;]' sound/oss/Makefile
-
-    accept '[	]\.request_firmware[ ]=[ ]NULL,' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept '[	 ]*["]request_firmware[ ]\(fatal[ ]error\|unable[ ]to[ ]locate\|:[ ]Failed[ ]to[ ]find\)' drivers/media/video/pvrusb2/pvrusb2-hdw.c
-    accept '[ ][*][ ]NOTE[ ]:[ ]the[ ]pointer[ ]to[ ]the[ ]firmware[ ]data[ ]given[ ]by[ ]request_firmware[(][)]' drivers/media/video/pvrusb2-hdw.c
-
-    blobname 'dvb-usb-\(dw\(210[124]\|3101\)\|s630\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]gp8psk_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-gp8psk-0[12]\.fw' drivers/media/dvb/dvb-usb/gp8psk.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]opera1_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-opera-\(fpga-\)\?-01\.fw' drivers/media/dvb/dvb-usb/opera1.c
-
-    blobname 'dvb-fe-af9013\.fw' drivers/media/dvb/frontends/af9013_priv.h
-
-    blobname 'dvb-fe-bcm3510-01\.fw' drivers/media/dvb/frontends/bcm3510.c
-
-    blobname 'dvb-fe-cx24116\.fw' drivers/media/dvb/frontends/cx24116.c
-
-    blobname 'dvb-fe-nxt2002\.fw' drivers/media/dvb/frontends/nxt200x.c
-
-    blob '[/][*][\n][ ][*][ ]This[ ]driver[ ]needs[ ]two[ ]external[ ]firmware[ ]files[^*]*\([*]\+[^/*][^*]*\)*[*]*dvb-fe-or51132-\(vsb\|qam\)\.fw[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/dvb/frontends/or51132.c
-    blobname 'dvb-fe-or51132-\(vsb\|qam\)\.fw' drivers/media/dvb/frontends/or51132.c
-
-    blobname 'dvb-fe-or51211\.fw' drivers/media/dvb/frontends/or51211.c
-
-    blobname 'dvb-fe-sp887x\.fw' drivers/media/dvb/frontends/sp887x.c
-
-    blobname 'dvb-fe-tda10048-1\.0\.fw' drivers/media/dvb/frontends/tda10048.c
-
-    blobname '\(\(dvb\|tdmb\|isdbt\)_nova\|cmmb_vega\)_12mhz\(_b0\)\?\.inp' drivers/media/dvb/siano/smscoreapi.c
-
-    blobname '\(dvb[th]\(_bda\)\?\|tdmb\)_stellar_usb\.inp' drivers/media/dvb/siano/smsusb.c
-
-    blobname 'dvb-ttusb-dec-\(2000t\|2540t\|3000s\)\.fw' drivers/media/dvb/ttusb-dec/ttusb_dec.c
-
-    blob 'For[ ]the[ ]WinTV[/]PVR[^:]*firmware[^:]*:[\n]hcwamc\.rbf[^\n]*\([\n][^\n][^\n]*\)*' Documentation/video4linux/bttv/README
-    blobname 'hcwamc\.rbf' drivers/media/video/bt8xx/bttv-cards.c
-    blobna 'The[ ]hcwamc\.rbf[ ]firmware[ ]file[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/bt8xx/bttv-cards.c
-
-    blobname 'v4l-cx23418-dig\.fw' drivers/media/video/cx18/cx18-av-firmware.c
-    blobname 'v4l-cx23418-[ac]pu\.fw' drivers/media/video/cx18/cx18-firwmare.c
-
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-
-    blobname 'v4l-\(cx23\(885\|1xx\)-avcore-01\|cx25840\)\.fw' drivers/media/video/cx25840/cx25840-firmware.c
-
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-
-    blobname 'v4l-cx2341x-init\.mpg' drivers/media/video/ivtv/ivtv-firwmare.c
-
-    blobname 'v4l-pvrusb2-\(2[49]\|73\)xxx-01\.fw' drivers/media/video/pvrusb2/pvrusb2-devattr.c
-
-    blobname 'f2255usb\.bin' drivers/media/video/s2255drv.c
-
-    blobname 'drx397xD\.\(A2\|B1\)\.fw' drivers/media/dvb/frontends/drx397xD_fw.h
-
-    accept '#define[ ]DIB0700_DEFAULT_DEVICE_PROPERTIES[ ]\\[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^\n",]*,[ ]\\[\n]\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-dib0700-1\.[12]0\.fw' 'drivers/media/dvb/dvb-usb/dib0700_\(devices\|core\)\.c'
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]nova_t_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-nova-t-usb2-02\.fw' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]umt_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/umt-010.c
-    blobname 'dvb-usb-umt-010-02\.fw' drivers/media/dvb/dvb-usb/umt-010.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]ttusb2_properties\(_s2400\)\?[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/ttusb2.c
-    blobname 'dvb-usb-\(pctv-400e\|tt-s2400\)-01\.fw' drivers/media/dvb/dvb-usb/ttusb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]cxusb_bluebird_\(lgh064f\|dee1601\|lgz201\|dtt7579\|nano2_needsfirmware\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/cxusb.c
-    blobname 'dvb-usb-bluebird-0[12]\.fw' drivers/media/dvb/dvb-usb/cxusb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dtt200u\|wt220u\(_\(fc\|zl0353\|miglia\)\)\?\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dtt200u.c
-    blobname 'dvb-usb-\(dtt200u-01\|wt220u-\(02\|fc03\|\(zl0353\|miglia\)-01\)\)\.fw' drivers/media/dvb/dvb-usb/dtt200u.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    blobname 'dvb-usb-vp7045-01\.fw' drivers/media/dvb/dvb-usb/vp7045.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dibusb\(1_1\(_an2235\)\?\|2_0b\)\|artec_t1_usb2\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mb.c
-    blobname 'dvb-usb-\(dibusb-\(5\.0\.0\.11\|an2235-01\|6\.0\.0\.8\)\|adstech-usb2-02\)\.fw' drivers/media/dvb/dvb-usb/dibusb-mb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]a800_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/a800.c
-    blobname 'dvb-usb-avertv-a800-02\.fw' drivers/media/dvb/dvb-usb/a800.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]af9005_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9005.c
-    blobname 'af9005\.fw' drivers/media/dvb/dvb-usb/af9005.c
-
-    accept '[	][	]\.download_firmware[ ]=[ ]af9015_download_firmware,[\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    blobname 'dvb-usb-af9015\.fw' drivers/media/dvb/dvb-usb/af9015.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]dibusb_mc_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mc.c
-    blobname 'dvb-usb-dibusb-6\.0\.0\.8\.fw' drivers/media/dvb/dvb-usb/dibusb-mc.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp702x_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp702x.c
-    blobname 'dvb-usb-vp702x-02\.fw' drivers/media/dvb/dvb-usb/vp702x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]digitv_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/digitv.c
-    blobname 'dvb-usb-digitv-02\.fw' drivers/media/dvb/dvb-usb/digitv.c
-
-    blob 'Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\([\n][\n]--*[\n][\n]\?Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\)*' firmware/WHENCE
-
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-
-    accept '[ ][ ][ ][ ]mv[ ]["][$]ofile["][ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$]objbin[/]mktree[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[	]rm[ ]-f[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$][{]CROSS[}]objcopy[ ]-O[ ]binary[ ]["][$]ofile["][ ]["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]odir=["][$][(]dirname[ ]["][$]ofile\.bin["][)]["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]gzip[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-
-    blobname 'di\(\(dn\|pr\)load\|diva\(pp\)\?\|hscx\|v110\|modem\|fax\|_etsi\|_\(1tr6\|belg\|franc\|atel\|ni\|5ess\|japan\|swed\)\|dspdld\)\.\(bin\|s[xyqm]\|p\)' drivers/isdn/hardware/eicon/cardtype.h
-    blobname 'dsp\(dload\|dqsig\|dvmdm\|dvfax\)\.bin' drivers/isdn/hardware/eicon/dsp_defs.h
-
-    blobname 'vicam[/]firmware\.fw' drivers/media/video/usbvideo/vicam.c
-
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-
-    # New in 2.6.29
-    blobname 'acenic[/]tg[12]\.bin' drivers/net/acenic.c
-    blobname 'adaptec[/]starfire_[rt]x\.bin' drivers/net/starfire.c
-    blobname 'e100[/]d10\(1[ms]\|2e\)_ucode\.bin' drivers/net/e100.c
-    blobname 'tigon[/]tg3\(_tso5\?\)\?\.bin' drivers/net/tg3.c
-    blobname '\(ti_usb-v\(%04x\|[0-9a-f]*\)-p\(%04x\|[0-9a-f]*\)\|mts_\(cdma\|gsm\|edge\)\)\.\(bin\|fw\)' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'iw\?\(2400\|6050\)m\?-fw-\(sdio\|usb\)-\(\(["][ ]I2400M_FW_VERSION[ ]["]\|[0-9.]*\)\.sbcf\|[^". \n]*\)' 'drivers/net/wimax/i2400m/\(sdio\|usb\)\.c'
-    blob '3\.[ ]Installing[ ]the[ ]firmware[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*[\n]*[$][^\n]*i2400m-fw[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*' Documentation/wimax/README.i2400m
-    blob '6\.1\.[ ]Driver[ ]complains[^\n]*i2400m-fw[^\n]*\([\n][\n]*\([ ][ ][ ]\|i2400m_usb\)[^\n]*\)*' Documentation/wimax/README.i2400m
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    accept '\(div_table_\(clz\|inv\|ix\)\|zero_l\):\([\n][	]\.\(byte[	]-\?[0-9]*\|long[	]0x[0-9A-F]*\)\)*' arch/sh/lib/udivsi3_i4i.S
-    defsnc 'const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    accept '[	][ ][ ]every[ ]driver[ ]which[ ]uses[ ]request_firmware[(][)][ ]and[ ]ships[ ]its' drivers/base/Kconfig
-    defsnc 'static[ ]const[ ]u32[ ]filter_table\[\][ ]=' drivers/gpu/drm/i915/intel_tv.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]u32[ ]channel_tbl\[15\]\[9\][ ]=' drivers/staging/agnx/rf.c
-    defsnc 'static[ ]const[ ]u32[\n]gain_table\[\][ ]=' drivers/staging/agnx/rf.c
-    accept '<[frs]:[0-9]*x[0-9]*>[\n][01 \n]*' 'drivers/staging/asus_oled/\(linux\(_fr\?\)\?\|tux\(_r2\?\)\?\|zig\).txt'
-    defsnc 'static[ ]unsigned[ ]char[ ]\(aud\|vid\)_regs\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    defsnc 'static[ ]u16[ ]vid_regs_fp\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    blobname 's2250\(_loader\)\?\.fw' drivers/staging/go7007/s2250-loader.c
-    blobna 'me_xilinx_download' 'drivers/staging/meilhaus/.*'
-    accept 'int[ ]me_xilinx_download[(]' 'drivers/staging/meilhaus/mefirmware\.[ch]'
-    blobname 'me46[01]0\(_bosch\)\?\.bin' drivers/staging/meilhaus/me4600_device.c
-    accept '\([	]if[ ][(]me4600_device->base\.info\.pci\.device_id[ ]==[ ]PCI_DEVICE_ID_MEILHAUS_ME4610[)][ ][{][	][/][/]Jekyll[ ]<=>[ ]me4610\|#ifdef[ ]BOSCH\|#else[ ][/][/]~BOSCH\)[\n][	][	]err[ ]=[\n][	][	][ ][ ][ ][ ]me_xilinx_download[(]me4600_device' drivers/staging/meilhaus/me4600_device.c
-    blobname 'me6000\.bin' drivers/staging/meilhaus/me6000_device.c
-    accept '[	][/][*][ ]Download[ ]the[ ]xilinx[ ]firmware[ ][*][/][\n][	]err[ ]=[ ]me_xilinx_download[(]me6000_device' drivers/staging/meilhaus/me6000_device.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\([\n][\n]*const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\)*' 'drivers/staging/otus/hal/hp.*fwu.*\.c'
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    blob '\(UCHAR\|u8\)[ ]FirmwareImage\(_\(2870\|30[79]0\)\)\?[ ]\[\][ ]=[ ][{][^;]*[}][ ][;]' 'drivers/staging/rt\(28[67]\|30[79]\)0/common/firmware\(_3070\)\?\.h'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname 'rate\.bin' drivers/staging/rt2870/rtmp_init.c
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT\(28[67]\|307\)0STA[/]\)\?\(RT\(28[67]\|307\)0STA\|rt28[67]0\)\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT28[67]0STA[/]\)\?e2p\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_ate\.[hc]'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'u\(8\|16\|32\)[ ]rtl8225\(\(a\|bcd\?\)_rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\[\]=' drivers/staging/rtl8187se/r8180_rtl8225.c
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc 'static[ ]short[ ]rtl8255_agc\[\]=' drivers/staging/rtl8187se/r8180_rtl8255.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    blobname '\(\(oasis\|gb\)_rcv\|slic_\(oasis\|mojave\)\)\.bin' drivers/staging/slicoss/slicoss.c
-
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\([\n][\n]*#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\)*' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-    blob '#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\([\n][\n]*#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'instruction[ ]=[ ][^;]*\(Oasis\|GB\|Mojave\)\(Rcv\)\?UCode[^:}]*[;]' drivers/staging/slicoss/slicoss.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'numsects[ ]=[ ][OM]NumSections[;][\n][	]*for[ ][(][^;]*[;][^;]*[;][^;{]*[)][ ][{][\n][^}]*[\n][	][	][}]' drivers/staging/slicoss/slicoss.c
-
-    # post 2.6.29 patches
-    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov\(7[27]2x\|965x\(_2\)\?\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-
-    # This looks suspicious, but it pretty much just sets stuff to zero.
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-
-    # quite suspicious
-    # arch/parisc/kernel/perf_images.h
-    initc 'static[ ]uint32_t[ ]onyx_images\[\]\[PCXU_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-    initc 'static[ ]uint32_t[ ]cuda_images\[\]\[PCXW_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-
-    # These are regarded as ok
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-
-    # too lax?
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirZeros[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirOnes[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirSatTest[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirDImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_ItdDline_t[ ]A3dItdDlineZeros[ ]=[ ][{]'
-    initnc 'static[ ]auxxEqCoeffSet_t[ ]asEqCoefsNormal[ ]=[ ][{]'
-    defsnc 'static[ ]xtalk_dline_t[ ]const[ ]alXtalkDline\(Test\|Zeros\)[ ]=' sound/pci/au88x0/au88x0_xtalk.c
-    initnc 'static[ ]struct[ ]nand_ecclayout[ ]rtc_from4_nand_oobinfo[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]s16[ ]tempLUT\[\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    initnc 'static[ ]struct[ ][{][ ]int[ ]xres,[ ]yres,[ ]left,[ ]right,[ ]upper,[ ]lower,[ ]hslen,[ ]vslen,[ ]vfreq[;][ ][}][ ]timmings\[\][ ]__initdata[ ]=[ ][{]'
-    initnc 'static[ ]struct[ ]platinum_regvals[ ]platinum_reg_init_[0-9]*[ ]=[ ][{]'
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    initnc 'static[ ]u32[ ]LABELPATCHES\[\][ ]__attribute[(][(]unused[)][)][ ]='
-
-    initnc 'static[ ]dbdev_tab_t[ ]dbdev_tab\[\][ ]='
-    accept '\(EXP\|LOG\|ATAN\)TBL:'"$sepx$blobpat*"
-    initnc 'static[ ]char[ ]fm_volume_table\[128\][ ]='
-    initnc 'unsigned[ ]int[ ]snd_gf1_scale_table\[SNDRV_GF1_SCALE_TABLE_SIZE\][ ]='
-    # remaining after original deblob_2_6_24, not fully checked
-
-    oprepline '#define[ ]OV51[18]_\(Y\|UV\)QUANTABLE[ ][{]'
-    initnc '[	][	]static[ ]unsigned[ ]char[ ]const[ ]data_bit\[64\][ ]='
-    initnc '[	][	]static[ ]const[ ]u8[ ]data_sbit\[32\][ ]='
-    initnc '[	]\.RightCoefs[ ]='
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    initnc '[	]SetRate44100\[\][ ]='
-    initnc '[	]const[ ]short[ ]period\[32\][ ]='
-    defsnc '[	]\(const[ ]static\|static[ ]const\)[ ]int[ ]desc_idx_table\[\][ ]=' 'arch/arm/include/asm/hardware/iop3xx-adma.h|include/asm-arm/hardware/iop3xx-adma.h'
-    initnc '[	]int[ ]prop_bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]char[ ]logSlopeTable\[128\][ ]='
-    initnc '[	]static[ ]const[ ]int[ ]uc_\(dup\|word\)_table\[\]\[2\][ ]='
-    initnc '[	]static[ ]const[ ]struct[ ]mc7_timing_params[ ]mc7_timings\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs170\[7[ ][*][ ]8\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs3[13]a\[8[ ][*][ ]4\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]dramsr13\[12[ ][*][ ]5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]sdramtype\[13\]\[5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    initnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]short[ ]ac97_defaults\[\][ ]='
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]='
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    initnc '[	]static[ ]u32[ ]logMagTable\[128\][ ]='
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable1\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable2\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]default_colors\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]log_scale\[101\][ ]=' sound/oss/pss.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]msg\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    initnc '[	]uint8_t[ ]tx\[\][ ]='
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc '[	]unsigned[ ]char[ ]sas_pcd_m_pg\[\][ ]='
-    initnc '[	][}][ ]modedb\[5\][ ]='
-    defsnc '[	][}][ ]reg_tbl\[\][ ]=' drivers/net/bnx2.c
-    initnc '[	][}][ ]vals\[\][ ]='
-    initnc '[	][}][ ]vm_devices\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]distfix\[32\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]lenfix\[512\][ ]='
-    defsnc '[ ][ ]int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    initnc '[ ][ ][}][ ]cards_ds\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]unsigned[ ]short[ ]d\(base\|ext\)\[32\][ ]='
-    initnc '#define[ ]OV511_QUANTABLESIZE[	]64'
-    initnc 'BYTE[ ]BtCard::SRAMTable_\(NTSC\|PAL\)\[\][ ]='
-    initnc 'BYTE[ ]SRAMTable\[\]\[[ ]60[ ]\][ ]='
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" 'arch/arm/inlcude/asm/hardware/entry-macro-iomd.S|include/asm-arm/hardware/entry-macro-iomd.S'
-    initc '__u8[ ]_ascebc\[256\][ ]='
-    initc '__u8[ ]_ebc_tolower\[256\][ ]='
-    initc '__u8[ ]_ebc_toupper\[256\][ ]='
-    initnc 'adapter_tag_info_t[ ]aic7[9x]xx_tag_info\[\][ ]='
-    initnc 'char[ ]dmasound_alaw2dma8\[\][ ]='
-    initnc 'char[ ]dmasound_ulaw2dma8\[\][ ]='
-    initnc 'const[ ]struct[ ]aper_size_info_16[ ]agp3_generic_sizes\[AGP_GENERIC_SIZES_ENTRIES\][ ]='
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]byte_rev_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]crc7_syndrome_table\[256\][ ]='
-    initnc 'int[ ]snd_sf_vol_table\[128\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siubit\[\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siureg\[\][ ]='
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    initnc 'static[ ]__const__[ ]__u16[ ]gx_coeff\[256\][ ]='
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    initnc 'static[ ]char[ ]coefficients\[NM_TOTAL_COEFF_COUNT[ ][*][ ]4\][ ]='
-    initnc 'static[ ]char[ ]ecc_syndrome_table\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_alaw_to_ulaw\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_ulaw_to_alaw\[\][ ]='
-    initnc 'static[ ]char[ ]mix_cvt\[101\][ ]='
-    initnc 'static[ ]char[ ]opl3_volume_table\[128\][ ]='
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]='
-    initnc 'static[ ]const[ ]__u32[ ]crc_c\[256\][ ]='
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    initnc 'static[ ]const[ ]int[ ]init_seq\[\][ ]='
-    initnc 'static[ ]const[ ]int[ ]mobile_vid_table\[32\][ ]='
-    initnc 'static[ ]const[ ]s16[ ]snd_opl4_pitch_map\[0x600\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]budtab\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]aper_size_info_8[ ]via_generic_sizes\[9\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]color[ ]clut_vga16\[16\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]mobilevrm_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]vrm85_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]struct[ ]menelaus_vtg_value[ ]vcore_values\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]opl4_region[ ]regions_[0-9a-frums]*\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]regval[ ]regval_table\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    initnc 'static[ ]const[ ]u32[ ]SS[0-3]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]S[1-8]\[64\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]T[0-5]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    initnc 'static[ ]const[ ]u32[ ]bass_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    initnc 'static[ ]const[ ]u32[ ]db_table\[101\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]m8xx_size_to_gray\[M8XX_SIZES_NO\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]mds\[4\]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]pc2\[1024\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    initnc 'static[ ]const[ ]u32[ ]tfrc_calc_x_lookup\[TFRC_CALC_X_ARRSIZE\]\[2\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]treble_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u64[ ][CT][0-7]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sbox[1-4]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    initnc 'static[ ]const[ ]u8[ ]aes_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]calc_sb_tbl\[512\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]exp_to_poly\[492\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]legal_ansi_char_array\[0x40\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]parity\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]pc1\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]poly_to_exp\[255\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]q[01]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u8[ ]rs\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225_\(agc\|tx_\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siubit\[\][ ]='
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siureg\[\][ ]='
-    initnc 'static[ ]const[ ]uint8_t[ ]parity\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]\(UV\|Y\)_QUANTABLE\[64\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_mobilevrm\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]barco_p1\[2\]\[9\]\[7\]\[3\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]blue\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]chktab[hl]\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]comet_miireg2offset\[32\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]euc2sjisibm_g3upper_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]green\[256\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=' drivers/hid/hid-input.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]mts_direction\[256[/]8\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]red\[256\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]sjisibm2euc_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]vol_cvt_datt\[128\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]crctab32\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]crc_flex_table\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]wd7000_iobase\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    initnc 'static[ ]const[ ]unsigned[ ]table\[\][ ]='
-    initnc 'static[ ]int[ ]MV300_reg_8bit\[256\][ ]\?=' drivers/video/atafb.c
-    defsnc 'static[ ]int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    initnc 'static[ ]int[ ]initial_lfsr\[\][ ]='
-    initnc 'static[ ]int[ ]log_tbl\[129\][ ]='
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]register_size\[\][ ]='
-    initnc 'static[ ]int[ ]reserve_list\[MAX_RES_ARGS\][ ]='
-    initnc 'static[ ]int[ ]reverse6\[64\][ ]='
-    initnc 'static[ ]short[ ]attack_time_tbl\[128\][ ]='
-    defsnc 'static[ ]short[ ]beep_wform\[256\][ ]=' 'sound/ppc/beep.c|sound/oss/dmasound/dmasound_awacs.c|arch/ppc/8xx_io/cs4218_tdm.c'
-    initnc 'static[ ]short[ ]decay_time_tbl\[128\][ ]='
-    initnc 'static[ ]short[ ]isdn_audio_[ua]law_to_s16\[\][ ]='
-    defsnc 'static[ ]struct[ ]iw\?l\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IW\?L_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    initnc 'static[ ]struct[ ]ovcamchip_regvals[ ]regvals_init_\(76be\|7[16]20\|7x10\)\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    initnc 'static[ ]struct[ ]s_c2[ ]SetRate48000\[\][ ]='
-    initnc 'static[ ]struct[ ]tea6420_multiplex[ ]TEA6420_line\[MXB_AUDIOS[+]1\]\[2\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_133\[\][ ]='
-    initnc 'static[ ]struct[ ][{][ ]struct[ ]fb_bitfield[ ]red,[ ]green,[ ]blue,[ ]transp[;][ ]int[ ]bits_per_pixel[;][ ][}][ ]colors\[\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsPipes\[64\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsZeros\[50\][ ]='
-    initnc 'static[ ]u16[ ]asEqOutStateZeros\[48\][ ]='
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    initnc 'static[ ]u16[ ]eq_levels\[64\][ ]='
-    initnc 'static[ ]u32[ ][ ]crc32tab\[\][ ]__attribute__[ ][(][(]aligned[(]8[)][)][)][ ]='
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]u32[ ]adwDecim8\[33\][ ]='
-    initnc 'static[ ]u32[ ]h_prescale\[64\][ ]='
-    initnc 'static[ ]u32[ ]v_gain\[64\][ ]='
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]bnx2_570[68]_stats_len_arr\[BNX2_NUM_STATS\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]u8[ ]flit_desc_map\[\][ ]='
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]u8[ ]mac_reader\[\][ ]=' drivers/net/wireless/atmel.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/dvb/frontends/mt2131.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/dvb/frontends/mt2266.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc 'static[ ]u_long[ ]ident_map\[32\][ ]='
-    initnc 'static[ ]u_short[ ]alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]altgr_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]u_short[ ]shift_ctrl_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]shift_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]uchar[ ]perm1\[56\][ ]='
-    initnc 'static[ ]uchar[ ]perm2\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm3\[64\][ ]='
-    initnc 'static[ ]uchar[ ]perm4\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm5\[32\][ ]='
-    initnc 'static[ ]uchar[ ]perm6\[64\][ ]='
-    initnc 'static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]='
-    initnc 'static[ ]uint16_t[ ]crc_table\[256\][ ]='
-    initnc 'static[ ]uint8_t[ ]lpfcAlpaArray\[\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?uint8_t[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OffMatrix_9600\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OnMatrix_9600\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set3_keycode\[512\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_unxlate_table\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/superh/microdev/led.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8260\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8280\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]caseorder\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]crystal_key\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]dsp_ulaw\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]expressiontab\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    initnc 'static[ ]unsigned[ ]char[ ]hidp_keycode\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]nkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]pan_volumes\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]parm_block\[32\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]raw3270_ebcgraf\[64\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rfcomm_crc_table\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rwa_unlock\[\][ ]__initdata[ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]snd_opl4_volume_table\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]sunkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_8fpb\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_other\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ulaw_dsp\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    initnc 'static[ ]unsigned[ ]char[ ]voltab[12]\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]vpd89_data\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]xtkbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]bass_volume_table\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]isa_dma_port\[8\]\[7\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]master_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]mixer_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]pan_table\[63\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_bass_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]valid_mem\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]arthur_to_linux_signals\[32\][ ]='
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]unsigned[ ]nv\([34]\|10\)TableP\(FIFO\|GRAPH\|RAMIN\)\[\]\[2\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]fcstab\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ][/][*]__devinitdata[*][/][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]log_table\[LOG_TABLE_SIZE[*]2\][ ]='
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    initnc 'static[ ]unsigned[ ]short[ ]treble_parm\[12\]\[9\][ ]='
-    initnc 'struct[ ]RGBColors[ ]TextCLUT\[256\][ ]='
-    initnc 'struct[ ]VgaRegs[ ]GenVgaTextRegs\[NREGS[+]1\][ ]='
-    defsnc 'struct[ ]battery_thresh[ ][ ]*\(spitz\|sharpsl\)_battery_levels_\(noac\|acin\)\[\][ ]=' arch/arm/mach-pxa/sharpsl_pm.c
-    initnc 'struct[ ]fb_bitfield[ ]rgb_bitfields\[\]\[4\][ ]='
-    initnc 'struct[ ]mode_registers[ ]std_modes\[\][ ]='
-    initnc 'struct[ ]vmode_attr[ ]vmode_attrs\[VMODE_MAX\][ ]='
-    initnc 'u16[ ]const[ ]crc16_table\[256\][ ]='
-    initnc 'u16[ ]const[ ]crc_ccitt_table\[256\][ ]='
-    initnc 'u16[ ]hfsplus_compose_table\[\][ ]='
-    initnc 'u16[ ]hfsplus_decompose_table\[\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '[}][ ]euc2sjisibm_jisx0212_map\[\][ ]='
-    initnc '[}][ ]freq\[\][ ]='
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]maven_gamma\[\][ ]='
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]sil_port\[\][ ]='
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-
-    # new in 2.6.30
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]sync\[\][ ]=' Documentation/networking/timestamping/timestamping.c
-    blob 'The[ ]driver[ ]requires[ ]firmware[ ]files[ ]["]turtlebeach\([^\n]*[^\n.][\n]\)*directory.' Documentation/sound/alsa/ALSA-Configuration.txt
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    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-\(\(db-\)\?FPGA\|Firmware\)\.bin' drivers/atm/solos-pci.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\)\[\][ ]\(__devinitconst[ ]\)\?=' drivers/i2c/busses/i2c-mpc.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nand_oob_128[ ]=' drivers/mtd/nand/nand_base.c
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    accept 'static[ ]void[\n]load_rv2p_fw[(][^{)]*const[ ]struct[ ]bnx2_mips_fw_file_entry' drivers/net/bnx2.c
-    accept 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{][\n][	]const[ ]struct[ ]bnx2_mips_fw_file'
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blobname 'myricom[/]lanai\.bin' drivers/net/myri_sbus.c
-    blobname '3com[/]3C359\.bin' drivers/net/tokenring/3c359.c
-    blobname '3com[/]typhoon\.bin' drivers/net/typhoon.c
-    defsnc 'static[ ]struct[ ]ar9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]struct[ ]ar9170_rf_init[ ]ar9170_rf_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]ar9170_phy_freq_entry[ ]ar9170_phy_freq_params\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'sxg[/]sahara\(dbg\)\?downloadB\.sys' drivers/staging/sxg/sxg.c
-    blobname 'qlogic[/]isp1000\.bin' drivers/scsi/qlogicpti.c
-    blobname 'advansys[/]\(3550\|38C\(08\|16\)00\|mcode\)\.bin' drivers/scsi/advansys.c
-    blobname 'qlogic[/]\(1040\|1280\|12160\)\.bin' drivers/scsi/qla1280.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]rf\([52]413\|2425\)_ini_common_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-1000-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-60[05]0-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]gspi\(%d\|[0-9]\+\)\(_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c
-    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\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname 'usbdux\(fast\)\?_firmware\.\(hex\|bin\)' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c'
-    blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
-    defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
-    accept '[	][	]stlc45xx_error[(]["]request_firmware[(][)][ ]failed' drivers/staging/stlc45xx/stlc45xx.c
-    blob 'static[ ]struct[ ]phy_ucode[	]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode-1.2.h
-    accept 'device[ ]drivers[ ]which[ ]predate[ ]the[ ]common[ ]use[ ]of[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    accept 'As[ ]we[ ]update[ ]those[ ]drivers[ ]to[ ]use[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*\(infradead\.org\|decadent\.org\.uk\)>' firmware/README.AddingFirmware
-    blobna 'linux-firmware\.git' firmware/README.AddingFirmware
-    blobname '\(ea[/]\)\?\(loader\|indigo_djx\)_dsp\.fw' sound/pci/echoaudio/indigodjx.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_iox\)_dsp\.fw' sound/pci/echoaudio/indigoiox.c
-    # blobname 'cis[/]LA-PCM\.cis' drivers/net/pcmcia/pcnet_cs.c
-    blobname 'ositech[/]Xilinx7OD\.bin' drivers/net/pcmcia/smc91c92_cs.c
-    blobname 'tehuti[/]\(firmware\|bdx\)\.bin' drivers/net/tehuti.c
-    accept '[ 	]*["]b43-open%s[/]%s\.fw["]' drivers/net/wireless/b43/main.c
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-
-    # New in 2.6.31
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    defsnc '\([	]static[ ]const[ ]u8[ ]snum_init\[\][ ]=[ ][{]\|static[ ]void[ ]qe_snums_init[(]void[)]\)[\n][	][	]0x04,[ ]0x05,' arch/powerpc/sysdev/qe_lib/qe.c
-    accept '[.]LgoS4:[\n][	][.]word[	][.]LmtoS4-\.LgoS4\([\n][	]\.\(long\|word\|byte\)[	][01]\(,0\)*\)*' arch/s390/kernel/sclp.S
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    accept '[ ][*][ ]*1[ ]1\([ ]0\)*[ ]1\([ ]0\)*' arch/x86/lguest/boot.c
-    defsnc 'struct[ ]scrubrate[ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]unsigned[ ]r\([35]\|s6\)00_reg_safe_bm\[[0-9]*\][ ]=' 'drivers/gpu/drm/radeon/r\(300\|v515\|s600\)\.c'
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    blobname 'dvb-cx18-mpc718-mt352\.fw' drivers/media/video/cx18/cx18-dvb.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]onenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' 'drivers/net/wireless/\(prism54/islpci_dev\.c\|rt2x00/rt2800usb\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    blobname 'iwmc3200wifi-\([ul]mac\|calib\)-sdio\.bin' drivers/net/wireless/iwmc3200wifi/sdio.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)ArrayDTM\[\(Boot\|Main\|Data\)ArrayLengthDTM\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192su/r8192S_FwImgDTM.h
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8192PciE\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\(DTM\)\?\[\(\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?Length\(DTM\)\?\)\?\][ ]=' drivers/staging/rtl8192su/rtl8192S_FwImgDTM.h
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    blobname 'RTL8192U[/]\(boot\|main\|data\)\.img' 'drivers/staging/rtl8192s\?u/r819xU_firmware\.c'
-    blob 'u8[ ]rtl8190_fw\(boot\|main\|data\)_array\[\][ ]=[ ]\?[{][^}]*[}][;]' 'drivers/staging/rtl8192s\?u/r8192xU_firmware_img\.c'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'BYTE[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc '\(BYTE\|unsigned[ ]char\)[ ]byVT3253\(InitTab\|B0\(_AGC4\?\)\?\)_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\[CB_VT3253\(B0\(_AGC4\?\)\?\)\?\(\(_INIT\)\?_FOR_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\)\?\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'SCountryTable[ ]ChannelRuleTab\[CCODE_MAX[+]1\][ ]=' drivers/staging/vt6655/card.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    defsnc 'static[ ]const[ ]\(DWORD\|unsigned[ ]long\)[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6655/tcrc.c
-    defsnc 'const[ ]\(BYTE\|unsigned[ ]char\)[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6655/tkip.c
-    blobname 'prism2_ru\.\(hex\|fw\)' drivers/staging/wlan-ng/prism2fw.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    blob '#include[ ]["]me4\(00\|61\)0_firmware\.h["]\([\n][\n]*#include[ ]["]me4\(00\|61\)0_firmware\.h["]\)*' drivers/staging/me4000/me4000.c
-    blobna 'firm[ ]=[ ][^;]*xilinx_firm[^;]*[;]' drivers/staging/me4000/me4000.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\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|%s\)_\(pfp\|rlc\|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
-
-    # New in or modified for 2.6.32
-    blobname '\(cxgb3[/]\)\?ael20\(05_\(opt\|twx\)\|20_twx\)_edc\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc 'static[ ]const[ ]struct[ ]aper_size_info_32[ ]u3_sizes\[8\?\][ ]=' drivers/char/agp/uninorth-agp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[\(512\|ATKBD_KEYMAP_SIZE\)\][ ]=' drivers/input/keyboard/atkbd.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    accept '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_1\[\][ ]=[ ][{][^;]*0x8300[^;]*[}][;]' drivers/net/r8169.c
-    blob 'static[ ]void[ ]rtl8168d_[12]_hw_phy_config[(]void[ ]__iomem[ ][*]ioaddr[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/r8169.c
-    blobna 'rtl8168d_[12]_hw_phy_config[(]ioaddr[)][;]' drivers/net/r8169.c
-    blobna 'static[ ]\(const[ ]\)\?struct[ ]phy_reg_init_[12]\[\][ ]=[ ][{][\n 	{}0-9a-fx]*0x06,[ ]0xf8f9[\n 	{}0-9a-fx]*[}][;]' drivers/net/r8169.c
-    # This loads firmware to be flashed from filename provided through ethtool.
-    accept 'int[ ]be_load_fw[(]struct[ ]be_adapter[ ][^\n;{]*[)][ \n][{]\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/net/benet/be_main.c
-    defsnc '[	]u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9287\(Common\|Modes\(_\([tr]x_gain\)\)\?\)_9287_1_[01]\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271\(_1_0\)\?\[\]\[[26]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u8[ ]lpphy_min_sig_sq_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u16[ ]lpphy_\(rev\(01\|2plus\)_noise_scale\|crs_gain_nft\|iqlo_cal\|rev[01]_ofdm_cck_gain\|\(a0_\)\?gain\|sw_control\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u32[ ]lpphy_\(\(rev01_ps\|tx_power\)_control\|\(a0_\)\?gain_\(idx\|value\)\|papd_\(eps\|mult\)\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    blobname 'v4l-saa7164-1\.0\.[23]\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]long[ ]limiter_times\[\][ ]=' drivers/media/radio/si4713-i2c.c
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    defsnc '[}][ ]csc_table\[\][ ]=' drivers/video/msm/mdp_csc_table.h
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    accept '[	]isar->firmware[ ]=[ ][&]load_firmware[;]' drivers/isdn/hardware/mISDN/mISDNisar.c
-    blobname 'isdn[/]ISAR\.BIN' drivers/isdn/hardware/mISDN/speedfax.c
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'RTL8192E[/]\(boot\|main\|data\)\.img' drivers/staging/rtl8192e/r819xE_firmware.c
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    accept '[ ][*][ ]File:[ ]main_usb\.c\([\n][ ][*]\([^\n/]*\|[^*\n/][/]*\)*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob 'const[ ]BYTE[ ]abyFirmware\[\][ ]=[ ][{][^;]*[}][;]' drivers/staging/vt6656/firmware.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(static[ ]\)\?struct[ ]register_address_value_pair[\n]\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    blobname '\([/]tmp[/]\)\?RT30xxEEPROM\.bin' 'drivers/staging/rt3090/\(common/ee_efuse\.c\|rtmp_def\.h\)'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\([\n][\n]*#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\)' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'FIRMWAREIMAGE_LENGTH[ ]==' drivers/staging/rt3090/common/rtmp_mcu.c
-    defsnc 'int[ ]wm831x_isinkv_values\[WM831X_ISINK_MAX_ISEL[ ][+][ ][1]\][ ]=' drivers/mfd/wm831x-core.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]__initconst[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8974_reg\[WM8974_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8974.c
-    defsnc 'static[ ]const[ ]u\(8\|16\)[ ]ak464[28]_reg\[\(AK4642_CACHEREGNUM\)\?\][ ]=' sound/soc/codecs/ak4642.c
-    accept 'int[ ]snd_hda_load_patch[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*hda_codec[^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' sound/pci/hda/hda_hwdep.c
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    blob 'SD8688[ ]firmware:[\n]*\([/]lib[/]firmware[^\n]*[\n]*\)*The[ ]images[^:]*:[\n]*[^\n]*[/]linux-firmware[^\n]*' Documentation/btmrvl.txt
-    defsnc 'static[ ]u8[ ]ibm405ex_fbdv_multi_bits\[\][ ]=' arch/powerpc/boot/4xx.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]struct[ ]ad714x_platf\(or\|ro\)m_data[ ]ad714[27]_\(\(spi\|i2c\)_\)\?platf\(or\|ro\)m_data[ ]=' arch/blackfin/mach-bf537/boards/stamp.c
-    blob 'static[ ]const[ ]u8[ ]lgs8g75_initdat\[\][ ]=[ ][{][^;]*[}][;]' drivers/media/dvb/frontends/lgs8gxx.c
-    blob 'static[ ]int[ ]lgs8g75_init_data[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*lgs8g75_initdat[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/media/dvb/frontends/lgs8gxx.c
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    accept '[<][<]\([/]Subtype[/]Type1\)\?[/]BaseFont[^ ]*[/]FontDescriptor[ ][0-9][0-9]*[ ]0[ ]R\([/]Type[/]Font\)\?[\n]\?[/]FirstChar[ ][0-9][0-9]*[/]LastChar[ ][0-9][0-9]*[/]Widths\[[\n][0-9 \n]*\]' 'Documentation/DocBook/v4l/.*\.pdf'
-
-    # New in 2.6.33
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blob '#define[ ]FW_VERSION\([ 	]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ 	]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3\(02\)\?x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u16[ ]bios_to_linux_keycode\[256\][ ]\(__initconst[ ]\)\?=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blob 'The[ ]ssinit[ ]program.*nsoniq.*sndscape.*sound[ ]weird\.' Documentation/sound/oss/README.OSS
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname '\(sndscape\|soundscape\)\.co\([?dx01234]\|%d\)' 'sound/isa/\(Kconfig\|sscape\.c\)\|Documentation/sound/oss/README\.OSS'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    blobname 'nouveau[/]nv\([0-9a-f][0-9a-f]\|%02x\)\.ctx\(prog\|vals\)' 'drivers/gpu/drm/nouveau/\(nv50_graph\|nouveau_grctx\)\.c'
-
-    # New in 2.6.34
-    blobname 'mts_mt9234\(mu\|zba\)\.fw' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '\(#[ ]\)\?\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl8192sfw\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-
-    # New in 2.6.35
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/char/n_gsm.c
-    defsnc 'static[ ]u8[ ]\(reset_atetm\|atetm_[12]port\|portsel_\(port[12]\|2port\)\)\[BIT2BYTE[(]LEN_\(ETM\|PORT_SEL\)[)]\][ ]=' drivers/infiniband/hw/qib/qib_iba7322.c
-    blobname 'qlogic[/]sd7220[.]fw' drivers/infiniband/hw/qib/qib_sd7220.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    blobname 'orinoco_ezusb_fw' drivers/net/wireless/orinoco/orinoco_usb.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]BUCK[123]_\(suspend_\)\?table\[\][ ]=' drivers/regulator/88pm8607.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]XGI\(fb_vrate\|_TV_filter\)\[\][ ]=' drivers/staging/xgifb/XGI_main.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330\(New\)\?_SR15\(_1\)\?\[8\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_cr40_1\[15\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_TVDataStruct[ ][ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525[ip]\|750p\)\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(750p\|525[ip]\)\)Timing\[\][ ][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_HiTVGroup3\(Data\|Simu\|Text\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_Ren\(525\|750\)pGroup3\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_PanelDelayTblStruct[ ]XGI330_PanelDelayTbl\[\]' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_LVDSCRT1DataStruct[ ][ ]XGI_CHTVCRT1[UO]\(NTSC\|PAL\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    # qseed_table2 is kind of suspicious, but there's some regularity
-    # to it that makes me think it's just data.
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    blobname 'xc3028L\?-v[0-9]\+\.fw' drivers/staging/tm6000/tm6000-cards.c
-    defsnc 'static[ ]const[ ]struct[ ]chs_entry[ ]chs_table\[\][ ]=' drivers/mtd/sm_ftl.c
-    blobname 'asihpi[/]dsp\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.bin' sound/pci/asihpi/hpidspcd.c
-    defsnc 'static[ ]unsigned[ ]long[ ]ident_map\[32\][ ]=' kernel/exec_domain.c
-    defsnc 'static[ ]uint[ ]patch_2000\[\][ ]__initdata[ ]=' arch/powerpc/sysdev/micropatch
-    # Are these ucode patches really data?!?  They were taken as such
-    # since gNewSense started cleaning up Linux, but they look awfully
-    # suspicious to me.
-    defsnc '\(static[ ]\)\?uint[ ]patch_2[0ef]00\[\][ ]\(__initdata[ ]\)\?=' arch/powerpc/sysdev/micropatch.c
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[4\][ ]=' arch/arm/mach-s5pc100/clock.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*[(]f2255usb\.bin[)][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/s2255drv.c
-
-    # New in 2.6.36:
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-
-    # New in 2.6.37, up to -rc5.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)\?-0[-0-9]*\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/README'
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/README'
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/wl_iw\.c'
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/phy/wlc_phy_cmn\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array[^\n]*\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|[mc][ec]\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\?\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-
-    # New in 2.6.39
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    blobname 'vntwusb\.fw' drivers/staging/vt6656/firmware.c
-    # New in 3.0.
-    accept 'resume[/]restore[,][ ]but[ ]they[ ]cannot[ ]do[ ]it[ ]by[ ]calling[ ]request_firmware[(][)]' Documentation/power/notifiers.txt
-    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	][	][	][	]0xe[0-7][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/p1022ds.dts
-    accept '[ ][ ][ ][ ]gzip[ ]-n[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]struct[ ]nvc0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.h
-    defsnc 'static[ ]const[ ]u8[ ]sht15_crc8_table\[\][ ]=' drivers/hwmon/sht15.c
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    blobname 'drxd-a2-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blobname 'drxd-b1-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blob '[/][*][	]if[ ][(]\(reject\|request\)_firmware[(][&]state->fw[,][ ]["]drxd\.fw["][,][ ]state->dev[)]<0[)][ ][*][/]'
-    blobname 'drxd\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    blobna 'www\.elandigitalsys[^\n]*download' drivers/mmc/host/Kconfig
-    blobname 'vub_\(default\.bin\|%04X%04X\)' drivers/mmc/host/vub300.c
-    blobna 'snprintf[(]vub300->vub_name[ ][+][^\n]*[,][ ]["]\.bin["][)][;]' drivers/mmc/host/vub300.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flexonenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(low\(est\)\?\|high\|mixed\)_ob_db\|high_power\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(radio\|baseband\|mac\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]u16[ ]mwifiex_data_rates\[MWIFIEX_SUPPORTED_RATES_EXT\][ ]=' drivers/net/wireless/mwifiex/cfp.c
-    accept '[	]\.helper[	][	]=[ ]NULL[,][\n][	]*\.firmware' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8787_uapsta\(_w1\)\?\.bin' drivers/net/wireless/mwifiex/main.h
-    blobname 'sd8787\.bin' drivers/net/wireless/mwifiex/sdio.c
-    blobna 'Copy[ ]sd8787\.bin[ ]to[^.]*[.]' drivers/net/wireless/mwifiex/README
-    blobname 'rtlwifi[/]rtl8192sefw\.bin' drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-    defsnc 'u32[ ]rtl8192sephy_reg_2t2rarray\[PHY_REG_2T2RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_changeto_1t[12]rarray\[PHY_CHANGETO_1T[12]RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_reg_array_pg\[PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seradioa_1t_array\[RADIOA_1T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192semac_2t_array\[MAC_2T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seagctab_array\[AGCTAB_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    accept 'Place[ ]isci_firmware\.bin[ ]in' drivers/scsi/isci/firmware/README
-    # This is not a code blob, it is just small data structures described in create_fw.[ch].
-    accept 'static[ ]const[ ]char[ ]blob_name\[\][ ]=[ ]["]isci_firmware\.bin["]' drivers/scsi/isci/create_fw.h
-    accept '[	][	]orom[ ]=[ ]isci_request_firmware' drivers/scsi/isci/init.c
-    accept 'MODULE_FIRMWARE[(]ISCI_FW_NAME[)][;]' drivers/scsi/isci/init.c
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    accept '[	]if[ ][(]request_firmware[(][&]fw[,][ ]ISCI_FW_NAME[,]' drivers/scsi/isci/probe_roms.c
-    accept '#define[ ]ISCI_FW_NAME[	][	]["]isci[/]isci_firmware\.bin["]' drivers/scsi/isci/probe_roms.h
-    defsnc 'static[ ]struct[ ]pll_limit[ ]\(cle266\|k800\|cx700\|vx855\)_pll_limits\[\][ ]=' drivers/video/via/hw.c
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    blobname 'wm8958_\(enh_eq\|mbc\(_vss\)\?\)\.wfw' sound/soc/codecs/wm8958-dsp2.c
-    blobname 'rtl_nic[/]rtl8168e-[12]\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e\[\][ ]=' drivers/net/r8169.c
-    blobname 'ti-connectivity[/]wl128x-fw\(-ap\)\?\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    defsnc 'static[ ]const[ ]u8[ ]tg3_tso_header\[\][ ]=' drivers/net/tg3.c
-    blobname 'ath6k[/]AR6003[/]hw2\.1\.1[/]\(otp\|athwlan\|athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    accept '[	]nvc0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*nvc0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    blobname 'nouveau[/]\(nv%02x_\)\?%s' 'drivers/gpu/drm/nouveau/nv[ce]0_graph\.c'
-    blobname 'radeon[/]SUMO2\?_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
-    blobname 'iwlwifi-\(105\|20[03]\?0\)-' drivers/net/iwlwifi/iwl-2000.c
-    blobname '__stringify[(]api[)][ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[1256]000\)\.c\)'
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    # New in 3.2
-    blobname 'ath6k[/]AR600[0-9.]*[/]hw[0-9.]*[/][^/"]*\.\(bin\|z77\)' drivers/net/wireless/ath/ath6kl/core.h
-    accept 'userspace[,][ ]using[ ]the[ ]request_firmware[(][)][ ]function' Documentation/power/suspend-and-cpuhotplug.txt
-    defsnc 'static[ ]struct[ ]sh_keysc_info[ ]keysc_platdata[ ]=[ ]' arch/arm/mach-shmobile/board-kota2.c
-    defsnc 'static[ ]const[ ]u32[ ]rir_offset\[MAX_RIR_RANGES\]\[MAX_RIR_WAY\][ ]=' drivers/edac/sb_edac.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]s32[ ]wmi_rate_tbl\[\]\[2\][ ]=' drivers/net/wireless/ath/ath6kl/wmi.c
-    defsnc '[	]struct[ ]lcn_tx_iir_filter[ ]tx_iir_filters_\(cck\|ofdm\)\[\][ ]=' drivers/net/wireless/b43/phy_lcn.c
-    defsnc 'const[ ]u32[ ]b43_httab_0x1a_0xc0_late\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_lcntab_0x[01][0-9a-f]\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc '[	]b43_lcntab_tx_gain_tbl_2ghz_ext_pa_rev0\[B43_LCNTAB_TX_GAIN_SIZE\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]struct[ ]channel_list[ ]ChannelPlan\[\][ ]=' drivers/staging/rtl8192e/dot11d.c
-    defsnc 'u32[ ]Rtl8192PciE\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)Array\[\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)ArrayLengthPciE\][ ]=' drivers/staging/rtl8192e/r8192E_hwimg.c
-    defsnc 'static[ ]u8[ 	]CCKSwingTable_\(Ch1_Ch13\|Ch14\)\[CCK_Table_length\]\[8\][ ]=' drivers/staging/rtl8192e/rtl_dm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(power\|emif[01]\)_pins\[\][ ]=' drivers/pinctrl/pinmux-u300.c
-    defsnc 'static[ ]const[ ]struct[ ]pll_div[ ]codec_\(master\|slave\)_pll_div\[\][ ]=' sound/soc/codecs/rt5631.c
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]\.download_firmware[ ]=[ ]it913x_download_firmware[,][\n][	]\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-it9137-01\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    blobname '%s[/]bdata\.%s\.bin' drivers/net/wireless/ath/ath6kl/init.c
-    blobna 'Used[ ][(]for[ ]now[)][^*]*\([*]\+[^/*][^*]*\)*[*]*["]bdata\.bin["][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/ath/ath6kl/init.c
-    blobname 'mrvl[/]pcie8766_uapsta\.bin' 'drivers/net/wireless/mwifiex/pcie\.[ch]'
-    blobname 'usbduxsigma_firmware\.bin' drivers/staging/comedi/drivers/usbduxsigma.c
-    blobname 'as102_data[12]_[sd]t\.hex' drivers/staging/media/as102/as102_fw.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)Array\[\(Boot\|Main\|Data\)ArrayLengthPciE\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192e/r8192E_hwimg.c
-    blobna '\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\)*' drivers/staging/rtl8192e/r8192E_firmware.c
-    blobname 'imx[/]sdma[/]sdma-imx5[13]\.bin' 'arch/arm/boot/dts/imx5[13]-\(babbage\|ard\|evk\|qsb\|smd\)\.dts'
-    blobname 'libertas[/]usb8388_olpc\.bin' drivers/net/wireless/libertas/if_usb.c
-    blobname 'rtlwifi[/]rtl8192cfwU\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-3\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'pcxhr[/]%s' sound/pci/pcxhr/pcxhr_hwdep.c
-    blobname 'mrvl[/]sd8797_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    blobname 's5p-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'rtl_nic[/]rtl8168f-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-
-    blobna '[/][*][\n][ ][*][ ]AMD[ ]microcode[ ]firmware[ ]naming[ ]convention[^*]*\([*]\+[^/*][^*]*\)*[*]*amd-ucode[/][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' arch/x86/kernel/microcode_amd.c
-    blobname 'amd-ucode[/]microcode_amd_fam\(%\.2x\|[0-9a-f]*\)h\.bin' arch/x86/kernel/microcode_amd.c
-
-    # New in 3.3.
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl2g_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_\(workaround\[2\]\[4\]\|wa_phy6_radio11_ghz2\)[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]da9052_chg_current_lim\[2\]\[DA9052_CHG_LIM_COLS\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]u32[ ]const[ ]vc_tbl\[3\]\[68\]\[2\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]const[ ]int[ ]PIO2_CHANNEL_BANK\[32\][ ]=' drivers/staging/vme/devices/vme_pio2.h
-    defsnc 'static[ ]const[ ]struct[ ]sirfsoc_baudrate_to_regv[ ]baudrate_to_regv\[\][ ]=' drivers/tty/serial/sirfsoc_uart.c
-    defsnc 'static[ ]const[ ]struct[ ]dispc_coef[ ]coef[35]_M\(1[123469]\|2[26]\|32\)\[8\][ ]=' drivers/video/omap2/dss/dispc_coefs.c
-    defsnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]=' lib/clz_tab.c
-    defsnc 'static[ ]struct[ ]cs42l73_mclk_div[ ]cs42l73_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs42l73.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
-    defsnc 'static[ ]int[ ]_process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' sound/soc/codecs/sigmadsp.c
-    defsnc 'int[ ]process_sigma_firmware\(_regmap\)\?[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*_process_sigma_firmware' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware_regmap[)]' sound/soc/codecs/sigmadsp.c
-    accept 'extern[ ]int[ ]process_sigma_firmware_regmap[(][^)]*[)][;]' sound/soc/codecs/sigmadsp.h
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
-    # These appear to be identifiers within the device itself,
-    # used to get information from it.
-    accept '#define[ ]LANCER_\(FW_DUMP\|VPD_[PV]F\)_FILE[	]*["][/]\(dbg[/]dump\.bin\|vpd[/]ntr_[pv]f\.vpd\)["]' drivers/net/ethernet/emulex/benet/be_cmds.h
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-it9135-0[12]\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-hauppauge-hvr930c-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'brcm[/]brcmfmac\.\(bin\|txt\)' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-
-    # New in 3.4
-    blobname 'dvb-fe-xc5000-1\.6\.114\.fw' drivers/media/common/tuners/xc5000.c
-    blobname 'dvb-fe-xc5000c-41\.024\.5\.fw' drivers/media/common/tuners/xc5000.c
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.\(SD3[12]\|WB31\|CUSTOM\|DB132\)\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.39
-    accept '[#]define[ ]FIRMWARE_AR7010[ 	]*["]ar7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]ar7010_1_1\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]ar9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.35
-    accept '[	]ATH9K_FW_USB_DEV[(]0x\(9271\|1006\)[,][ ]["]ar9271\.fw["][)][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]dev_info[(][&]hif_dev->udev->dev[,][ ]["]ath9k_htc:[^\n"]*["][,][\n][	 ]*["]ar9271\.fw["][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]fw_name[,][ ][&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-
-    # New in 3.10
-    accept '[ \t]*edid[ ]=[ ]\[00[ ]FF[ 0-9A-F\n\t]*\]' arch/powerpc/boot/dts/ac14xx.dts
-    accept 'K256:[\n][\t]\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx-asm.S
-    accept 'K256:[\n][\t]\.long[\t]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[\t][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx2-asm.S
-    accept 'K256:[\n][ ]*\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][ ]*\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-ssse3-asm.S
-    accept 'K512:[\n][\t]\.quad[ ]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[ ][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-\(avx\|ssse3\)-asm\.S'
-    accept 'K512:[\n][\t]\.quad[\t]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[\t][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-avx2-asm.S'
-    defsnc 'static[ ]const[ ]uint32_t[ ]axi_clkgen_lock_table\[\][ ]=' drivers/clk/clk-axi-clkgen.c
-    defsnc 'static[ ]const[ ]int[ ]arizona_micd_levels\[\][ ]=' drivers/extcon/extcon-arizona.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v13_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    defsnc 'static[ ]const[ ]u32[ ]\(evergreen\|cedar\|supersumo\|wrestler\|barts\|turks\|caicos\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cypress\|redwood\|cedar\|juniper\)_mgcg_init\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cayman\|dvst\|scrapper\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]\(r7xx\|rv7[1347]0\)_\(golden_registers\|mgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/rv770.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\|oland\|hainan\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]verde_pg_init\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]hainan_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]s16[ ]temp_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u8[ ]via_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]uint64_t[ ]crc_table\[256\][ ]=' drivers/md/bcache/util.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]ofsm_init_it9135_v[12]\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_it9135_\(38\|51\|52\|60\|61\|62\)\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsc 'static[ ]struct[ ]regdata[ ]mb86a20s_init2\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    defsnc 'static[ ]const[ ]u8[ ]channel_registers\[\][ ]=' drivers/media/i2c/tw2804.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]si476x_property_range[ ]valid_ranges\[\][ ]=' drivers/mfd/si476x-prop.c
-    defsnc '[\t]static[ ]const[ ]unsigned[ ]int[ ]t[45]_reg_ranges\[\][ ]=' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_wa_phy6_radio11_ghz2[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[4\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5592_xtal[24]0\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'u32[ ]RTL8188EEPHY_REG_\(1TARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EE_RADIOA_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEMAC_1T_ARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEAGCTAB_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsc 'static[ ]const[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'drivers/pinctrl/sh-pfc/pfc-\(r8a77\(40\|79\)\|sh72\(03\|69\)\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[ab]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]int[ ]ab8540_charge_\(output\|input\)_curr_map\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]ldo_vaux56_ab8540_voltages\[\][ ]=' drivers/regulator/ab8500.c
-    accept '[\t]rproc->firmware[ ]=[ ]p[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]vop_6010_\(ntsc\|pal\)_\(d1\|cif\)\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
-    defsnc 'u8[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]u32[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6656/tcrc.c
-    defsnc 'const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]tas5086_reg_defaults\[\][ ]=' sound/soc/codecs/tas5086.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8688\(_helper\)\?\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8897_uapsta\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname '\(\(atsc\|tdmb\)_denver\|cmmb_\(ming_app\|venice_12mhz\)\|dvbh\?_rio\|fm_radio\(_rio\)\?\|isdbt_\(pele\|rio\)\)\.inp' drivers/media/common/siano/smscoreapi.h
-    blobname 'tigon[/]tg357766\.bin' drivers/net/ethernet/broadcom/tg3.c
-    blobname 'cxgb4[/]t5fw\.bin' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    blobname 'rtl_nic[/]rtl8106e-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-[23]\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'mwl8k[/]fmimage_8764_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'go7007[/]go7007fw\.bin' drivers/staging/media/go7007/go7007-driver.c
-    blobname 'go7007[/]go7007tv\.bin' drivers/staging/media/go7007/go7007-fw.c
-    blobname 'go7007[/]\(s2250-[12]\|px-\(m\|tv\)402u\|lr192\|wis-startrek\)\.fw' drivers/staging/media/go7007/go7007-loader.c
-    blobname 'intel[/]ibt-hw-%x\.%x\(\.%x-fw-%x\.%x\.%x\.%x\.%x\)\?\.bseq' drivers/bluetooth/btusb.c
-    blobname 'radeon[/]\(RV710\|CYPRESS\|SUMO\|TAHITI\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'imspcu\.fw' drivers/input/misc/ims-pcu.c
-    blobname 'fimc_is_fw\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'setfile\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'rtlwifi[/]rtl8188efw\.bin' drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-
-    # New in 3.12.
-    blobname 's5p-mfc-v7\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
-    blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
-    defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    accept '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
-    defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a3xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    blobname 'a3[03]0_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_\(bonaire\|saturn\)_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]struct[ ]kv_lcac_config_values[ ]cpl_local_cac_cfg_kv\[\][ ]=' drivers/gpu/drm/radeon/kv_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]imx_i2c_clk_pair[ ]\(imx\|vf610\)_i2c_clk_div\[\][ ]=' drivers/i2c/busses/i2c-imx.c
-    defsnc 'static[ ]const[ ]u16[ ]apds9300_lux_ratio\[\][ ]=' drivers/iio/light/apds9300.c
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_4313_ipa_rev0_combo\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    accept '[	][	]adapter->firmware[ ]=[ ]NULL' drivers/net/wireless/mwifiex/main.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]const[ ]int[ ]bq24190_\(ccc_ichg\|cvc_vreg\)_values\[\][ ]=' drivers/power/bq24190_charger.c
-    blobname '[(]i\.e\.[ ]["]asfep\.bin["][)][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '[(]["][/]etc[/]dgap[/]xrfep\.bin["][)][;][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '["][/]lib[/]firmware[/]dgap[/]["]' drivers/staging/dgap/downld.c
-    blobname '\(fx\|cx\|cxp\|ibm\(cx\|en\)\|xr\|sx\|pci\)\(bios\|fep\|con\|host\)\.bin' drivers/staging/dgap/downld.c
-    defsnc 'static[ ]const[ ]struct[ ]msi3101_gain[ ]msi3101_gain_lut_\(120\|245\|1000\)\[\][ ]=' drivers/staging/media/msi3101/sdr-msi3101.c
-    defsnc 'static[ ]struct[ ]ch_freq[ ]ch_freq_map\[\][ ]=' drivers/staging/rtl8188eu/core/rtw_rf.c
-    defsnc 'static[ ]\(const\)\?[ ]\?u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u32[ ]T[ed]0\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u8[ ]Td4s\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]u32[ ]array_\(agc_tab\|phy_reg\)_\(1t\|pg\)_8188e\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_BB.c
-    defsnc 'static[ ]u32[ ]array_MAC_REG_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_RF.c
-    defsnc '[	]u8[	]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/HalPhyRf.c
-    defsnc 'static[ ]const[ ]u16[ ]dB_Invert_Table\[8\]\[12\][ ]=' drivers/staging/rtl8188eu/hal/odm.c
-    blobname 'rtl8188E[/\\]*rtl8188efw\.bin' drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-    defsnc 'static[ ]const[ ]unsigned[ ]long[ ]K\[64\][ ]=' drivers/staging/rtl8188eu/include/rtw_security.h
-    defsnc '[	]static[ ]const[ ]struct[ ]msm_baud_map[ ]table\[\][ ]=' drivers/tty/serial/msm_serial.c
-    defsnc 'static[ ]u8[ ]hx8369_seq_gamma_curve_related\[\][ ]=' drivers/video/backlight/hx8357.c
-    defsnc 'static[ ]const[ ]wchar_t[ ]t2_\(0[012345]\|1[def]\|2[14cd]\|a[67]\|ff\)\[256\][ ]=' fs/cifs/winucase.c
-    accept '[	]*\(\(el\)\?if[ ]\[[ ]-f\|cp[ ]-v[ ]--\)[ ]["][$][{]objtree[}][/]arch[/]mips[/]boot[/]\(compressed[/]\)\?vmlinux\.bin["]' scripts/package/buildtar
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]pcm1681_reg_defaults\[\][ ]=' sound/soc/codecs/pcm1681.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8997_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm8997.c
-    blob '[\t]0xE1[,][ ]0x88[,][ ]0x10[,][ ]0x00[,][ ]0x0B[,][ ]0x00[,][ ]0x01[,][ ]0x00[,]\([\n][\t][0-9xA-F, ]*\)*' drivers/staging/rtl8188eu/hal/Hal8188EFWImg_CE.c
-
-    # New in 3.13
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-drxk-01\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?firmware-2\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43\(143\|241b[04]\|29\|3[045]\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7265-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    accept '[\t][\t]brightness-levels[ ][=][ ][<][0-9 \t\n]*[>][;]' arch/arm/boot/dts/imx28-tx28.dts
-    accept '[\t]echo[ ]["]mic[/]uos\.img["][ ]' Documentation/mic/mpssd/micctrl
-    accept '[\t]mdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/host/mic_sysfs.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ \t\n]*mdev->\(ramdisk\|firmware\)[,][ ]mdev->sdev->parent[)][;]' drivers/misc/mic/host/mic_x100.c
-    accept '[\t]*["]\(ramdisk\|firmware\)[ ]request_firmware[ ]failed' drivers/misc/mic/host/mic_x100.c
-    defsnc 'static[ ]const[ ]struct[ ]dsi_clock_table[ ]dsi_clk_tbl\[\][ ]=' drivers/gpu/drm/i915/intel_dsi_pll.c
-    defsnc 'uint32_t[ ]nv108_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
-    defsnc 'uint32_t[ ]nva3_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
-    defsnc 'uint32_t[ ]nvc0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
-    defsnc 'uint32_t[ ]nvd0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_hawaii_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    accept '[\t]["]edid[/]\(1024x768\|1280x1024\|1600x1200\|1680x1050\|1920x1080\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc '[\t]unsigned[ ]char[ ]buf\[\][ ]=' drivers/hid/hid-sony.c
-    blobname 'dvb-fe-cx24117\.fw' drivers/media/dvb-frontends/cx24117.c
-    blobname 'vpdma-1b8\.bin' drivers/media/platform/ti-vpe/vpdma.c
-    defsnc 'static[ ]const[ ]u8[ ]ov361x_start_\(2048\|1600\|1024\|640\|320\|160\)\[\]\[2\][ ]=' drivers/media/usb/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]tuning_blk_pattern_[48]bit\[\][ ]=' drivers/mmc/host/dw_mmc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_8192_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc '[\t]static[ ]u8[ ]PN9Data\[\][ ]=' drivers/net/wireless/ath/ath9k/main.c
-    blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-    defsnc 'static[ ]s32[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rtlwifi[/]rtl8188eufw\.bin' drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc '[}][ ]test2\[\][ ]=' lib/random32.c
-    defsnc 'static[ ]const[ ]struct[ ]hda_verb[ ]hp_bnb13_eq_verbs\[\][ ]=' sound/pci/hda/patch_sigmatel.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]aic3x_reg\[\][ ]=' sound/soc/codecs/tlv320aic3x.c
-    blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-
-    # New in 3.13.2
-    blobname 'rtlwifi[/]rtl8192cufw_\([AB]\|TMSC\)\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-
-    # New in 3.14
-    blobname 'dvb-usb-technisat-cablestar-hdci-drxk\.fw' drivers/media/usb/dvb-usb-v2/az6007.c
-    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'brcm[/]brcmfmac43362-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac4339-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'mrvl[/]usb8897_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
-    blobname 'cbfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-
-    # New in 3.14.6
-    blobname 'radeon[/]\(%s\|BONAIRE\|HAWAII\|TAHITI\|PITCAIRN\|VERDE\|OLAND\|HAINAN\)_mc2\.bin' 'drivers/gpu/drm/radeon/\(cik\|si\)\.c'
-
-    # New in 3.15
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nvc0_graph_init[\n]nvc0_graph_init_\(main\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'static[ ]const[ ]u32[ ]godavari_golden_registers\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'brcm[/]brcmfmac4354-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname '%s%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
-    blobname 'ti-connectivity[/]wl18xx-fw-3\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ql2700_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-
-    # New in 3.16
-    defsnc '[\t]*atmel[,]pll-clk-output-ranges[ ]=[ ]<' 'Documentation/devicetree/bindings/clock/at91-clock\.txt\|arch/arm/boot/dts/at91sam9x5\.dtsi'
-    blobname 'imx[/]sdma[/]sdma-imx25\.bin' arch/arm/boot/dts/imx25.dtsi
-    blobname 'imx[/]sdma[/]sdma-imx35\.bin' arch/arm/boot/dts/imx35.dtsi
-    blobname 'imx[/]sdma[/]sdma-imx50\.bin' arch/arm/boot/dts/imx50.dtsi
-    blobname 'sdma-imx53\.bin' arch/arm/boot/dts/imx53-tx53.dtsi
-    defsnc 'struct[ ]sock_filter[ ]code\[\][ ]=' Documentation/networking/filter.txt
-    initnc '\.L\(Forward\|Reverse\)_Sbox:[\n][\t]\.byte[\t]*' arch/arm64/crypto/aes-neon.S
-    initnc '\.Lsha2_rcon:[\n][\t]\.word[\t]*' arch/arm64/crypto/sha2-ce-core.S
-    defsnc 'static[ ]const[ ]u8[ ]sata_phy_config[12]\[\][ ]*=' arch/mips/netlogic/xlp/ahci-init-xlp2.c
-    accept '[	]*interrupts[ ]=[ ]<108[ ]0\([\n][	 ]*1[012][0-9][ ]0\)*>[;]' arch/powerpc/boot/dts/akebono.dts
-    defsnc '[\t]static[ ]int[ ]sysdiv_code_to_x2\[\][ ]=' arch/powerpc/platforms/512x/clock-commonclk.c
-    accept '[#][#][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_avx-x86_64.S
-    defsc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|224\|256\|384\|512\)_\(aes\|des\|des3_ede\)_cbc_enc_tv_temp\[\][ ]=' crypto/testmgr.h
-    accept '#define[ \t]*ACPI_TABLE_FILE_SUFFIX[\t ]*["]\.dat["]' drivers/acpi/acpica/acapps.h
-    accept '[ ][*][ ]request_firmware\(_direct\)\?:[ ]-[ ]load[ ]firmware[ ]directly[ ]without[ ]usermode[ ]helper' drivers/base/firmware_class.c
-    accept '[ ][*][ ]This[ ]function[ ]works[ ]pretty[ ]much[ ]like[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'int[ ]request_firmware_direct[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,][ ]FW_OPT_UEVENT[)][;]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL_GPL[(]request_firmware_direct[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]armada_375_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-375.c
-    defsnc 'static[ ]const[ ]int[ ]armada_38x_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-38x.c
-    defsnc 'static[ ]struct[ ]cpufreq_frequency_table[ ]s3c64xx_freq_table\[\][ ]=' drivers/cpufreq/s3c64xx-cpufreq.c
-    defsnc 'static[ ]const[ ]u8[ ]ccp_sha\(1\|224\|256\)_zero\[CCP_SHA_CTXSIZE\][ ]=' drivers/crpto/ccp/ccp-ops.c
-    blobname 'ast_dp501_fw\.bin' drivers/gpu/drm/ast/ast_dp501.c
-    accept '[\t]["]edid[/]\(800x600\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]void[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_5420_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    # These seem too sparse to be code.
-    defsnc 'static[ ]const[ ]u32[ ]gen6_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen6.c
-    defsnc 'static[ ]const[ ]u32[ ]gen7_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen7.c
-    defsnc 'static[ ]const[ ]u32[ ]gen8_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen8.c
-    defsnc 'nv50_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
-    defsnc 'nv84_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
-    defsnc 'nva0_disp_ovly_mthd_base[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nva0.c
-    defsnc 'nvd0_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
-    defsnc 'nve0_disp_\(mast_mthd_head\|ovly_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
-    defsnc 'gm107_grctx_init_\(\(icmd\|b097\|fe\|ds\|pd\|be\|setup\|tex\|mpc\|sm\|wwdx\)_0\|gpc_unk_2\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxgm107.c
-    defsnc 'nv108_grctx_init_\(icmd\|fe\|ds\|pd\|rstr2d\|be\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnv108.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|fe\|memfmt\|rstr2d\|prop\|setup\|crstr\|zcullr\|wwdx\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|setup\|wwdx\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc4_grctx_init_\(tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc4.c
-    defsnc 'nvc8_grctx_init_\(icmd\|setup\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(ds\|pd\|setup\|tex\|wwdx\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|fe\|ds\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|fe\|memfmt\|ds\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(icmd\|a197\|fe\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]gm107_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5.h
-    defsnc 'uint32_t[ ]nv108_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h
-    defsnc 'uint32_t[ ]gm107_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5.h
-    defsnc 'uint32_t[ ]nv108_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
-    defsnc 'gm107_graph_init_\(main\|tpccs\|tex\|sm\|be\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/gm107.c
-    defsnc 'nv108_graph_init_\(main\|l1c\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv108.c
-    defsnc 'nvc4_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc4.c
-    defsnc 'nvc8_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd9_graph_init_\(gpc_unk_1\|sm_0\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(\(main\|l1c\|sm\|be\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_\(\(l1c\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc 'static[ ]u8[ ]const[ ]ld9040_gammas\[25\]\[22\][ ]=' drivers/gpu/drm/panel/panel-ld9040.c
-    defsnc 'static[ ]void[ ]s6e8aa0_panel_cond_set[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*s6e8aa0_dcs_write_seq_static[(]ctx[,][\n\t0x0-9a-f, ]*[)][;]' drivers/gpu/drm/panel/panel-s6e8aa0.c
-    defsnc 'static[ ]const[ ]s6e8aa0_gamma_table[ ]s6e8aa0_gamma_tables_v\(142\|96\|32\)\[GAMMA_LEVEL_NUM\][ ]=' drivers/gpu/drm/panel/panel-s6e8aa0.c
-    blobname 'radeon[/]BONAIRE_vce\.bin' drivers/gpu/drm/radeon/radeon_vce.c
-    defsnc '[\t]static[ ]const[ ]__u8[ ]sixaxis_leds\[10\]\[4\][ ]=' drivers/hid/hid-sony.c
-    defsnc '[\t]union[ ]sixaxis_output_report_01[ ]report[ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]int[ ]twl4030_therm_tbl\[\][ ]=' drivers/iio/adc/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]linear_segments[ ]strength_to_db_table\[\][ ]=' drivers/media/dvb-frontends/dib8000.c
-    blobname 'dvb-fe-drxj-mc-1\.0\.8\.fw' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    defsnc 'static[ ]const[ ]u16[ ]nicam_presc_table_val\[43\][ ]=' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    accept '[\t][\t]*demod->firmware[ ]=[ ]\(fw\|NULL\)[;]' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    blobname 'dvb-demod-m88ds3103\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88ds3103_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
-    blobname 'dvb-demod-si2168-02\.fw' drivers/media/dvb-frontends/si2168_priv.h
-    blobname 's5k5baf-cfg\.bin' drivers/media/i2c/s5k5baf.c
-    defsnc 'static[ ]const[ ]u16[ ]scaler_[hv]s_coeffs\[1[35]\]\[SC_NUM_PHASES[ ][*][ ]2[ ][*][ ]SC_[HV]_NUM_TAPS\][ ]=' drivers/media/platform/ti-vpe/sc_coeff.h
-    defsnc 'static[ ]const[ ]struct[ ]si4713_start_seq_table[ ]start_seq\[\][ ]=' drivers/media/radio/si4713/radio-usb-si4713.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_gain[ ]e4000_if_gain_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]dtcs033_usb_requests[ ]dtcs033_start_reqs\[\][ ]=' drivers/media/usb/gspca/dtcs033.c
-    defsnc 'static[ ]struct[ ]idxdata[ ]tbl_\(\(middle\|end\)_hvflip\(_\(low\|big\)\)\?\|init_post_alt_\(low[123]\|big\|3B\)\)\[\][ ]=' drivers/media/usb/gspca/gl860/gl860-mi2020.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revd_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]tuning_block_128\[\][ ]=' drivers/mmc/host/sdhci-msm.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]ecc_layout_[24]KB_bch[48]bit[ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    defsnc '[\t]static[ ]char[ ]packet\[\][ ]=' drivers/net/ethernet/intel/i40e/i40e_txrx.c
-    defsnc 'u8[ ]netvsc_hash_key\[HASH_KEYLEN\][ ]=' drivers/net/hyperv/rndis_filter.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_buffalo\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_cus227_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_common_\(mixed_\)\?rx_gain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_modes_\(low\|mix\|high\)_ob_db_tx_gain\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p[01]_\(\(mac\|baseband\|radio\)_core\|modes_\(no_\)\?xpa_tx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p0_\(baseband\|radio\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_\(phy\|radio\)_rev\([34568]\|7_9\|11\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_noisevar_r3\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'iwlwifi-8000-' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname 'iwl_nvm_8000\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
-    defsnc 'static[ ]const[ ]u8[ ]iwl_nvm_channels_family_8000\[\][ ]=' drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
-    defsnc 'static[ ]const[ ]u16[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rsi_91x\.fw' drivers/net/wireless/rsi/rsi_common.h
-    defsnc 'static[ ]const[ ]u32[ ]RF_GAIN_TABLE\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
-    defsnc 'static[ ]const[ ]u8[ ]\(cck_ofdm_gain_settings\|rtl8225se_tx_power_cck\(_ch14\)\?\|ZEBRA_AGC\|OFDM_CONFIG\)\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
-    defsnc '[\t]u16[ ]toshiba_smid1\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/hw.c
-    blobname 'rtlwifi[/]rtl8723befw\.bin' drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-    defsnc 'u32[ ]RTL8723BE\(PHY_REG\|_RADIOA\|MAC\|AGCTAB\)_\(1T_\?ARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwfi/rtl8723be/table.c
-    defsnc 'static[ ]\(const[ ]unsigned[ ]\)\?int[ ]tps65864[03]_sm2_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]uint32_t[ ]ql27xx_fwdt_default_template\[\][ ]=' drivers/scsi/qla2xxx/qla_tmpl.c
-    blobname 'dgap[/]\(sx\|cxp\|pci\|xr\)\(bios\|fep\)\.bin' drivers/staging/dgap/dgap.c
-    accept '[\t][ ]*kernel[ ]firmware[ ]framework[,][ ]request_firmware[(][)]' drivers/staging/gs_fpgaboot/README
-    defsnc 'static[ ]u8[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc '[\t]u8[ ]data_ptr\[36\][ ]=' drivers/staging/keucr/smscsi.c
-    # This is a default for the user-supplied fpga configuration; it
-    # is overridable with a module parameter.
-    accept 'static[ ]char[ \t]*[*]file[ ]=[ ]["]xlinx_fpga_firmware\.bit["][;]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    blobname '\(ti1273\(_\(pre\)\?le\)\?\|bc[m4]fw\)\.bin' drivers/staging/nokia_h4p/nokia_fw.c
-    defsnc '[\t]u8[ ]channel5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/hw.c
-    blobname 'rtlwifi[/]rtl8192eefw\.bin' drivers/staging/rtl8192ee/rtl8192ee/sw.c
-    defsnc 'u32[ ]RTL8192EE_\(PHY_REG\|RADIO[AB]\|MAC\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/table.c
-    defsnc '[\t]u8[ ]Channel_5G\[45\][ ]=' drivers/staging/rtl8723au/core/rtw_mlme_ext.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\]=' drivers/staging/rtl8723au/core/rtw_security.c
-    defsnc 'u32[ ]Rtl8723UPHY_REG_Array_PG\[Rtl8723UPHY_REG_Array_PGLength\][ ]=' drivers/staging/rtl8723au/hal/Hal8723UHWImg_CE.c
-    defsnc 'static[ ]u32[ ]Array_\(AGC_TAB\|PHY_REG\)_\(1T\|PG\)_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
-    defsnc 'static[ ]u32[ ]Array_MAC_REG_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
-    blobname 'rtlwifi[/]rtl8723aufw_\(A\|B\(_NoBT\)\?\)\.bin' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-    defsnc 'u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ab]_[np]_txpwrtrack\[\]\[DELTA_SWINGIDX_SIZE\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet_8821\[TOTAL_RESERVED_PKT_LEN_8821\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet_8812\[TOTAL_RESERVED_PKT_LEN_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
-    defsnc '[\t]u8[ ]channel_5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' 'drivers/staging/rtl8821ae/rtl8821ae/\(hw\|phy\)\.c'
-    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/phy.c
-    blobname 'rtlwifi[/]rtl8821aefw\.bin' drivers/staging/rtl8821ae/rtl8821ae/sw.c
-    defsnc 'u32[ ]RTL88\(12\|21\)AE_\(\(PHY\|MAC\)_REG\|RADIO[AB]\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/table.c
-    accept '#define[ ]CONFIG_PATH[\t]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6656/device.h
-    defsnc 'static[ ]const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    blobname 'moxa[/]moxa-\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.fw' drivers/usb/serial/mxuport.c
-    accept '#define[ \t]request_firmware_direct[ \t]request_firmware' include/linux/firmware.h
-    accept '[\t]report_missing_free_firmware[^\n]*[\n][\t]retval[ ]=[ ]request_firmware_direct[(]' include/linux/firmware.h
-    defsnc 'const[ ]u8[ ]crc7_be_syndrome_table\[256\][ ]=' lib/crc7.c
-    defsnc 'static[ ]struct[ ]bpf_test[ ]tests\[\][ ]=' lib/test_bpf.c
-    defsnc '[\t]static[ ]struct[ ]sock_filter[ ]ptp_filter\[\][ ]__initdata[ ]=' net/core/ptp_classifier.c
-    blobname 'adau1761\.bin' sound/soc/codecs/adau1761.c
-    accept '[\t][\t]ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][\n][\t ]*ADAU1761_FIRMWARE[)][;]' sound/soc/codecs/adau1761.c
-    blobname 'adau1[37]81\.bin' sound/soc/codecs/adau1781.c
-    accept '[\t][\t]firmware[ ]=[ ]ADAU1[37]81_FIRMWARE[;]\([\n][\n]*[\t][^\n]*\)*ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][ ]firmware[)][;]' sound/soc/codecs/adau1781.c
-    blobna 'adau17x1_load_firmware' sound/soc/codecs/adau17x1.c
-    accept 'int[ ]adau17x1_load_firmware[(]' 'sound/soc/codecs/adau17x1\.[ch]'
-    accept 'EXPORT_SYMBOL_GPL[(]adau17x1_load_firmware[)][;]' sound/soc/codecs/adau17x1.c
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware_regmap[(]dev[,][ ]adau->regmap[,][ ]firmware[)][;]' sound/soc/codecs/adau17x1.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]adau1977_reg_defaults\[\][ ]=' sound/soc/codecs/adau1977.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak4641_reg_defaults\[\][ ]=' sound/soc/codecs/ak4641.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak464[28]_reg\[\][ ]=' sound/soc/codecs/ak4642.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5645_reg\[\][ ]=' sound/soc/codecs/rt5645.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5651_reg\[\][ ]=' sound/soc/codecs/rt5651.c
-    defsnc 'int[ ]_process_sigma_firmware[(]' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL_GPL[(]_process_sigma_firmware[)]' sound/soc/codecs/sigmadsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta350_regs\[\][ ]=' sound/soc/codecs/sta350.c
-    defsnc 'static[ ]const[ ]struct[ ]aic31xx_rate_divs[ ]aic31xx_divs\[\][ ]=' sound/soc/codecs/tlv320aic31xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8974_reg_defaults\[\][ ]=' sound/soc/codecs/wm8974.c
-    blobname 'intel[/]IntcSST[12]\.bin' sound/soc/intel/sst-acpi.c
-    blobname 'intel[/]fw_sst_0f28\.bin-i2s_master' sound/soc/intel/sst-acpi.c
-    defsnc 'static[ ]unsigned[ ]char[ ]bcd2000_init_sequence\[\][ ]=' sound/usb/bcd2000/bcd2000.c
-    blobna '[ ][*][ ]xxd[ ]-r[ ]-p[ ]mXTXXX[^\n]*maxtouch\.fw[\n][ \t]*[*][/]' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 's5p-mfc-v8\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    ;;
-
-  */*freedo*.patch | */*logo*.patch)
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm
-    ;;
-
-  */patch-3.13*)
-    # Introduced in 3.13.2.
-    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]wm5110_s[*][/][;]' sound/soc/codecs/wm5110.c
-    # New in 3.13.7.
-    accept '[\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\([\n][\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\)*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    ;;
-
-  */patch-3.12*)
-    # Introduced in 3.12.10.
-    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    # New in 3.13
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-drxk-01\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?firmware-2\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43\(143\|241b[04]\|29\|3[045]\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7265-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    accept '[\t][\t]brightness-levels[ ][=][ ][<][0-9 \t\n]*[>][;]' arch/arm/boot/dts/imx28-tx28.dts
-    accept '[\t]echo[ ]["]mic[/]uos\.img["][ ]' Documentation/mic/mpssd/micctrl
-    accept '[\t]mdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/host/mic_sysfs.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ \t\n]*mdev->\(ramdisk\|firmware\)[,][ ]mdev->sdev->parent[)][;]' drivers/misc/mic/host/mic_x100.c
-    accept '[\t]*["]\(ramdisk\|firmware\)[ ]request_firmware[ ]failed' drivers/misc/mic/host/mic_x100.c
-    defsnc 'static[ ]const[ ]struct[ ]dsi_clock_table[ ]dsi_clk_tbl\[\][ ]=' drivers/gpu/drm/i915/intel_dsi_pll.c
-    defsnc 'uint32_t[ ]nv108_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
-    defsnc 'uint32_t[ ]nva3_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
-    defsnc 'uint32_t[ ]nvc0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
-    defsnc 'uint32_t[ ]nvd0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_hawaii_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    accept '[\t]["]edid[/]\(1024x768\|1280x1024\|1600x1200\|1680x1050\|1920x1080\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc '[\t]unsigned[ ]char[ ]buf\[\][ ]=' drivers/hid/hid-sony.c
-    blobname 'dvb-fe-cx24117\.fw' drivers/media/dvb-frontends/cx24117.c
-    blobname 'vpdma-1b8\.bin' drivers/media/platform/ti-vpe/vpdma.c
-    defsnc 'static[ ]const[ ]u8[ ]ov361x_start_\(2048\|1600\|1024\|640\|320\|160\)\[\]\[2\][ ]=' drivers/media/usb/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]tuning_blk_pattern_[48]bit\[\][ ]=' drivers/mmc/host/dw_mmc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_8192_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc '[\t]static[ ]u8[ ]PN9Data\[\][ ]=' drivers/net/wireless/ath/ath9k/main.c
-    blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-    defsnc 'static[ ]s32[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rtlwifi[/]rtl8188eufw\.bin' drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc '[}][ ]test2\[\][ ]=' lib/random32.c
-    defsnc 'static[ ]const[ ]struct[ ]hda_verb[ ]hp_bnb13_eq_verbs\[\][ ]=' sound/pci/hda/patch_sigmatel.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]aic3x_reg\[\][ ]=' sound/soc/codecs/tlv320aic3x.c
-    blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    # Matches from earlier releases, for the patch from 3.12.
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    # Matches specific for the patch from 3.12.
-    accept '[\t]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware' drivers/base/firmware_class.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9462_2p1_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9485Modes_\(high_power_\|green_ob_db\|high_ob_db_\|green_spur_\)[*][/][;]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9565_1p0_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u16[ ]bios_to_linux_keycode\[2[*][/][;]' drivers/platform/x86/dell-wmi.c
-    # Matches for the reversed patch present in earlier releases.
-    defsnc 'const[ ]char[ ]_[zs]b_findmap\[\][ ]=' arch/s390/kernel/bitmap.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    # Matches specific for the reversed patch.
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=[\t][{][*][/][;]' drivers/staging/rtl8187se/r8185b_init.c
-    ;;
-
-  */patch-3.11*)
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load[(]' drivers/base/firmware_class.c
-    # Already present in 3.11, but modified in 3.12:
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    # New in 3.12.
-    blobname 's5p-mfc-v7\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
-    blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
-    defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    defsnc '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
-    defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a3xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    blobname 'a3[03]0_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_\(bonaire\|saturn\)_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]struct[ ]kv_lcac_config_values[ ]cpl_local_cac_cfg_kv\[\][ ]=' drivers/gpu/drm/radeon/kv_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]imx_i2c_clk_pair[ ]\(imx\|vf610\)_i2c_clk_div\[\][ ]=' drivers/i2c/busses/i2c-imx.c
-    defsnc 'static[ ]const[ ]u16[ ]apds9300_lux_ratio\[\][ ]=' drivers/iio/light/apds9300.c
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_4313_ipa_rev0_combo\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    accept '[	][	]adapter->firmware[ ]=[ ]NULL' drivers/net/wireless/mwifiex/main.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]const[ ]int[ ]bq24190_\(ccc_ichg\|cvc_vreg\)_values\[\][ ]=' drivers/power/bq24190_charger.c
-    blobname '[(]i\.e\.[ ]["]asfep\.bin["][)][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '[(]["][/]etc[/]dgap[/]xrfep\.bin["][)][;][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '["][/]lib[/]firmware[/]dgap[/]["]' drivers/staging/dgap/downld.c
-    blobname '\(fx\|cx\|cxp\|ibm\(cx\|en\)\|xr\|sx\|pci\)\(bios\|fep\|con\|host\)\.bin' drivers/staging/dgap/downld.c
-    defsnc 'static[ ]const[ ]struct[ ]msi3101_gain[ ]msi3101_gain_lut_\(120\|245\|1000\)\[\][ ]=' drivers/staging/media/msi3101/sdr-msi3101.c
-    defsnc 'static[ ]struct[ ]ch_freq[ ]ch_freq_map\[\][ ]=' drivers/staging/rtl8188eu/core/rtw_rf.c
-    defsnc 'static[ ]\(const\)\?[ ]\?u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u32[ ]T[ed]0\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u8[ ]Td4s\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]u32[ ]array_\(agc_tab\|phy_reg\)_\(1t\|pg\)_8188e\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_BB.c
-    defsnc 'static[ ]u32[ ]array_MAC_REG_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_RF.c
-    defsnc '[	]u8[	]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/HalPhyRf.c
-    defsnc 'static[ ]const[ ]u16[ ]dB_Invert_Table\[8\]\[12\][ ]=' drivers/staging/rtl8188eu/hal/odm.c
-    blobname 'rtl8188E[/\\]*rtl8188efw\.bin' drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-    defsnc 'static[ ]const[ ]unsigned[ ]long[ ]K\[64\][ ]=' drivers/staging/rtl8188eu/include/rtw_security.h
-    defsnc '[	]static[ ]const[ ]struct[ ]msm_baud_map[ ]table\[\][ ]=' drivers/tty/serial/msm_serial.c
-    defsnc 'static[ ]u8[ ]hx8369_seq_gamma_curve_related\[\][ ]=' drivers/video/backlight/hx8357.c
-    defsnc 'static[ ]const[ ]wchar_t[ ]t2_\(0[012345]\|1[def]\|2[14cd]\|a[67]\|ff\)\[256\][ ]=' fs/cifs/winucase.c
-    accept '[	]*\(\(el\)\?if[ ]\[[ ]-f\|cp[ ]-v[ ]--\)[ ]["][$][{]objtree[}][/]arch[/]mips[/]boot[/]\(compressed[/]\)\?vmlinux\.bin["]' scripts/package/buildtar
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]pcm1681_reg_defaults\[\][ ]=' sound/soc/codecs/pcm1681.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8997_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm8997.c
-    ;;
-
-  */patch-3.10*)
-    # Matches for the reversed patch.
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    accept '[	]return[ ]_request_firmware[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    # Matches of changes from 3.10 adjusted for patch.
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware[(]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9462_2p0_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]request_firmware_nowait[(]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[ ]request_firmware\?[(]' include/linux/firmware.h
-    # Present in 3.10, modified in 3.11 patch:
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_linux_clut224.ppm
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-    ;;
-
-  */patch-3.9*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load\(struct[*][/][;]\)\?' drivers/base/firmware_class.c
-    ;;
-
-  */patch-3.8*)
-    # Present in 3.8 but patched in stable releases.
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # Present in 3.8
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    # For 3.8-to-3.9 patch:
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_load\|_work_func\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_f\(c0011\[\][ ]=\)\?\(\([ ][{]\)\?[*][/][;]\)\?' drivers/media/dvb/frontends/af9033_priv.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=\([ ]\?[{]\?[*][/][;]\)\?' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[	]\.firmware[ ]=[ ]\(DW210[24]\|DW3101\|S630\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]\(P1100\|S660\|P7500\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_pos\(tamble\[\]\[5\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx\(_gain_table\[\]\[9\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=\([*][/][;]\)\?' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-    # Reverse 3.8-to-3.9 patch:
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_cleanup\|_prepare\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]*\(\(fw_priv\|ret\)[ ]=[ ]\)\?_\?request_firmware_\(load\|prepare\|cleanup\)' drivers/base/firmware_class.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    accept '[	]\.firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(SiS\|XGI\)_[ME]CLKData\(Struct\)\?[ ]XGI\(340\|27\)\(\(New\)\?_[ME]CLKData\[\][ ]*=\|N\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    ;;
-
-  */drm-qxl-driver.patch)
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    ;;
-
-  */patch-3.7*)
-    # Removed chunks matched by entries that don't appear in the patch context.
-    initnc '[	]0x019806b8[,][\n][	]0x1427f116[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0xf1160198[,][\n][	]0xb6041427[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    # Present in 3.7 and removed in the patch (for --reverse-patch).
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    # Chunks matched by other entries that don't appear in the patch context.
-    initnc '[	][{][ ]19200000[,][ ]216000000[,]' arch/arm/mach-tegra/tegra20_clocks_data.c
-    initnc '[	]0x16019806[,][\n][	]0x041427f1[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0x98069221[,][\n][	]0x27f11601[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '[	][{]0x0000a284\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    initnc '[	][{]0x0000a574\([,][ ]0x9c1fff0b\)*\([,][ ]0x5e001eeb\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a580[,][ ]0x00000000[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a584\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a0b4\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000982c\([,][ ]0x05eea6d4\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    initnc '[	][{][ ]184[,][ ]0x00[ ][}][,]' sound/soc/codecs/lm49453.c
-    # Already present in 3.7.
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-    ;;
-
-  */patch-3.6*)
-    # Present in patch for 3.6.4.
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # Present in patch for 3.6.5.
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    # Specific to the 3.7 patch
-    accept '[	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]7[)],[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][ ]request_firmware[(][)][ ]returns[ ]non-zero' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(]firmware_p[)][;]' drivers/base/firmware_class.c
-    accept '[ ][*][	]Asynchronous[ ]variant[ ]of[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware\(_nowait\)\?[(]' include/linux/firmware.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    accept '[	][{]0x00009e1c,[ ]0x0001cf9c,[ ]0x[0-9a-fx{},\n	 ]*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '[;][/][*]@@[ ]-391,17[ ][+]407,17[ ]@@[*][/][;][\n]\([ ]*[123],\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*1,\)*' scripts/dtc/dtc-lexer.lex.c_shipped
-    accept '[;][/][*]@@[ ]-395,16[ ][+]423,16[ ]@@[*][/][;][\n][ ]*0,\([ ]*2,\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*2,\)*' scripts/dtc/dtc-parser.tab.c_shipped
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[ 12][0-9],\)*[\n]\)*\([ ]*[12][0-9],\)*[ ]*24' scripts/dtc/dtc-parser.tab.c_shipped
-    
-    # Already in 3.6, but changed or moved thus present in patch to 3.7:
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    # Present in 3.6 but removed in the patch:
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    # Specific for the 3.7-to-3.6 reverse patch:
-    accept '[	]err[ ]=[ ]request_firmware[(]&fw,[ ]patch,[ ]dev[)][;]' sound/pci/hda/hda_hwdep.c
-    defsnc '\(static[ ]const[ ]struct[ ]\(stk1160\|saa7113\)config\|[}]\)[ ]\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    accept '[ ]kernel[(]driver[)]:[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[1-4],\)*[\n]\)*\([ ]*[ 1][0-9],\)*[ ]*12' scripts/dtc/dtc-parser.tab.c_shipped
-    ;;
-
-  */patch-3.5*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    # Present in 3.5 and in patch to 3.6:
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(high\|low\|mixed\)_\(power\|ob_db\)\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_wo_xlna_rx_gain\)\?_1_1\(_\(baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_1_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed[^\n]*[\n][	]*complete_all[(][&]rproc->firmware_loading_complete' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '[	][{]\(0x0000a288[,][ ]0x00000220\|0x0000a430[,][ ]0x1ce739ce\|0x0000a540[,][ ]0x\(49005e72\|4e02246c\)\|0x0000a5f4[,][ ]0x\(6f82bf16\|778a308c\)\|0x0000a50c[,][ ]0x10000023\|0x00009e04[,][ ]0x001c2020\|0x00009e44[,][ ]0x62321e27\)\([,][ ]0x[0-9a-f]*\)*[}][,]\([\n][	][{]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*[}][,]\)*' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    # For reversal of 3.5-to-3.6 patch only.
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc 'uint32_t[ ]nva3_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    initnc 'uint32_t[ ]nvc0_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc 'const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-    ;;
-
-  */patch-3.4*gnu*3.5*)
-    # This is far too general for deblobbing, but ok for patch checking.
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[*][/][;][\n][	][{]0x0000\(9830\|a288\|a0b4\|a138\)[,][ ]0x00000[0-9a-f]*[}]\?[,]' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    # Already present in 3.4, but moved or changed in 3.5:
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.SD31\|\.DB132\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-    # Required for reverse patch only:
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    ;;
-
-  */patch-3.3*gnu*)
-    # These patterns are *way* too broad for general use, but they're fine
-    # for patches between deblob-checked releases.
-    accept 'static[ ]\(int\|void\)[ ]_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware[(]const' drivers/base/firmware_class.c
-    accept '[	]*ret[ ]=[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]*_request_firmware_cleanup' drivers/base/firmware_class.c
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	]0x43[,][ ]11[,][	]0x00[,][0-9xa-f, 	\n]*' drivers/media/video/gspca/pac7302.c
-    accept '\([ 	][{][ ]0x[12][02][,][ ]0x[0-9a-f][0-9a-f][,][ ]0x[0-9a-f][0-9a-f][ ][}][,][\n]\?\)\+[	][{][ ]0[ ][}][ ][/][*][ ]TERMINATING[ ]ENTRY[ ][*][/]' sound/usb/6fire/control.c
-    # Some of the above were present before, but not covered by these
-    # specific patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # New in 3.4.
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-    # Removed in 3.4, for --reverse-patch only.
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    accept '-3[,]-2[,]-2[,]-1[,]-1[,]0[,][0-9,\n]*[}][;]' drivers/hwmon/via686a.c
-    accept '[	][{]0xa1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,]\([\n][	][{]0x[ac]1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,][}][,]\)*' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */3.4.1-stable-queue.patch* | */patch-3.4*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43legacy_request_firmware[(]s[^\n]*[*][/][;]' drivers/net/wireless/b43legacy/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    ;;
-
-  */atl1c_net_next_update-3.[34].patch)
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    ;;
-
-  */drivers-media-update.patch)
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    accept '[	]0x43,[ ]11,[	][0-9a-fx, 	\n]*' drivers/media/video/gspca/pac7302.c
-    # Entries above are in 3.3; below are for 3.4.
-    blobname 'dvb-usb-terratec-h7-drxk\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-terratec-h7-az6007\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-fe-xc5000\(-1\.6\.114\|c-41\.024\.5-31875\)\.fw' drivers/media/common/tuners/xc5000.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6007.c
-    accept '[	]*\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	]*\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/af9035.c
-    ;;
-
-  */brcm80211.patch)
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    ;;
-
-  */patch*-3.1.*)
-    defsnc 'static[ ]const[ ]u8[ ]ak4642_reg\[AK4642_CACHEREGNUM\][ ]=' sound/soc/codecs/ak4642.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */media-DiBcom*.patch)
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-3.1-rc*)
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/staging/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    defsnc '[ ][ ]static[ ]\(const[ ]\)\?unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=[ ][{][*][/][;]' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]config[ ]FIRMWARE_IN_KERNEL[*][/][;].*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/ov9740.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    # for reverse patch
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,]' drivers/firmware/sigma.c
-    accept '[	][	]pr_debug[(]["]%s:[ ]request_firmware[(][)][ ]failed' drivers/firmware/sigma.c
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    # this was a bug in an earlier deblob
-    accept '#define[ ]WL_4329_NVRAM_FILE[ ]["][^"]*["]' drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' drivers/staging/brcm80211/brcmfmac/bcmchip.h
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'static[ ]struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'u16[]LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057_rev5[ ]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'struct[ ]radio_\(20xx_\)\?regs[ ]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    ;;
-
-  */patch*-3.0-rc*)
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    ;;
-
-  */patch*-2.6.39-rc*)
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sn9c20x.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKDataStruct[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    # The above match the reversed patch
-    defsnc 'static[ ]unsigned[ ]char[ ]bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]\(firmware_p\|fw\),' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware_nowait[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    # New in 2.6.39 below, present in earlier versions above
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    ;;
-
-  */rtl8180*.patch)
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    ;;
-
-  */patch*-2.6.38-rc*)
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_asm.S
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|m[ec]\)\.bin' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_\(wo_xlna_\)\?rx_gain\)\?_1_0\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_\(high\|low\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # Above is for patterns new in 2.6.38, below is for older patterns.
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?const[ ]u32[ ]b43_ntab_framestruct\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/b43/tables_nphy.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]tones\[2048\][ ]=\([ ][{][*][/][;]\)\?' drivers/staging/easycap/easycap_testcard.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc '\(static[ ]\)\?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\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225\(z2\)\?_\(agc\|ofdm\|\(tx_\)\?\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    ;;
-
-  */patch*-2.6.38*)
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    ;;
-
-  */patch*-2.6.37-rc*) # up to -rc8-git3
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]const[ ]A_INT32[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)-0[-0-9]*\.fw' drivers/staging/brcm80211/README
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.bin' drivers/staging/brcm80211/brcmfmac/README
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-    # Above is for patterns new in 2.6.37, below is for older patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[pxm]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]int[ ]be_load_fw[(][^\n;{]*[)][*][/][;][\n][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware' drivers/net/benet/be_main.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([ ][{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    defsnc '\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    accept '[*][ ]drivers[/]staging[/]ft1000[/]ft1000-\(pcmcia\|usb\)[/]ft[13]000\.img:[ ]Removed\.' 'patch-libre.*'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    ;;
-
-  */patch*-2.6.36.*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    ;;
-
-  */patch*-2.6.36-rc*)
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?const[ ]u32[ ]r[67]xx_default_state\[\][ ]=\([*][/][;]\)\?' drivers/gpu/drm/radeon/r600_blit_shaders.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]void[ ]get_regs[(]struct[ ]net_device[ ][*]dev,\([^\n]*[*][/][;]\)\?' drivers/net/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]__devinit[ ]bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h 
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{]\([*][/][;]\)\?[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-    # New in 2.6.36-rc3:
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[px]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ][{][^}]*[}][ ]\(stk1160\|saa7113\)config\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    ;;
-
-  */hid-support*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-    ;;
-
-  */sched*)
-    accept 'CPU[ ]\+before[ ]\+after[\n]\([\n][01][0-9][ ]\+:[ ][0-9]\+[ ]\+:[ ][67]\)*'
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    accept '\(All[ ]CPUS[ ]idle[ ]for[ ]10[ ]seconds[ ][(]HZ=1000[)]\|One[ ]CPU[ ]busy[ ]rest[ ]idle[ ]for[ ]10[ ]seconds\|All[ ]CPUs[ ]busy[ ]for[ ]10[ ]seconds\)[\n][0-9 \n]*'
-    accept 'domainstats:[ ]*domain0[\n][ ]*cpu[ ]*cnt[ ]*bln[ ]*fld[ ]*imb[ ]*gain[ ]*hgain[ ]*nobusyq[ ]*nobusyg[\n 0-9:]*'    
-    ;;
-
-  */*-loongson.patch)
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]rtl8225bcd_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_agc\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'static[ ]u32[ ]MAC_REG_TABLE\[\]\[3\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]ZEBRA2_CCK_OFDM_GAIN_SETTING\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u16[ ]rtl8225z2_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]rtl8225z2_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    ;;
-
-  */patch*-2.6.34-rc*)
-    # New in 2.6.34, should be duplicated in the main pattern set.
-    blobname 'cxgb4[/]t4fw\.bin' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '#[ ]\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    # Pattern present prior to 2.6.34, or already adjusted for 2.6.34 in
-    # the main pattern set.
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blob 'sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|cx\(23\(1xx\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    accept '\([/][*][*][\n]\)\?[ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[ ]of[ ]request_firmware' drivers/base/firmware_class.c
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sunplus.c
-    # above is in -rc1, below in -rc2
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    blobname '%s%[du]%s["],[\n 	]*name_pre,[ ]\(priv->fw_\)\?index,[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    ;;
-
-  */patch*-2.6.33-rc*)
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\([\n]\+[}]\)\?' include/linux/firmware.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    defsnc 'struct[ ]nv17_tv_norm_params[ ]nv17_tv_norms\[NUM_TV_NORMS\][ ]=' drivers/gpu/drm/nouveau/nv17_tv_modes.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' drivers/net/wireless/prism54/islpci_dev.c
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func[(]void[ ][*]arg[)][*][/][;][\n]\([^\n]*[\n]\)\+\([	]ret[ ]=[ ]_request_firmware[(]\|request_firmware_nowait[(]\)\?' drivers/base/firmware_class.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ]af9015_properties\(\[\]\)\?[ ]=[ ][{][*][/][;][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]bridge_start_ov965x\[\]\[2\][ ]=[ ][{][*][/][;][\n]' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_init\[\]\[8\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271_1_0\[\]\[[26]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?int[ ]request_firmware\(_nowait\)\?[(]\(const[ ]struct[ ]firmware[ ][*][*]\|[\n][	]struct[ ]module[ ][*]\)' include/linux/firmware.h
-    blobname 'isl38\(77\|86\|90\)' drivers/net/wireless/prism54/islpci_dev.c
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    accept '#include[ ]["]rf\.h["][\n]#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt30[79]0[/]\)\?\)\?firmware\.h["]' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-    # The above are covered by the main Linux patterns.  The patterns
-    # below are to be kept in sync in the 2.6.33 block within the main
-    # Linux patterns, until 2.6.33 is released.
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'const[ ]static[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_largepage[ ]=' drivers/mtd/nand/mxc_nand.c
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' drivers/net/bnx2x_main.c
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' drivers/net/bnx2x_main.c
-    blob '#define[ ]FW_VERSION\([ ]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ ]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_302x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]u16[ ]bios_to_linux_keycode\[256\][ ]=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname 'sndscape\.co\([?dx01234]\|%d\)' 'sound/\(isa/\(Kconfig\|sscape\.c\)\|oss/README\.OSS\)'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    ;;
-
-  */patch*-2.6.27*|*/patch*-2.6.31.*)
-    accept '[	]request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-2.6.30*)
-    initnc '[}][ ]bclk_divs\[\][ ]=[ ][{]' sound/soc/codecs/wm8903.c
-    ;;
-
-  */patch*-2.6.28-rc*)
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]UINT32[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]snr_table[ ]\(qpsk\|qam\(16\|64\)\)_snr_table\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    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
-
-    # Non-Free license in entire file.
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]saharadbgdownload\.h["]' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-
-    # ok from earlier releases
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix.txt|Documentation/serial/specialix.txt'
-    defsnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/pci/delkin_cb\.c\|drivers/ide/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-
-    # These are removed in 2.6.28, they're here so --reverse-patch tests pass.
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    initc '[	]static[ ]const[ ]__u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov7630_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */patch*-2.6.27-rc* | */patch*-2.6.26-git* | */git-linus.diff)
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]des3_ede_cbc_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF[\n]' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    initnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    initnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    initnc 'static[ ]const[ ]__u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]spca561_init_data\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    initnc 'static[ ]const[ ]__u16[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[MAX_[A-Z]*\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]__u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(mi13[12]0\|po3130\|hv7131r\|ov76[67]0\)_\(\(soc\)\?initQ\?VGA_\(JPG\|data\)\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    initnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' 'Documentation/bt8xxgpio.txt'
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]=[*][/][;]' scripts/genksyms/parse.c_shipped
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" arch/arm/inlcude/asm/hardware/entry-macro-iomd.S
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\(60\|48\)\)_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    ;;
-
-  */linux-2.6-gspca-git.patch)
-    # Probably for 2.6.28 or .29.
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    # Already in 2.6.27.
-    initnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc '[	][/][*][ ]Some[ ]more[ ]unknown[ ]stuff[ ][*][/]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]ov7648_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # No merge needed
-    defsnc '#if[ ]0[\n][	][{]0x30,[ ]0x0154,[ ]0x0008[}],' drivers/media/video/gspca/sunplus.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
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    ;;
-
-  */patch*-2.6.26-rc*)
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    initnc 'static[ ]struct[ ]hash_testvec[ ]\(hmac_sha\(224\|256\)\|aes_xcbc128\|crc32c\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]\(bf_cbc\|serpent\|tnepres\|aes\(_\(cbc\|ctr\|xts\)\)\?\|x\?tea\|anubis\(_cbc\)\?\|xeta\|camellia_cbc\|cts_mode\)_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{"]' crypto/tcrypt.h
-    initnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' drivers/ide/legacy/umc8672.c
-    initnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]\(ini\|act\|rco\)_time_value\[\]\[8\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c
-    initnc 'u16[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    oprepline '#define[ ]AR5K_RATES_11[ABG][ ]' drivers/net/wireless/ath5k/ath5k.h
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]1000,[ ]2,[ ]139,[ ]1[ ][}],[	]' drivers/net/wireless/ath5k/ath5k.h
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    # new in 2.6.26
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]=' drivers/media/video/cx18/cx18-av-vbi.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    blob 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\)[ ]=[ ]'"$sepx$blobpat*$sepx[;]" drivers/s390/net/qeth_core_mpc.c # from drivers/s390/net/qeth_mpc.c in 2.6.25
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    accept "[ ][ ][{][ ]0x00014284,[ ][ ]19688[ ][}],[\n][ ][ ][{][ ]0x00011104,[ ][ ]20400[ ][}],[\n][ ][ ][{][ ]$blobpat*[ ][}]," drivers/video/geode/lxfb_ops.c # won't be necessary in rc3
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_blackfin_clut224.ppm
-    ;;
-  */patch*-2.6.25-rc*)
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]=[ ][{][*][/][;]'
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]='
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^[]*\[\][ ]='
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{]'
-    initnc 'static[ ]struct[ ][^\n]*_testvec[ ][^\n]*_tv_template\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]='
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11\([ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    accept '[ ][ ][ ][ ][ ]\([ ]49,\)*[\n]\([ 0-9,]*[\n]\)*[ ][ ][ ][ ][ ]\([ ]49,\)*$'
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]='
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$'
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    accept '[	]24[ ]=>[ ]\[[\n]\([^\n]*[\n]\)*[	]\]\(,[ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    accept '[	][	]'"[']"'0x[^\n]*[\n]\([^\n]*[\n]\)*[	]\]\([,][ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    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 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.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
-    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
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv1[07]_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-
-    # drm-upgrayedd.patch
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-
-    # Although the developers of the drivers are not trying to stop
-    # anyone from modifying it or understanding it, they acknowledge
-    # 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.
-
-    # initnc 'static[ ]uint32_t[ ]nv\(4[013467ace]\|49_4b\|8[46]\)_ctx_\(voodoo\|prog\)\[\][ ]=' 'drivers/char/drm/nv40_graph.c|.*'
-    ;;
-  */linux-2.6*-lirc.patch | */lirc-*.patch)
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    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
-    ;;
-  */v4l1*.patch)
-    accept '[(]at[ ]which[ ]point[ ]it[ ]should[ ]use[ ]request_firmware'
-    ;;
-  */linux-2.6-v4l-dvb*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-  # post 2.6.37 fixes start here
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_p1g_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.identify_state[ ]*=[ ]technisat_usb2_identify_state,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    # present in 2.6.37
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    # post 2.6.35 fixes start here
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxxx.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ][*][/][;][\n][	]\.firmware[ ]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["],[\n][	]\.download_firmware[ ]=[ ]m920x_firmware_download' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    blobname 'v4l-cx23885-enc\.fw' drivers/media/video/cx23885/cx23885-417.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]brit_7660\[\]\[7\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]contrast_7660\[\]\[31\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]colors_7660\[\]\[6\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    # removed bits
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    # post 2.6.33 fixes start here
-    defsnc 'static[ ]struct[ ]i2c_reg_u8[ ]ov9655_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # rebase-gspca-to-latest 2.6.33ish starts here
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov6650_sensor_init\[\]\[8\][ ]=[*][/][;]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]hv7131r_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]po1030_sensor_param1\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    # rebase-gspca-to-latest ends here
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u16[ ]spca508_vista_init_data\[\]\[3\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/spca508.c
-    defsc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]mi1310_socinitVGA_JPG\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/vc032x.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    ;;
-  */linux-2.6-modsign-mpilib.patch)
-    initnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]='
-    ;;
-  */linux-2.6-netdev*.patch | \
-  */linux-2.6.27-net-r8169-2.6.28.patch)
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    ;;
-  */linux-2.6-wireless*.patch | */linux-2.6-ath5k.patch | \
-  */git-wireless-dev.patch | */linux-2.6-zd1211rw-mac80211.patch)
-    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\)\[\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]='
-    initnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11A[ ]'
-    oprepline '#define[ ]AR5K_RATES_11B[ ]'
-    oprepline '#define[ ]AR5K_RATES_11G[ ]'
-    oprepline '#define[ ]AR5K_RATES_TURBO[ ]'
-    oprepline '#define[ ]AR5K_RATES_XR[ ]'
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c # ?
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-
-    # git logs
-    accept '[ ][ ][ ]sudo[ ]modprobe[ ]ath5k[ ]debug=0x00000400[\n][ 	]*[\n]\([ 	]*Band[^\n]*[\n]\([ 	]*\(\(channels\|rates\):\|[- 	0-9a-f]*\|\[\.\.\.[ ]etc[ ]\]\)[\n]\)\+\)\+[ ][ ][ ][ ][ ][ ][ ]540[ ]000c[ ]0000[ ]0000'
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]3000,[ ]1,[ ]150,[ ]3[ ][}],'
-
-    # Fedora 8ish kernel-xen builds
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5211_ini_mode\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5212_rf511[12]_ini_mode\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_gain_cck_ofdm\[\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]rf_vals_abg_5222\[\][ ]='
-    ;;
-
-  */linux-2.6-netdev-e1000e*.patch)
-    initnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    ;;
-
-  */deblob-check-testsuite/*)
-    accept 'accept[(][^)]*[)]'
-    blobname 'blob[(][^)]*[)]'
-    blobname 'blobeol[^\n]*[\n]'
-    ;;
-  esac
-}
-
-# Regular expression that matches a literal constant.
-constx="[0-9][0-9a-fA-FxX]*"
-# Regular expression that matches a separator between consecutive
-# literal constants.
-sepx="\\([ 	\\n]*\\(\\([ 	\\n]\\|[,:{}LlUu\"\'\\\\][,:{} 	\\nLlUu\"\'\\\\]*\\)[xX\$]\\?\\|[.][a-zA-Z][a-zA-Z0-9]*[ 	][ 	]*[\$]\\?\\)\\)"
-
-# Regular expression that matches a continuation of a blob, after an
-# initial constant.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobcont="\\($sepx$constx\\)"
-
-# Regular expression that matches the initial constant of a blob plus
-# its continuation.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobpat="$constx$blobcont"
-
-# Regular expression that matches a blob with at least the number of
-# constants specified as sensitivity.
-blobseq="$blobpat\\{$sens,\\}"
-
-# Regular expression that matches the beginning of the pattern or a
-# line break.  It must be \(\)ed, such that it can be named in
-# replacement patterns.
-bol="\\(^\\|[\\n]\\)"
-
-# Regular expression that matches the end of the pattern or a line
-# break.  It must be \(\)ed, such that it can be named in replacement
-# patterns.
-eol="\\([\\n]\\|\$\\)"
-
-# Regular expression that matches a C-style comment.
-comment="\\([/][*][^*]*\\([*]\\+[^*/][^*]*\\)*[*]\\+[/]\\|[/][/][^\\n]*[\\n]\\)"
-
-# Regular expression that matches comments typically used in assembly.
-asmcomment="\\($comment\\|[;#][^\\n]*[\\n]\\)"
-
-# Regular expression that matches a braced initializer containing at
-# least one blob.
-initblob="[^\\n=]*=\\([ 	\\n\\\\]\\|$comment\\)*[{]\\([^;]\\|$comment\\)*$blobseq\\([^;]\\|$comment\\)*[}]\\?\\([ 	\\n\\\\]*\\|$comment\\)[;]\\?"
-
-# Regular expression that matches a C (possibly multi-line) #define
-# that contains a blob.
-defineblob='[ 	]*#[ 	]*define[ 	][^\n]*\([\\][\n][^\n]*\)*'"$blobseq"'\([^\n]*\\[\n]\)*'
-
-# Regular expression that matches an assembly label followed by a blob
-# without any intervening label.
-asmblob="[a-zA-Z_.][^\\n:;#/ 	]*:\\([^:{}]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
-
-# Set up the sed script that will go through the (processed) input,
-# looking for sequences of blobs and printing whatever was requested.
-# It accepts 3 arguments.
-
-# $1 is the action in case blobs were found in the input.
-
-# $2 is the action in case no blobs were found, not even false positives.
-
-# $3 is the action in case false positives were located.
-
-# $4 is the action for every complete input pattern.
-
-set_sed_main () {
-  falsepos=`${SED-sed} -n 's,^[+]\^*,,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-  blobs=`${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-
-  # Regular expression that matches one or more blobs without
-  # intervening line breaks.
-  sblobctx="\\(\\([^\\n]\\|[/][*](DEBLOB-\\nBED)[*][/]\\)*$blobs\\)\\+"
-
-  # Regular expression that matches the context for a long blob match.
-  lblobctx="\\($initblob\\|$defineblob\\|$asmblob\\|$sblobctx\\)"
-
-  if test "X$falsepos" != X; then
-    check_false_positives="$v:???falsepos
-/$bol$falsepos/!b blob
-$v:+++falsepos
-h
-s/$bol$falsepos/\\1;\/**\/;/g
-# See if, after removing all matches, we end up without any blobs.
-$v:???blobs
-/$blobs/!{
-  g
-  b falsepos
-}
-g
-"
-  else
-    falsepos="$.^"
-    check_false_positives=
-  fi
-
-  $echo "#! /bin/sed -nf
-
-/^$/N
-/^[\\n]\\?;[/][*]\\(end .*\\)\\?[*][/];$/{
-  $4
-  d
-}
-# /^;[/][*]begin /!{
-#   : internal_error
-#   $v:internal_error
-#   s,.*,Internal error at\\n&[\\n]/*(DEBLOB-\\nERROR)*/,;
-#   q 2
-# }
-$v:reading file in
-h
-n
-: read_more
-/^;[/][*]end [^\\n]*[*][/];$/! {
-  H
-  n
-  b read_more
-}
-H
-g
-$4
-$v:read all
-s/^\\(;[/][*]begin [^\\n]*[\\n]\\)*//
-s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//
-$v:???!blobs
-/$blobs/!b clean
-$check_false_positives
-# Fall through.
-: blob
-$v:blob
-$1
-d
-: clean
-$v:clean
-$2
-d
-: falsepos
-$v:falsepos
-$3
-d
-
-: print_matches
-$v:print_matches
-/^$falsepos/! {
-  $v:delete unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  : print_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_matches_nomatch_loop
-  }
-  x
-  b print_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/ {
-  i\\
-::: $file :::
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_matches
-
-: print_marked_matches
-$v:print_marked_matches
-/^$falsepos/! {
-  h
-  s/[\\n]$falsepos.*//
-  : print_marked_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_matches_nomatch_loop
-  }
-  x
-  b print_marked_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  i\\
-::: $file :::
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_marked_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_matches
-
-: print_blobs
-$v:print_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_blobs_match_loop
-    }
-    G
-    b print_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_blobs_nomatch_loop
-  }
-  x
-  b print_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_blobs
-
-: print_marked_blobs
-$v:print_marked_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_blobs_match_loop
-    }
-    G
-    b print_marked_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^falsepos//
-    b print_marked_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_marked_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_blobs_nomatch_loop
-  }
-  x
-  b print_marked_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_marked_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_blobs
-
-: print_cblobs
-$v:print_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_cblobs_match_loop
-    }
-    G
-    b print_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_cblobs_nomatch_loop
-  }
-  x
-  b print_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_cblobs
-
-: print_marked_cblobs
-$v:print_marked_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_cblobs_match_loop
-    }
-    G
-    b print_marked_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_marked_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_marked_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_cblobs_nomatch_loop
-  }
-  x
-  b print_marked_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_marked_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_cblobs
-
-: print_both
-$v:print_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_both_nomatch_loop
-  }
-  x
-  b print_both_delete_to_eol
-}
-h
-i\\
-::: $file :::
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: print_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_both
-
-: list_matches
-$v:list_matches
-/^$falsepos/! {
-  $v:print unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  p
-  : list_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_matches_nomatch_loop
-  }
-  x
-  b list_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-}
-p
-g
-s/^\\($falsepos[^\\n]*\\)//
-: list_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_matches
-
-: list_blobs
-$v:list_blobs
-/^$falsepos/ {
-  $v:print false positive
-  # This is tricky.  We don't want to deblob the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:print false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1\\n/
-    : list_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      P
-      s/^[^\\n]*[\\n]//
-      x
-      b list_blobs_match_loop
-    }
-    G
-    b list_blobs_delete_to_eol
-  }
-  h
-  s/^\\($falsepos[^\\n]*\\)[\\n].*/\\1/
-  p
-  g
-  s/^\\($falsepos[^\\n]*\\)//
-  b list_blobs_delete_to_eol
-}
-/^[^\\n]*$blobs/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_blobs_nomatch_loop
-  }
-  x
-  b list_blobs_delete_to_eol
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: list_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_blobs
-
-: list_both
-$v:list_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_both_nomatch_loop
-  }
-  x
-  b list_both_delete_to_eol
-}
-h
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: list_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_both
-
-" > "$scriptname"
-
-  scriptcmd='${SED-sed} -n -f "$scriptname"'
-
-  case $vp in
-  [01]) xv= ;;
-  2) xv='# ';;
-  esac
-
-  sedunbreak='
-: restart
-/[/][*](DEBLOB-$/ {
-  N
-  /[/][*](DEBLOB-[\n]ERROR)[*][/]/{q 1;}'"
-$xv"'s,[/][*](DEBLOB-[\n]BED)[*][/],,
-  b restart
-}
-p
-'
-  scriptcmd2='${SED-sed} -n -e "$sedunbreak"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_python_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  cat >> "$scriptname" <<EOF
-#! /usr/bin/python
-
-import sys
-import re
-
-# Should we replace blobs and false positives with replacement?
-replace_blob = 0
-replace_falsepos = 0
-replacement = '/*(DEBLOBBED)*/'
-
-# Should we print lines containing blobs, false positives, and neither?
-print_blob = 0
-with_context = 0
-print_falsepos = 0
-print_nomatch = 0
-
-# Should we print the input stack if we find blobs or false positives?
-list_blob = 0
-list_falsepos = 0
-
-# Should we forget everything we know about false positives?
-falsepos = None
-no_falsepos = 0
-
-verbose = $vp
-
-# Which of the defaults above should we override?
-$@ = 1
-
-EOF
-
-  if test "X$DEBLOB_CHECK_PYTHON_REGEX" = Xdebug; then
-    ${SED-sed} -e 's,^[+-],,' -e "$adjust_rx" \
-	-e "s,.*,re.compile (r'&'),g" \
-	< "$regex_name" >> "$scriptname"
-  fi
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,falsepos = r'(?P<falsepos>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,blob = r'(?P<blob>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,cblob = r'(?P<cblob>\\1)'," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-if no_falsepos or falsepos is None:
-    falsepos = r'(?!)'
-
-rx = '^%s|%s' % (falsepos, blob)
-
-if with_context:
-    rx += '|^' + cblob
-
-rxc = re.compile('(?<=.)(?:%s)' % rx, re.M | re.S)
-
-filenames = None
-
-s = '\n'
-
-for line in sys.stdin:
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if line[:3] == ';/*' and line[-4:] == '*/;\n':
-        if line[3:9] == 'begin ':
-            nextfilenames = (line[9:-4], filenames)
-            if s == '\n':
-                filenames = nextfilenames
-                del nextfilenames
-                continue
-        elif line[3:7] == 'end ':
-	    #if print_blob and not print_nomatch:
-	    # from time import time
-	    # sys.stderr.write('%i %i %s\n' % (time(), len(s), filenames[0]))
-            assert line[7:-4] == filenames[0]
-            nextfilenames = filenames[1]
-        else:
-            assert filenames != None
-            s += line
-            continue
-    else:
-        assert filenames != None
-        s += line
-        continue
-
-    if verbose:
-            print('looking for matches')
-            sfilenames = filenames
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print(filenames[0] + ' within')
-                filenames = filenames[1]
-            filenames = sfilenames
-
-    if s[-1] == '\n':
-        s = s[:-1]
-
-    pp = 1
-    p = pend = 0
-    match = rxc.search (s, p)
-    while match != None:
-        firstmatch = match
-        blobs = falses = 0
-        while 1:
-            if verbose:
-                print('found match')
-            what = match.lastgroup
-
-            if what == 'cblob':
-                if verbose: print('match is a blob context')
-                pend = s.find ('\n', match.end()) + 1
-                if pend == 0:
-                    pend = len(s)
-                p = match.start() + 1
-                blob_p = 2
-            else:
-                blob_p = what == 'blob'
-                assert blob_p or what == 'falsepos'
-
-                if blob_p:
-                    if verbose: print('match is a blob')
-                    blobs += 1
-                else:
-                    if verbose: print('match is a false positive')
-                    falses += 1
-
-                if blob_p and replace_blob or not blob_p and replace_falsepos:
-                    s = s[:match.start(what)] + replacement + s[match.end(what):]
-                    p = match.start(what) + len(replacement)
-                    if pend > match.start(what):
-                        pend += p - match.end(what)
-                else:
-                    p = match.end(what)
-
-                if p > pend:
-                    pend = s.find ('\n', p) + 1
-                    if (pend == 0):
-                        pend = len(s)
-
-            match = rxc.search (s, p)
-            if match is None or match.start () >= pend or \
-	       (blob_p and not print_blob and not falses) or \
-	       (not blob_p and not print_falsepos and not blobs):
-                break
-
-        if print_nomatch:
-            sys.stdout.write (s[pp:firstmatch.start() + 1])
-            pp = firstmatch.start() + 1
-        else:
-            pp = s.rfind ('\n', 0, firstmatch.start () + 1) + 1
-
-        if print_blob and blobs or print_falsepos and falses:
-            if not print_nomatch:
-                sfilenames = filenames
-                while filenames != None:
-                    print('::: ' + filenames[0] + ' :::')
-                    filenames = filenames[1]
-                filenames = sfilenames
-            sys.stdout.write (s[pp:pend])
-            pp = pend
-
-        if list_blob and blobs or list_falsepos and falses:
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print (filenames[0] + ' within')
-                filenames = filenames[1]
-            exit (1)
-
-    if print_nomatch:
-        sys.stdout.write(s[pp:])
-
-    if verbose:
-        print('no further matches')
-
-    s = '\n'
-    filenames = nextfilenames
-    del nextfilenames
-
-assert filenames is None
-
-exit (0)
-EOF
-
-  scriptcmd="${PYTHON-python} "'"$scriptname"'
-}
-
-set_perl_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  # Add $ before arguments
-  set `echo "$@" | sed 's,\(^\|= *\),&$,g'`
-
-  cat >> "$scriptname" <<\EOF
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-# Should we replace blobs and false positives with replacement?
-my $replace_blob = 0;
-my $replace_falsepos = 0;
-my $replacement = '/*(DEBLOBBED)*/';
-
-# Should we print lines containing blobs, false positives, and neither?
-my $print_blob = 0;
-my $with_context = 0;
-my $print_falsepos = 0;
-my $print_nomatch = 0;
-
-# Should we print the input stack and exit if we find blobs or false positives?
-my $list_blob = 0;
-my $list_falsepos = 0;
-
-# Should we forget everything we know about false positives?
-my $falsepos;
-my $no_falsepos = 0;
-
-EOF
-
-  cat >> "$scriptname" <<EOF
-my \$verbose = $vp;
-
-# Which of the defaults above should we override?
-$@ = 1;
-
-EOF
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,\$falsepos = qr'(?<falsepos>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,my \$blob = qr'(?<blob>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,my \$cblob = qr'(?<cblob>\\1)'ms if \$with_context;," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-$falsepos = qr/(?<falsepos>(?!))/ if $no_falsepos || ! defined $falsepos;
-
-my $rx = qr/^$falsepos|$blob/ms;
-
-$rx = qr/$rx|^$cblob/ms if $with_context;
-
-my @filenames;
-my $nfilenames = 0;
-my $nextnfilenames;
-
-my $s = '';
-
-while (<STDIN>) {
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if (m:^[;][/][*](begin|end) (.*)[*][/][;]$:) {
-	if ($1 eq 'begin') {
-	    print "entering $2\n" if $verbose;
-	    $filenames[$nfilenames] = $2;
-	    $nextnfilenames = $nfilenames + 1;
-	    if ($s eq '') {
-		$nfilenames = $nextnfilenames;
-		next;
-	    }
-	} else {
-	    $nextnfilenames = $nfilenames - 1;
-	    print "processing $filenames[$nextnfilenames]\n" if $verbose;
-	}
-    } else {
-	$s .= $_;
-	next;
-    }
-
-    if ($verbose) {
-	print "looking for matches in\n";
-	for (my $i = $nfilenames; --$i > 0; ) {
-	    print $filenames[$i], " within\n";
-	}
-	print $filenames[0], "\n";
-    }
-
-    $s =~ s/[\n]$//;
-
-    my $pp = my $p = 0;
-
-    my $matchfound = substr ($s, $p) =~ /$rx/o;
-    while ($matchfound) {
-	print "found first match\n" if $verbose;
-	my $firstmatchstart = $-[0] + $p;
-	my $blobs = my $falses = 0;
-	my $matchstart = $-[0] + $p;
-	my $pend = -1;
-	my $blob_p;
-	do {{
-	    my $matchend = $+[0] + $p;
-	    print "found match $matchstart..$matchend\n" if $verbose;
-	    print "$&" if $verbose > 1;
-
-	    if (defined $+{'cblob'}) {
-		print "match is a blob context\n" if ($verbose);
-		$pend = index ($s, "\n", $matchend) + 1;
-		$pend = length $s if !$pend;
-	    }
-
-	    if (defined $+{'falsepos'}) {
-		print "match is a false positive\n" if ($verbose);
-		# $matchend -= $+[0] - $+[1];
-		$blob_p = 0;
-		$falses++;
-	    } elsif (defined $+{'blob'}) {
-		$blob_p = 1;
-		$blobs++;
-		print "match is a blob at $matchstart\n" if ($verbose);
-	    } else {
-		$blob_p = 2;
-		$p = $matchstart;
-		print "searching up to $pend\n" if $verbose;
-		next;
-	    }
-
-	    if ($blob_p ? $replace_blob : $replace_falsepos) {
-		substr ($s, $matchstart, $matchend - $matchstart,
-			$replacement);
-		$p = $matchstart + length $replacement;
-		$pend += $p - $matchend if $pend >= $matchstart;
-	    } else {
-		$p = $matchend;
-	    }
-
-	    $pend = index ($s, "\n", $p) + 1 if $p >= $pend;
-	    $pend = length $s if !$pend;
-	    print "searching up to $pend\n" if $verbose;
-	    $p--;
-	}} while (($matchfound = (substr ($s, $p) =~ /(?<=.)$rx/mso))
-		  && ($matchstart = $-[0] + $p) < $pend
-		  && !($blob_p
-		       ? (!$print_blob && !$falses)
-		       : (!$print_falsepos && !$blobs)));
-
-	print "last match before $pend\n" if $verbose;
-
-	if ($print_nomatch) {
-	    print substr ($s, $pp, $firstmatchstart - $pp);
-	    $pp = $firstmatchstart;
-	} elsif (($print_blob || $print_falsepos) && $firstmatchstart > 0) {
-	    $pp = rindex ($s, "\n", $firstmatchstart - 1) + 1;
-	}
-
-	if (($print_blob && $blobs) || ($print_falsepos && $falses)) {
-	    if (!$print_nomatch) {
-		for (my $i = $nfilenames; $i-- > 0;) {
-		    print "::: ", $filenames[$i], " :::\n";
-		}
-	    }
-
-	    print substr ($s, $pp, $pend - $pp);
-	    $pp = $pend;
-	}
-
-	if (($list_blob && $blobs) || ($list_falsepos && $falses)) {
-	    for (my $i = $nfilenames; --$i > 0;) {
-		print $filenames[$i], " within ";
-	    }
-	    print $filenames[0], "\n";
-	    exit (1);
-	}
-    }
-
-    print substr ($s, $pp) if $print_nomatch;
-
-    print "no further matches\n" if $verbose;
-
-    $s = '';
-    $nfilenames = $nextnfilenames;
-}
-
-exit (0);
-EOF
-
-  scriptcmd="${PERL-perl} "'"$scriptname"'
-}
-
-set_awk_main () {
-  adjust_rx='
-s,[$]$,([\\n]|$),;
-s,\[^\],[^\\],g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  case " = $@ = " in
-  *" = no_falsepos = "*) falsepos='$.^';;
-  *) falsepos=`
-    ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'
-    `
-     case $falsepos in "") falsepos='$.^';; esac;;
-  esac
-
-  blob=`
-    ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'`
-
-  case " = $@ = " in
-  *" = with_context = "*) cblob=`
-    $echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx"
-   `;;
-  *) cblob='$.^';;
-  esac
-
-  xrs= nrs="# " eor="RT" eormatch='RT ~ ' eornl='[\n]' eornlsz=1
-  # Uncomment the line below to disable the use of a regular
-  # expression for the awk Record Separator, a GNU awk extension.
-  # Using this extension appears to save a lot of memory for long
-  # deblob-check runs.
-  # xrs="# " nrs= eor='$0' eormatch='' eornl= eornlsz=0
-
-  cat >> "$scriptname" <<EOF
-#! /bin/gawk --re-interval -f
-
-BEGIN {
-    # Should we replace blobs and false positives with replacement?
-    replace_blob = 0;
-    replace_falsepos = 0;
-    replacement = "/*(DEBLOBBED)*/";
-
-    # Should we print lines containing blobs, false positives, and neither?
-    print_blob = 0;
-    with_context = 0;
-    print_falsepos = 0;
-    print_nomatch = 0;
-
-    # Should we print the input stack and exit if we find blobs or
-    # false positives?
-    list_blob = 0;
-    list_falsepos = 0;
-
-    # Should we forget everything we know about false positives?
-    no_falsepos = 0;
-
-    verbose = $vp;
-
-    nfilenames = 0;
-    s = "\n";
-
-    # Which of the defaults above should we override?
-    $@ = 1;
-
-    # requires GNU awk RS extension:
-$xrs	RS = "[;][/][*](begin|end) [^\n]*[*][/][;][\n]";
-}
-# requires GNU awk RS extension:
-$xrs { s = s \$0; }
-# does not require GNU awk RS extension:
-$nrs !/^[;][/][*].*[*][/][;]$/ {
-$nrs	 s = s \$0 "\n";
-$nrs	 next;
-$nrs }
-$eormatch /^[;][/][*]begin .*[*][/][;]$eornl$/ {
-    filenames[nfilenames] = substr($eor, 10, length ($eor) - 12 - $eornlsz);
-    if (verbose) print "entering " nfilenames ": " filenames[nfilenames];
-    nextnfilenames = nfilenames + 1;
-    if (s == "\n") {
-	nfilenames = nextnfilenames;
-	next;
-    }
-}
-$eormatch /^[;][/][*]end .*[*][/][;]$eornl$/ {
-    nextnfilenames = nfilenames - 1;
-    if (verbose)
-	print "got to the end of " nextnfilenames ": " filenames[nextnfilenames];
-}
-{
-    if (verbose) {
-	print "looking for matches";
-	for (i = nfilenames; --i > 0;)
-	    print filenames[i] " within";
-	print filenames[0]
-    }
-
-    s = substr (s, 1, length (s) - 1)
-
-    pp = 2;
-    p = pend = 1;
-    if (verbose > 1) print "searching starting at", substr (s, p, 10)
-    matchfound = match (substr (s, p),
-			/[\n]($falsepos)|[\n]($cblob)|.($blob)/);
-    while (matchfound) {
-	blobs = falses = 0;
-	firstmatchstart = RSTART + p;
-	for (;;) {
-	    matchstart = RSTART + p - 1;
-	    matchlen = RLENGTH;
-	    if (verbose) {
-		print "found match", matchstart, matchlen;
-		if (verbose > 1)
-		    print substr (s, matchstart + 1, matchlen - 1);
-	    }
-
-	    if (match (substr (s, matchstart, matchlen), /^[\n]($falsepos)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a false positive of length", matchlen;
-		blob_p = 0;
-		falses++;
-	    } else if (match (substr (s, matchstart, matchlen), /^.($blob)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a blob of length", matchlen;
-		blob_p = 1;
-		blobs++;
-	    } else if (match (substr (s, matchstart, matchlen), /^[\n]($cblob)$/) == 1) {
-		if (verbose) print "match is a blob context";
-		pend = index (substr (s, matchstart + matchlen), "\n");
-		if (pend)
-		    pend += matchstart + matchlen;
-		else
-		    pend = length (s);
-		p = matchstart + 1;
-		blob_p = 2;
-		if (verbose > 1) print "range is:", substr (s, p, pend - p);
-	    }
-
-	    if (blob_p < 2) {
-		if (blob_p ? replace_blob : replace_falsepos) {
-		    s = substr (s, 1, matchstart)		\\
-			replacement				\\
-			substr (s, matchstart + matchlen);
-		    p = matchstart + length (replacement) - 1;
-		    pend += (p + 1 - matchstart - matchlen);
-		} else
-		    p = matchstart + matchlen - 1;
-
-		if (p >= pend) {
-		    i = index (substr (s, p + 1), "\n");
-		    if (i)
-			pend = p + 1 + i;
-		    else
-			pend = length (s)
-		}
-	    }
-
-	    if (verbose) print "search until", pend;
-
-	    if (!(matchfound = match (substr (s, p),
-				      /[\n]($falsepos)|[\n]($cblob)|.($blob)/)) ||
-		p + RSTART >= pend ||
-		(blob_p ?
-		 (!print_blob && !falses) :
-		 (!print_falsepos && !blobs)))
-		break;
-	}
-
-	if (print_nomatch)
-	    printf "%s", substr (s, pp, firstmatchstart - pp);
-	else if (print_blob || print_falsepos) {
-	    lastline = substr (s, pp, firstmatchstart - pp);
-	    sub (/.*[\n]/, "", lastline);
-	    if (verbose) print "lastline: " lastline "\\\\n"
-	    firstmatchstart -= length (lastline);
-	}
-	pp = firstmatchstart;
-
-	if (verbose) print "match set range:", pp, pend
-
-	if ((print_blob && blobs) || (print_falsepos && falses)) {
-	    if (!print_nomatch)
-		for (i = nfilenames; i-- > 0;)
-		    print "::: " filenames[i] " :::";
-	    printf "%s", substr (s, pp, pend - pp);
-	    pp = pend;
-	}
-
-	if ((list_blob && blobs) || (list_falsepos && falses)) {
-	    for (i = nfilenames; --i > 0;)
-		print filenames[i] " within";
-	    print filenames[0];
-	    exit (1);
-	}
-    }
-
-    if (print_nomatch)
-	printf "%s", substr (s, pp)
-
-    if (verbose)
-	print "no further matches";
-
-    s = "\n";
-    nfilenames = nextnfilenames;
-    next;
-}
-EOF
-
-  scriptcmd="${AWK-gawk} --re-interval -f "'"$scriptname"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_save_script_input_main () {
-  savename=`mktemp -t deblob-check-input-XXXXXX`
-  scriptcmd="{ echo saving input in $savename && cat > $savename && echo done; }"
-}
-
-# Process an input file named in $1 and run it through the blob
-# recognizer.  Functions set_except and set_sed_cmd provide additional
-# arguments on a per-file and per-action basis.
-
-check () {
-  case "$#" in 1) ;; *) echo ICE >&2; exit 1;; esac
-
-  input=$1
-
-  # Add $1 to falsepos.  Its usage makes it implicitly anchored to the
-  # beginning of the line.  $2, if present, will some day narrow the
-  # falsepos matches to files that match it.
-  addx () {
-    $echo "+^$1" >> $regex_name
-  }
-
-  # Add $1 to falseneg.  Unlike addx, it is NOT implicitly anchored to
-  # the beginning of the line.  $2, if present, will some day narrow
-  # the falseneg matches to files that match it.
-  badx () {
-    $echo "-$1" >> $regex_name
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';'.  $2 may optionally name the files in which this
-  # match is to be disregarded as a potential blob.
-  initnc () {
-    addx "$1[^;]*[;]\\?" $2
-  }
-
-  # Same as initnc, but require the terminating semicolon.
-  defsnc () {
-    addx "$1[^;]*[;]" $2
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';' that's not within comments.
-  initc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]\\?" $2
-  }
-
-  # Same as initc, but require the terminating semicolon.
-  defsc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]" $2
-  }
-
-  # Accept as a non-blob an expression $1 that would have otherwise
-  # triggered blob detection.  The expression must end in a way that
-  # would trigger the blob detection machinery.
-  accept () {
-    addx "$1" $2
-  }
-
-  # Match up to the end a comment started in $1.
-  ocomment () {
-    addx "$1[/]*\\([*]*[^*/][/]*\\)*[*]\+[/]" $2
-  }
-
-  # Match $1 followed by backslash-terminated lines and a last
-  # non-backslash-terminated line.
-  oprepline () {
-    addx "$1\\([^\\\\\\n]*[\\\\][\\n]\\)*[^\\\\\\n]*$" $2
-  }
-
-  # Match $1 in $2 as a blob.  Not anchored.
-  blobna () {
-    badx "$1" $2
-  }
-
-  # Match $1 as a blob anywhere.  $2 is just for documentation purposes.
-  blobname () {
-    badx "$1"
-  }
-
-  # Match $1 in $2 as a blob.  The expectation is a match in the
-  # beginning of line, but we don't do anchoring of blob patterns ATM.
-  blob () {
-    badx "$1" $2
-  }
-
-  regex_name=`mktemp -t deblob-check-regex-XXXXXX`
-  tempfiles="$regex_name"
-
-  set_except "$input"
-
-  # Check that all regular expressions match our requirements.
-  ${SED-sed} -n '
-s,^\(-\^\?\|[+]\^\),,
-h
-s,[$]$,,
-s,\([^\\]\|^\)\(\(\\\\\)*\)\(\[^\?[]]\?[^]]\+\]\([*]\|\\[+?]\)\?\(\\\\\)*\)\+,\1\2,g
-/\([^\\]\|^\)\(\\\\\)*\([{(|)}?+^$"'"'"'; 	]\)\|^$/{
-  g
-  i\
-BAD regular expression:
-  p
-  q 1
-}' $regex_name >&2 || exit 1
-
-  scriptname=`mktemp -t deblob-check-script-XXXXXX`
-  tempfiles="$tempfiles $scriptname"
-
-  scriptcmd=false
-  scriptcmd2=
-
-  $set_cmd "$input"
-
-  for f in $tempfiles; do
-    case $f in "$scriptname") ;;
-    *) rm -f "$f" ;;
-    esac
-  done
-  tempfiles="$scriptname"
-
-  # Choose the input source...
-  case $input in
-  -) in= ;;
-  *) in='< "$input"' ;;
-  esac
-
-  set fnord # shifted out below
-
-  # Decompress as needed...
-  case $input in
-  *.bz2) cmd='bunzip2' ;;
-  *.xz) cmd='unxz' ;;
-  *.lz) cmd='lzip -d' ;;
-  *.gz | *.tgz) cmd='gunzip' ;;
-  *) cmd= ;;
-  esac
-  if test -n "$cmd"; then
-    set "$@" "$cmd"
-  fi
-
-  # Extract or otherwise munge...
-  case /$input in
-  *.tar*)
-    tarwrap=`mktemp -t deblob-check-tarwrap-XXXXXX`
-    tempfiles="$tempfiles $tarwrap"
-    
-    cat >> $tarwrap <<EOF
-#! /bin/sh
-echo='$echo' &&
-\$echo ";/*begin \$1*/;" &&
-cat &&
-echo &&
-\$echo ";/*end \$1*/;"
-EOF
-    chmod +x $tarwrap
-    cmd="tar -xf - --to-command='$tarwrap \"\$TAR_FILENAME\"'"
-    ;;
-  *.patch | *.patch.*z* | */patch-* | *.diff | *.diff.*z*)
-    if $reverse_patch; then
-      s=- r=+
-    else
-      s=+ r=-
-    fi
-    sedpatch="
-      /^[$r]/b testlastline;
-      # /^[*!]/ {
-      # 	s,^,context diffs are not properly supported\\n,;
-      # 	W /dev/stderr
-      # 	d;
-      # }
-      /^\\(@@ \\|$s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^\\($s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^$s$s$s / {
-	H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	s,^$s$s$s \\(.*\\)$,;/*begin \\1*/;,;
-	p;
-	d;
-      }
-      /^@@ / {
-        H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	# A number of patterns for patches depend on the ;/*@@ lines for
-	# context.
-	s,^.*$,;/*begin &*/;\\n;/*&*/;,;
-	p;
-	d;
-      }
-      s,^[ !$s],,
-      p;
-      :testlastline
-      $ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      d;"
-    cmd='${SED-sed} "$sedpatch"'
-    ;;
-  *)
-    cmd='cat'
-    ;;
-  esac
-  cmd="{ echo \";/*begin $input*/;\"; $cmd; echo; echo \";/*end $input*/;\"; }"
-  set "$@" "$cmd"
-
-  case $input in
-  *.tar*)
-    cmd="{ cat; cat > /dev/null; }"
-    set "$@" "$cmd"
-    ;;
-  esac
-
-  # Then run through the selected action.
-  set "$@" "$scriptcmd"
-
-  case $scriptcmd2 in "" | cat) ;;
-  *) set "$@" "$scriptcmd2"
-  esac
-
-  # test $# = 1 || set "$@" "cat"
-
-  shift # fnord goes out here
-
-  pipe=
-  for cmd
-  do
-    if test -z "$pipe"; then
-      pipe="$cmd $in"
-    else
-      pipe="$pipe | $cmd"
-    fi
-  done
-
-  eval "$pipe"
-  status=$?
-
-  $rm $tempfiles
-  tempfiles=
-
-  (exit $status)
-}
-
-# If no input given, use stdin.
-case $# in
-0)
-  test -t 0 && echo reading from standard input >&2
-  set fnord -
-  shift
-  ;;
-esac
-
-# The lines below commented out out #list: can be used to get a list
-# of matching inputs.  ATM this is useless, so we just use a shell
-# boolean.
-
-#list: n=$#
-pass=:
-
-tempfiles=
-trap "status=$?; test -z \"$tempfiles\" || rm -f $tempfiles; (exit $status); exit" 0 1 2 15
-
-process_arg=
-
-# Go through each of the input files in the command line.
-for file
-do
-  case $process_arg in
-  "") ;;
-  --implied-prefix | --prefix | -i)
-    prefix=$file
-    case $prefix in
-    /*/) ;;
-    */) prefix=/$prefix ;;
-    /*) prefix=$prefix/ ;;
-    *) prefix=/$prefix/ ;;
-    esac
-    process_arg=
-    continue
-    ;;
-  *)
-    echo Internal error with process_arg=$process_arg >&2
-    exit 1
-    ;;
-  esac
-
-  case $sawdashdash$file in
-  --implied-prefix | --prefix | -i)
-    process_arg=$file
-    continue
-    ;;
-  esac
-
-  # If we print anything whatsoever (even a blank line) while
-  # processing it, we've failed.
-  if check "$file"; then
-    :
-  else
-    pass=false
-    #list: set fnord "$@" "$file"
-    #list: shift
-  fi
-done
-
-case $process_arg in
-"") ;;
-*)
-  echo Missing argument to $process_arg >&2
-  exit 1
-  ;;
-esac
-
-#list: shift $n
-
-#list: exec test $# = 0
-$pass
-exit
diff --git a/helpers/DATA/linux-lts-utopic/deblob-main b/helpers/DATA/linux-lts-utopic/deblob-main
deleted file mode 100644
index 3a85cdc96..000000000
--- a/helpers/DATA/linux-lts-utopic/deblob-main
+++ /dev/null
@@ -1,319 +0,0 @@
-#! /bin/sh
-
-# Copyright (C) 2008-2012 Alexandre Oliva <lxoliva@fsfla.org>
-
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-# deblob-main - prepare a GNU Linux-libre tarball out of a non-libre
-# Linux tarball.  It expects the Linux release (mver, say 3.0) as the
-# first argument, the gnu sub-release (extra) as the second optional
-# argument, and the patch release (sver, say .13) as an optional third
-# argument.  mver and sver are pasted together to form kver.
-
-# linux-$kver.tar.bz2 and deblob-$mver must exist in the current
-# directory, and the line that sets kver and extra in deblob-$mver
-# must match mver and extra.
-
-# The resulting tarball is put in linux-libre-$kver-gnu$extra.tar.bz2.
-# An uncompressed xdelta that produces linux-libre-$kver-gnu$extra.tar
-# out of linux-$kver.tar is put in linux-libre-$kver-gnu$extra.xdelta.
-# This xdelta can be distributed to enable third parties to easily
-# reconstruct the binary tarball starting out of sources downloaded
-# from kernel.org, but without distributing non-Free Software
-# yourself, because xdelta (unlike patches) is not reversible: the
-# removed bits are not present in it at all.
-
-# xdelta version 3 uses different command line syntax, and it switched
-# to the more standardized but less efficient vcdiff file format.
-# This script will also produce a vcdiff file if xdelta3 is present,
-# and it expects the xdelta program to use the version 1 syntax.
-
-# To enable you to check the differences between the tarballs, a patch
-# file is generated in linux-libre-$kver-gnu$extra.patch.  This patch
-# file contains the non-Free blobs, even though in reversed form, so
-# its distribution is discouraged.
-
-# The tar files and binary deltas are finally compressed with bzip2,
-# and optionally with lzip and xz too, if the compressors are
-# available.
-
-# At the end, the script attempts to generate a digital signature for
-# the newly-created tarball.  This is the last thing the script does,
-# so interrupting it at that point to skip the signing won't fail to
-# do anything else.
-
-# It is safe to interrupt the script at any other point.  When it gets
-# a ^C (other than during signing), it starts cleaning up all of its
-# temporary and output files.  If you insist, it may leave junk
-# behind, and then it will refuse to run again before you clean it up
-# by hand.  It takes extra care to avoid overwriting useful files.
-
-# If deblob-$mver finds any unexpected situation, it will error out,
-# and then deblob-main will quit.  Pass --force to deblob-main, before
-# any other argument, for deblob-main to ignore any such situations.
-
-case $1 in
---force) force=--force; shift;;
-*) force=;;
-esac
-
-# We don't want e.g. diff output translations to affect us.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-mver=$1 extra=$2 sver=$3
-kver=$mver$sver gnu=gnu$extra
-deblob= dir=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`
-
-if test -f linux-$kver.tar; then
-  zext=tar     zcmd=
-elif test -f linux-$kver.tar.bz2; then
-  zext=tar.bz2 zcmd=bunzip2
-elif test -f linux-$kver.tar.xz; then
-  zext=tar.xz  zcmd=unxz
-elif test -f linux-$kver.tar.lz; then
-  zext=tar.lz  zcmd="lzip -d"
-elif test -f linux-$kver.tar.gz; then
-  zext=tar.gz  zcmd=gunzip
-elif test -f linux-$kver.tgz; then
-  zext=tgz     zcmd=gunzip
-else
-  echo linux-$kver.tar not found, tried .bz2, .xz, .lz, .gz and .tgz too >&2
-  exit 1
-fi
-
-if test -f deblob-$mver; then
-  deblob=deblob-$mver
-elif test -f deblob; then
-  deblob=deblob
-elif test -f $dir/deblob-$mver; then
-  cp $dir/deblob-$mver deblob
-  deblob=deblob
-else
-  echo deblob does not exist >&2
-  exit 1
-fi
-
-x1="kver=$mver extra=$extra"
-x2=`grep "^kver=[^ ]* extra=" $deblob`
-if test "$x1" = "$x2"; then
-  :
-else
-  echo deblob script does not match command-line arguments >&2
-  echo expected: $x1 >&2
-  echo found   : $x2 >&2
-  exit 1
-fi
-
-cleanup=
-
-for f in \
-  linux-libre-$kver-$gnu.tar.bz2 \
-  linux-libre-$kver-$gnu.tar.bz2.asc \
-  linux-libre-$kver-$gnu.tar.bz2.sign \
-  linux-libre-$kver-$gnu.tar.xz \
-  linux-libre-$kver-$gnu.tar.xz.asc \
-  linux-libre-$kver-$gnu.tar.xz.sign \
-  linux-libre-$kver-$gnu.tar.lz \
-  linux-libre-$kver-$gnu.tar.lz.asc \
-  linux-libre-$kver-$gnu.tar.lz.sign \
-  linux-libre-$kver-$gnu.tar \
-  linux-libre-$kver-$gnu.tar.asc \
-  linux-libre-$kver-$gnu.tar.sign \
-  linux-libre-$kver-$gnu.patch \
-  linux-libre-$kver-$gnu.log \
-  linux-libre-$kver-$gnu.vcdiff \
-  linux-libre-$kver-$gnu.vcdiff.bz2 \
-  linux-libre-$kver-$gnu.vcdiff.bz2.asc \
-  linux-libre-$kver-$gnu.vcdiff.bz2.sign \
-  linux-libre-$kver-$gnu.vcdiff.xz \
-  linux-libre-$kver-$gnu.vcdiff.xz.asc \
-  linux-libre-$kver-$gnu.vcdiff.xz.sign \
-  linux-libre-$kver-$gnu.vcdiff.lz \
-  linux-libre-$kver-$gnu.vcdiff.lz.asc \
-  linux-libre-$kver-$gnu.vcdiff.lz.sign \
-  linux-libre-$kver-$gnu.xdelta \
-  linux-libre-$kver-$gnu.xdelta.bz2 \
-  linux-libre-$kver-$gnu.xdelta.bz2.asc \
-  linux-libre-$kver-$gnu.xdelta.bz2.sign \
-  linux-libre-$kver-$gnu.xdelta.xz \
-  linux-libre-$kver-$gnu.xdelta.xz.asc \
-  linux-libre-$kver-$gnu.xdelta.xz.sign \
-  linux-libre-$kver-$gnu.xdelta.lz \
-  linux-libre-$kver-$gnu.xdelta.lz.asc \
-  linux-libre-$kver-$gnu.xdelta.lz.sign \
-; do
-  if test -f $f; then
-    echo $f already exists >&2
-    exit 1
-  fi
-  cleanup="$cleanup $f"
-done
-
-for d in \
-  linux-$kver \
-  linux-libre-$kver-$gnu \
-  orig-linux-$kver \
-; do
-  if test -d $d; then
-    echo $d already exists >&2
-    exit 1
-  fi
-  cleanup="$cleanup $d"
-done
-
-if test -f $dir/deblob-$kver; then
-  if cmp $dir/deblob-$kver $deblob; then
-    :
-  else
-    echo $dir/deblob-$kver and $deblob are different >&2
-    exit 1
-  fi
-fi
-
-if test ! -f deblob-check; then
-  if test -f $dir/deblob-check; then
-    cp $dir/deblob-check deblob-check
-  fi
-else
-  if test -f $dir/deblob-check; then
-    if cmp $dir/deblob-check deblob-check; then
-      :
-    else
-      echo $dir/deblob-check and deblob-check are different >&2
-      exit 1
-    fi
-  fi
-fi
-
-trap 'status=$?; echo cleaning up...; rm -rf $cleanup; (exit $status); exit' 0 1 2 15
-
-set -e
-
-if test -n "$zcmd"; then
-  echo Uncompressing linux-$kver.$zext into linux-$kver.tar
-  rm -rf linux-$kver.tar
-  cleanup="$cleanup linux-$kver.tar"
-  $zcmd < linux-$kver.$zext > linux-$kver.tar
-fi
-
-echo Extracting linux-$kver.tar into linux-$kver
-rm -rf linux-$kver
-tar -xf linux-$kver.tar
-rm -rf linux-libre-$kver-$gnu linux-libre-$kver-$gnu.tar
-
-echo Copying linux-$kver to linux-libre-$kver-$gnu
-cp linux-$kver.tar linux-libre-$kver-$gnu.tar
-cp -lR linux-$kver/. linux-libre-$kver-$gnu
-
-rm -f linux-libre-$kver-$gnu.log linux-libre-$kver-$gnu.log.tmp
-echo Deblobbing within linux-libre-$kver-$gnu, saving output to linux-libre-$kver-$gnu.log
-# We can't just pipe deblob into tee, for then we fail to detect
-# error conditions.  Use file renaming to tell whether we succeeded.
-if (cd linux-libre-$kver-$gnu && /bin/sh ../$deblob $force) 2>&1; then
-  mv linux-libre-$kver-$gnu.log.tmp linux-libre-$kver-$gnu.log
-fi | tee linux-libre-$kver-$gnu.log.tmp
-if test ! -f linux-libre-$kver-$gnu.log; then
-  mv linux-libre-$kver-$gnu.log.tmp linux-libre-$kver-$gnu.log
-  echo $deblob failed, aborting >&2
-  exit 1
-fi
-rm -f linux-libre-$kver-$gnu.patch
-
-# Do not copy these scripts for now, deblob-check regards itself as a blob.
-# cp -p $0 $deblob deblob-check linux-libre-$kver-$gnu
-
-echo Generating linux-libre-$kver-$gnu.patch
-diff -druN linux-$kver linux-libre-$kver-$gnu > linux-libre-$kver-$gnu.patch || :
-
-echo Removing removed or modified files from linux-libre-$kver-$gnu.tar
-diff -rq linux-$kver linux-libre-$kver-$gnu |
-sed -n "
-  s,^Only in \\(linux-$kver\\(/.*\\)\\?\\): \\(.*\\),\1/\3,p;
-  s,^Files \\(linux-$kver\\)/\\(.*\\) and linux-libre-$kver-$gnu/\\2 differ,\\1/\\2,p;
-" |
-xargs tar --delete -f linux-libre-$kver-$gnu.tar
-
-echo Adding modified or added files to linux-libre-$kver-$gnu.tar
-rm -rf orig-linux-$kver
-mv linux-$kver orig-linux-$kver
-mv linux-libre-$kver-$gnu linux-$kver
-diff -rq orig-linux-$kver linux-$kver |
-sed -n "
-  s,^Files orig-\\(linux-$kver/.*\\) and \\1 differ,\\1,p;
-  s,^Only in \\(linux-$kver\\(/.*\\)\\?\\): \\(.*\\),\\1/\\3,p;
-" |
-xargs tar --append -f linux-libre-$kver-$gnu.tar
-
-echo Wiping out extracted trees
-rm -rf linux-$kver orig-linux-$kver
-
-echo Creating vcdiff between linux-$kver.tar and linux-libre-$kver-$gnu.tar
-xdelta3 -e -9 -S djw -s linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.vcdiff || : # don't fail if xdelta3 is not present
-
-echo Creating xdelta between linux-$kver.tar and linux-libre-$kver-$gnu.tar
-xdelta delta -0 linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta || : # xdelta returns nonzero on success
-
-cleanup="linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.vcdiff linux-libre-$kver-$gnu.xdelta"
-
-echo Compressing binary deltas and linux-libre-$kver-$gnu.tar
-rm -f linux-$kver.tar
-if test -f linux-libre-$kver-$gnu.vcdiff; then
-  bzip2 -k9 linux-libre-$kver-$gnu.vcdiff
-  xz -k9 linux-libre-$kver-$gnu.vcdiff || :
-  lzip -k9 linux-libre-$kver-$gnu.vcdiff || :
-fi
-if test -f linux-libre-$kver-$gnu.xdelta; then
-  bzip2 -k9 linux-libre-$kver-$gnu.xdelta
-  xz -k9 linux-libre-$kver-$gnu.xdelta || :
-  lzip -k9 linux-libre-$kver-$gnu.xdelta || :
-fi
-bzip2 -k9 linux-libre-$kver-$gnu.tar
-xz -k9 linux-libre-$kver-$gnu.tar || :
-lzip -k9 linux-libre-$kver-$gnu.tar || :
-
-echo Done except for signing, feel free to interrupt
-for f in \
-  linux-libre-$kver-$gnu.tar \
-  linux-libre-$kver-$gnu.tar.bz2 \
-  linux-libre-$kver-$gnu.tar.xz \
-  linux-libre-$kver-$gnu.tar.lz \
-  linux-libre-$kver-$gnu.vcdiff \
-  linux-libre-$kver-$gnu.vcdiff.bz2 \
-  linux-libre-$kver-$gnu.vcdiff.xz \
-  linux-libre-$kver-$gnu.vcdiff.lz \
-  linux-libre-$kver-$gnu.xdelta \
-  linux-libre-$kver-$gnu.xdelta.bz2 \
-  linux-libre-$kver-$gnu.xdelta.xz \
-  linux-libre-$kver-$gnu.xdelta.lz \
-; do
-  if test -f $f; then
-    gpg -a --detach-sign $f
-    mv $f.asc $f.sign
-  fi
-done
-
-rm -f $cleanup
-cleanup=
-trap 'status=$?; (exit $status); exit' 0 1 2 15
-
-echo All set, please review linux-libre-$kver-$gnu.patch
-
-exit 0
diff --git a/helpers/DATA/linux-lts-utopic/firmware/.gitignore b/helpers/DATA/linux-lts-utopic/firmware/.gitignore
deleted file mode 100644
index d9c69017b..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.gen.S
-*.fw
-*.bin
-*.csp
-*.dsp
-ihex2fw
diff --git a/helpers/DATA/linux-lts-utopic/firmware/Makefile b/helpers/DATA/linux-lts-utopic/firmware/Makefile
deleted file mode 100644
index f3d9a7b6e..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/Makefile
+++ /dev/null
@@ -1,251 +0,0 @@
-#
-# kbuild file for firmware/
-#
-
-# Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
-# leading /, it's relative to $(srctree).
-fwdir := $(subst ",,$(CONFIG_EXTRA_FIRMWARE_DIR))
-fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
-
-fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
-
-# There are three cases to care about:
-# 1. Building kernel with CONFIG_FIRMWARE_IN_KERNEL=y -- $(fw-shipped-y) should
-#    include the firmware files to include, according to .config
-# 2. 'make modules_install', which will install firmware for modules, and 
-#    _also_ for the in-kernel drivers when CONFIG_FIRMWARE_IN_KERNEL=n
-# 3. 'make firmware_install', which installs all firmware, unconditionally.
-
-# For the former two cases we want $(fw-shipped-y) and $(fw-shipped-m) to be
-# accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
-# But be aware that the config file might not be included at all.
-
-ifdef CONFIG_ACENIC_OMIT_TIGON_I
-acenic-objs := $(DEBLOBBED)
-fw-shipped- += $(DEBLOBBED)
-else
-acenic-objs := $(DEBLOBBED) $(DEBLOBBED)
-endif
-fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
-fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += $(DEBLOBBED) \
-					 $(DEBLOBBED)
-fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
-fw-shipped-$(CONFIG_ATM_AMBASSADOR) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_BNX2X) += $(DEBLOBBED) \
-			      $(DEBLOBBED) \
-			      $(DEBLOBBED)
-fw-shipped-$(CONFIG_BNX2) += $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED)
-fw-shipped-$(CONFIG_CASSINI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_CHELSIO_T3) += $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_MGA) += $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_R128) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_RADEON) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
-fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_E100) += $(DEBLOBBED) $(DEBLOBBED) \
-			     $(DEBLOBBED)
-fw-shipped-$(CONFIG_MYRI_SBUS) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_PCNET) += $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_3C589) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_3C574) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SERIAL_8250_CS) += $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_ADVANSYS) += $(DEBLOBBED) $(DEBLOBBED) \
-				      $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += $(DEBLOBBED) $(DEBLOBBED) \
-					 $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_INFINIBAND_QIB) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_KORG1212) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_MAESTRO3) += $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_SB16_CSP) += $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) \
-				     $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_YMFPCI) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_WAVEFRONT) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_TEHUTI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_TIGON3) += $(DEBLOBBED) $(DEBLOBBED) \
-			       $(DEBLOBBED)
-fw-shipped-$(CONFIG_TYPHOON) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_EMI26) += $(DEBLOBBED) $(DEBLOBBED) \
-				  $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_EMI62) += $(DEBLOBBED) $(DEBLOBBED) \
-				  $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_KAWETH) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED)
-ifdef CONFIG_FIRMWARE_IN_KERNEL
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += $(DEBLOBBED)
-else
-fw-shipped- += $(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)	\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)		\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)		\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)
-endif
-fw-shipped-$(CONFIG_USB_SERIAL_TI) += $(DEBLOBBED) $(DEBLOBBED) \
-				      $(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += $(DEBLOBBED) $(DEBLOBBED) \
-					    $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += $(DEBLOBBED) $(DEBLOBBED) \
-					   # $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
-fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
-fw-shipped-$(CONFIG_USB_VICAM) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_VIDEO_CPIA2) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_YAM) += $(DEBLOBBED) $(DEBLOBBED)
-
-fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
-
-# Directories which we _might_ need to create, so we have a rule for them.
-firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
-
-quiet_cmd_mkdir = MKDIR   $(patsubst $(objtree)/%,%,$@)
-      cmd_mkdir = mkdir -p $@
-
-quiet_cmd_ihex  = IHEX    $@
-      cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
-
-quiet_cmd_ihex2fw  = IHEX2FW $@
-      cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
-
-quiet_cmd_h16tofw  = H16TOFW $@
-      cmd_h16tofw  = $(objtree)/$(obj)/ihex2fw -w $< $@
-
-quiet_cmd_fwbin = MK_FW   $@
-      cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)";		     \
-		  FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst	     \
-				firmware/%.gen.S,%,$@))))";		     \
-		  ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long);		     \
-		  ASM_ALIGN=$(if $(CONFIG_64BIT),3,2);			     \
-		  PROGBITS=$(if $(CONFIG_ARM),%,@)progbits;		     \
-		  echo "/* Generated by firmware/Makefile */"		> $@;\
-		  echo "    .section .rodata"				>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "_fw_$${FWSTR}_bin:"				>>$@;\
-		  echo "    .incbin \"$(2)\""				>>$@;\
-		  echo "_fw_end:"					>>$@;\
-		  echo "   .section .rodata.str,\"aMS\",$${PROGBITS},1"	>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "_fw_$${FWSTR}_name:"				>>$@;\
-		  echo "    .string \"$$FWNAME\""			>>$@;\
-		  echo "    .section .builtin_fw,\"a\",$${PROGBITS}"	>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "    $${ASM_WORD} _fw_$${FWSTR}_name"		>>$@;\
-		  echo "    $${ASM_WORD} _fw_$${FWSTR}_bin"		>>$@;\
-		  echo "    $${ASM_WORD} _fw_end - _fw_$${FWSTR}_bin"	>>$@;
-
-# One of these files will change, or come into existence, whenever
-# the configuration changes between 32-bit and 64-bit. The .S files
-# need to change when that happens.
-wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
-		include/config/ppc32.h include/config/ppc64.h \
-		include/config/superh32.h include/config/superh64.h \
-		include/config/x86_32.h include/config/x86_64.h)
-
-# Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
-# It'll end up depending on these targets, so make them a PHONY rule which
-# depends on _all_ the directories in $(firmware-dirs), and it'll work out OK.
-PHONY += $(objtree)/$$(%) $(objtree)/$(obj)/$$(%)
-$(objtree)/$$(%) $(objtree)/$(obj)/$$(%): $(firmware-dirs)
-	@true
-
-# For the $$(dir %) trick, where we need % to be expanded first.
-.SECONDEXPANSION:
-
-$(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps) \
-		| $(objtree)/$$(dir %)
-	$(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
-$(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
-		include/config/extra/firmware/dir.h | $(objtree)/$$(dir %)
-	$(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
-
-# The .o files depend on the binaries directly; the .S files don't.
-$(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
-$(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
-
-# .ihex is used just as a simple way to hold binary files in a source tree
-# where binaries are frowned upon. They are directly converted with objcopy.
-$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,ihex)
-
-# Don't depend on ihex2fw if we're installing and it already exists.
-# Putting it after | in the dependencies doesn't seem sufficient when
-# we're installing after a cross-compile, because ihex2fw has dependencies
-# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and 
-# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
-# is exported read-only for someone to run 'make install'.
-ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
-ihex2fw_dep :=
-else
-ihex2fw_dep := $(obj)/ihex2fw
-endif
-
-# .HEX is also Intel HEX, but where the offset and length in each record
-# is actually meaningful, because the firmware has to be loaded in a certain
-# order rather than as a single binary blob. Thus, we convert them into our
-# more compact binary representation of ihex records (<linux/ihex.h>)
-$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,ihex2fw)
-
-# .H16 is our own modified form of Intel HEX, with 16-bit length for records.
-$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,h16tofw)
-
-$(firmware-dirs):
-	$(call cmd,mkdir)
-
-obj-y				 += $(patsubst %,%.gen.o, $(fw-external-y))
-obj-$(CONFIG_FIRMWARE_IN_KERNEL) += $(patsubst %,%.gen.o, $(fw-shipped-y))
-
-# Remove .S files and binaries created from ihex
-# (during 'make clean' .config isn't included so they're all in $(fw-shipped-))
-targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
-				$(shell find $(obj) -name \*.gen.S 2>/dev/null))
-
-# Without this, built-in.o won't be created when it's empty, and the
-# final vmlinux link will fail.
-obj-n := dummy
-
-hostprogs-y := ihex2fw
diff --git a/helpers/DATA/linux-lts-utopic/firmware/README.AddingFirmware b/helpers/DATA/linux-lts-utopic/firmware/README.AddingFirmware
deleted file mode 100644
index 463b1e42b..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/README.AddingFirmware
+++ /dev/null
@@ -1,23 +0,0 @@
-
-	DO NOT ADD FIRMWARE TO THIS DIRECTORY.
-	======================================
-
-This directory is only here to contain firmware images extracted from old
-device drivers which predate the common use of request_firmware().
-
-As we update those drivers to use request_firmware() and keep a clean
-separation between code and firmware, we put the extracted firmware
-here.
-
-/*(DEBLOBBED)*/
-      Ben Hutchings <ben@decadent.org.uk>
-
-Your commit should include an update to the WHENCE file clearly
-identifying the licence under which the firmware is available, and
-that it is redistributable. If the licence is long and involved, it's
-permitted to include it in a separate file and refer to it from the
-WHENCE file.
-
-Ideally, your commit should contain a Signed-Off-By: from someone
-authoritative on the licensing of the firmware in question (i.e. from
-within the company that owns the code).
diff --git a/helpers/DATA/linux-lts-utopic/firmware/WHENCE b/helpers/DATA/linux-lts-utopic/firmware/WHENCE
deleted file mode 100644
index dd74f94c1..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/WHENCE
+++ /dev/null
@@ -1,61 +0,0 @@
-             **********
-             * WHENCE *
-             **********
-
-This file attempts to document the origin and licensing information,
-if known, for each piece of firmware distributed for use with the Linux
-kernel.
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: keyspan_pda -- USB Keyspan PDA single-port serial device
-
-File: keyspan_pda/keyspan_pda.fw
-Source: keyspan_pda/keyspan_pda.S
-
-File: keyspan_pda/xircom_pgs.fw
-Source: keyspan_pda/xircom_pgs.S
-
-Licence: GPLv2+
-
-Compiled from original 8051 source into Intel HEX, used in our binary ihex form.
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: ATARI_DSP56K - Atari DSP56k support
-
-File: dsp56k/bootstrap.bin
-Source: dsp56k/bootstrap.asm
-
-Licence: GPLv2 or later
-
-DSP56001 assembler, possibly buildable with a56 from 
-http://www.zdomain.com/a56.html
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: DVB AV7110 -- AV7110 cards
-
-File: av7110/bootcode.bin
-
-Licence: GPLv2 or later
-
-ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
diff --git a/helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_rx.bin.ihex b/helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_rx.bin.ihex
deleted file mode 100644
index dfb2abc3f..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_rx.bin.ihex
+++ /dev/null
@@ -1 +0,0 @@
-:/*(DEBLOBBED)*/
diff --git a/helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_tx.bin.ihex b/helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_tx.bin.ihex
deleted file mode 100644
index dfb2abc3f..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/adaptec/starfire_tx.bin.ihex
+++ /dev/null
@@ -1 +0,0 @@
-:/*(DEBLOBBED)*/
diff --git a/helpers/DATA/linux-lts-utopic/firmware/atmsar11.HEX b/helpers/DATA/linux-lts-utopic/firmware/atmsar11.HEX
deleted file mode 100644
index c9b880e0b..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/atmsar11.HEX
+++ /dev/null
@@ -1,14 +0,0 @@
-:/*(DEBLOBBED)*/
-/*
-  Madge Ambassador ATM Adapter microcode.
-  Copyright (C) 1995-1999  Madge Networks Ltd.
-
-  This microcode data is placed under the terms of the GNU General
-  Public License. The GPL is contained in /usr/doc/copyright/GPL on a
-  Debian system and in the file COPYING in the Linux kernel source.
-
-  We would prefer you not to distribute modified versions without
-  consultation and not to ask for assembly/other microcode source.
-*/
-
-First record is start address in a __be32.
diff --git a/helpers/DATA/linux-lts-utopic/firmware/av7110/Boot.S b/helpers/DATA/linux-lts-utopic/firmware/av7110/Boot.S
deleted file mode 100644
index d562fdc29..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/av7110/Boot.S
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-   Boot.S: boot loader for Siemens DVB-S card
-
-   Copyright (C) 2001 Convergence integrated media GmbH
-	              Written by Ralph Metzler
-		                 <rjkm@convergence.de>
-   Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
-
-   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 the Free Software Foundation; either version 2
-   of the License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
-
-*/
-
-/*
-	check AV711x_3_1.pdf for some hardware infos
-	build it with :
-	$ cc -mbig-endian -c Boot.S
-	$ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
-	$ objcopy -Obinary Boot
-*/
-
-	.text
-	.align
-	.globl _start
-_start:
-	b reset			// reset vector
-	movs  pc, r14           // undefined
-	subs  pc, r14, #4       // SWI
-	subs  pc, r14, #4       // prefetch abort
-	subs  pc, r14, #8       // data abort
-	subs  pc, r14, #4       // reserved
-	subs  pc, r14, #4       // IRQ
-	subs  pc, r14, #4       // FIQ
-
-	.word tbl               // table needed by firmware ROM
-tbl:	.word (endtbl - tbl)
-	.word 0
-  	.word conf
-endtbl:	.word 0
-conf:	.word 0xa5a55a5a
-	.word 0x001f1555
-	.word 0x00000009
-
-reset:	ldr	r13, buffer
-	ldr	r4, flag
-	mov	r0, #0
-	str	r0, [r4]
-	str	r0, [r4, #4]
-
-	ldr		r1, wait_address
-	ldr		r2, flag_address
-	ldr		r3, sram
-
-copycode: // copy the code HW Sram
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
-	cmp		r1, r2
-	ble 	copycode
-	ldr		pc, sram // jump to the copied code
-
-wait:	ldrh	r1, [r4]        // wait for flag!=0
- 	cmp	r1, #0
-	beq	wait
-
-	mov	r1, r13         // buffer address
- 	ldr	r3, [r4,#4]     // destaddr
-
- 	ldrh	r2, [r4,#2]     // get segment length
-	add     r2, r2, #63     // round length to next 64 bytes
-	movs	r2, r2, lsr #6  // and divide by 64
-	moveq	r0, #2          // if 0, set flag to 2, else signal
-	strh	r0, [r4]        // that buffer is accepted by setting to 0
-        beq wait
-	
-copyloop:
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
- 	subs	r2, r2, #1
- 	bne	copyloop
-
-	eor     r13, r13, #0x1400    // switch to other buffer
-	b	wait
-
-// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
-// destaddr at 0x2c0003fc
-
-flag:	.word	0x2c0003f8
-
-
-// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
-
-buffer:	.word	0x2c000400
-
-sram: .word   0x9e000800
-wait_address: .word   wait
-flag_address: .word   flag
diff --git a/helpers/DATA/linux-lts-utopic/firmware/av7110/bootcode.bin.ihex b/helpers/DATA/linux-lts-utopic/firmware/av7110/bootcode.bin.ihex
deleted file mode 100644
index 26a2993e0..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/av7110/bootcode.bin.ihex
+++ /dev/null
@@ -1,15 +0,0 @@
-:10000000EA00000EE1B0F00EE25EF004E25EF00401
-:10001000E25EF008E25EF004E25EF004E25EF0040C
-:100020002C0000240000000C000000002C00003414
-:1000300000000000A5A55A5A001F15550000000930
-:10004000E59FD07CE59F4074E3A00000E5840000BC
-:10005000E5840004E59F1070E59F2070E59F306403
-:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
-:10007000E59FF050E1D410B0E35100000AFFFFFC0F
-:10008000E1A0100DE5943004E1D420B2E282203FDB
-:10009000E1B0232203A00002E1C400B00AFFFFF494
-:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
-:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
-:1000C0002C0003F82C0004009E0008002C00007493
-:0400D0002C0000C040
-:00000001FF
diff --git a/helpers/DATA/linux-lts-utopic/firmware/cis/.gitignore b/helpers/DATA/linux-lts-utopic/firmware/cis/.gitignore
deleted file mode 100644
index 1de39847f..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/cis/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.cis
diff --git a/helpers/DATA/linux-lts-utopic/firmware/cpia2/stv0672_vp4.bin.ihex b/helpers/DATA/linux-lts-utopic/firmware/cpia2/stv0672_vp4.bin.ihex
deleted file mode 100644
index 866b76faa..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/cpia2/stv0672_vp4.bin.ihex
+++ /dev/null
@@ -1,21 +0,0 @@
-:/*(DEBLOBBED)*/
-
-  Copyright 2001, STMicrolectronics, Inc.
-  Contact:  steve.miller@st.com
-
-  Description:
-     This file contains patch data for the CPiA2 (stv0672) VP4.
-
-  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
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.asm b/helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.asm
deleted file mode 100644
index a411047e6..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.asm
+++ /dev/null
@@ -1,98 +0,0 @@
-; Author: Frederik Noring <noring@nocrew.org>
-;
-; This file is subject to the terms and conditions of the GNU General Public
-; License.  See the file COPYING in the main directory of this archive
-; for more details.
-
-; DSP56k loader
-
-; Host Interface
-M_BCR   EQU     $FFFE           ; Port A Bus Control Register
-M_PBC   EQU     $FFE0           ; Port B Control Register
-M_PBDDR EQU     $FFE2           ; Port B Data Direction Register
-M_PBD   EQU     $FFE4           ; Port B Data Register
-M_PCC   EQU     $FFE1           ; Port C Control Register
-M_PCDDR EQU     $FFE3           ; Port C Data Direction Register
-M_PCD   EQU     $FFE5           ; Port C Data Register
-
-M_HCR   EQU     $FFE8           ; Host Control Register
-M_HSR   EQU     $FFE9           ; Host Status Register
-M_HRX   EQU     $FFEB           ; Host Receive Data Register
-M_HTX   EQU     $FFEB           ; Host Transmit Data Register
-
-; SSI, Synchronous Serial Interface
-M_RX    EQU     $FFEF           ; Serial Receive Data Register
-M_TX    EQU     $FFEF           ; Serial Transmit Data Register
-M_CRA   EQU     $FFEC           ; SSI Control Register A
-M_CRB   EQU     $FFED           ; SSI Control Register B
-M_SR    EQU     $FFEE           ; SSI Status Register
-M_TSR   EQU     $FFEE           ; SSI Time Slot Register
-
-; Exception Processing
-M_IPR   EQU     $FFFF           ; Interrupt Priority Register
-
-        org     P:$0
-start   jmp     <$40
-
-        org     P:$40
-;       ; Zero 16384 DSP X and Y words
-;       clr     A #0,r0
-;       clr     B #0,r4
-;       do      #64,<_block1
-;       rep     #256
-;       move    A,X:(r0)+ B,Y:(r4)+
-;_block1        ; Zero (32768-512) Program words
-;       clr     A #512,r0
-;       do      #126,<_block2
-;       rep     #256
-;       move    A,P:(r0)+
-;_block2
-
-        ; Copy DSP program control
-        move    #real,r0
-        move    #upload,r1
-        do      #upload_end-upload,_copy
-        movem    P:(r0)+,x0
-        movem    x0,P:(r1)+
-_copy   movep   #4,X:<<M_HCR
-        movep   #$c00,X:<<M_IPR
-        and     #<$fe,mr
-        jmp     upload
-
-real
-        org     P:$7ea9
-upload
-        movep   #1,X:<<M_PBC
-        movep   #0,X:<<M_BCR
-
-next    jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,A
-        move    #>3,x0
-        cmp     x0,A #>1,x0
-        jeq     <$0
-_get_address
-        jclr    #0,X:<<M_HSR,_get_address
-        movep   X:<<M_HRX,r0
-_get_length
-        jclr    #0,X:<<M_HSR,_get_length
-        movep   X:<<M_HRX,y0
-        cmp     x0,A #>2,x0
-        jeq     load_X
-        cmp     x0,A
-        jeq     load_Y
-
-load_P  do      y0,_load_P
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,P:(r0)+
-_load_P jmp     next
-load_X  do      y0,_load_X
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,X:(r0)+
-_load_X jmp     next
-load_Y  do      y0,_load_Y
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,Y:(r0)+
-_load_Y jmp     next
-
-upload_end
-        end
diff --git a/helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.bin.ihex b/helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.bin.ihex
deleted file mode 100644
index 233f21fe7..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/dsp56k/bootstrap.bin.ihex
+++ /dev/null
@@ -1,26 +0,0 @@
-:100000000C004000000000000000000000000000A4
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C00060F40000004F61F400007EA9062E80005D
-:1000D000004707D88407598408F4A800000408F4EE
-:1000E000BF000C0000FEB80AF080007EA908F4A052
-:1000F00000000108F4BE0000000AA980007EAD08DF
-:100100004E2B44F40000000344F4450000010EA00F
-:10011000000AA980007EB508502B0AA980007EB88D
-:1001200008462B44F4450000020AF0AA007EC920CC
-:1001300000450AF0AA007ED006C600007EC60AA9C5
-:1001400080007EC408586B0AF080007EAD06C600B1
-:10015000007ECD0AA980007ECB0858AB0AF0800053
-:100160007EAD06C600007ED40AA980007ED2085863
-:07017000EB0AF080007EADF8
-:00000001FF
-/* DSP56001 bootstrap code */
diff --git a/helpers/DATA/linux-lts-utopic/firmware/edgeport/boot.H16 b/helpers/DATA/linux-lts-utopic/firmware/edgeport/boot.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/edgeport/boot.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-utopic/firmware/edgeport/boot2.H16 b/helpers/DATA/linux-lts-utopic/firmware/edgeport/boot2.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/edgeport/boot2.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-utopic/firmware/edgeport/down.H16 b/helpers/DATA/linux-lts-utopic/firmware/edgeport/down.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/edgeport/down.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-utopic/firmware/edgeport/down2.H16 b/helpers/DATA/linux-lts-utopic/firmware/edgeport/down2.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/edgeport/down2.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-utopic/firmware/edgeport/down3.bin.ihex b/helpers/DATA/linux-lts-utopic/firmware/edgeport/down3.bin.ihex
deleted file mode 100644
index 6597b8df0..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/edgeport/down3.bin.ihex
+++ /dev/null
@@ -1,6 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport Binary Image (for TI based products)
-//* Generated by TIBin2C v2.00 (watchport)
-//* Copyright (C) 2001 Inside Out Networks, All rights reserved.
-//**************************************************************
diff --git a/helpers/DATA/linux-lts-utopic/firmware/ihex2fw.c b/helpers/DATA/linux-lts-utopic/firmware/ihex2fw.c
deleted file mode 100644
index cf38e1591..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/ihex2fw.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Parser/loader for IHEX formatted data.
- *
- * Copyright © 2008 David Woodhouse <dwmw2@infradead.org>
- * Copyright © 2005 Jan Harkes <jaharkes@cs.cmu.edu>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <stdint.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-
-struct ihex_binrec {
-	struct ihex_binrec *next; /* not part of the real data structure */
-        uint32_t addr;
-        uint16_t len;
-        uint8_t data[];
-};
-
-/**
- * nybble/hex are little helpers to parse hexadecimal numbers to a byte value
- **/
-static uint8_t nybble(const uint8_t n)
-{
-       if      (n >= '0' && n <= '9') return n - '0';
-       else if (n >= 'A' && n <= 'F') return n - ('A' - 10);
-       else if (n >= 'a' && n <= 'f') return n - ('a' - 10);
-       return 0;
-}
-
-static uint8_t hex(const uint8_t *data, uint8_t *crc)
-{
-       uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);
-       *crc += val;
-       return val;
-}
-
-static int process_ihex(uint8_t *data, ssize_t size);
-static void file_record(struct ihex_binrec *record);
-static int output_records(int outfd);
-
-static int sort_records = 0;
-static int wide_records = 0;
-static int include_jump = 0;
-
-static int usage(void)
-{
-	fprintf(stderr, "ihex2fw: Convert ihex files into binary "
-		"representation for use by Linux kernel\n");
-	fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
-	fprintf(stderr, "       -w: wide records (16-bit length)\n");
-	fprintf(stderr, "       -s: sort records by address\n");
-	fprintf(stderr, "       -j: include records for CS:IP/EIP address\n");
-	return 1;
-}
-
-int main(int argc, char **argv)
-{
-	int infd, outfd;
-	struct stat st;
-	uint8_t *data;
-	int opt;
-
-	while ((opt = getopt(argc, argv, "wsj")) != -1) {
-		switch (opt) {
-		case 'w':
-			wide_records = 1;
-			break;
-		case 's':
-			sort_records = 1;
-			break;
-		case 'j':
-			include_jump = 1;
-			break;
-			return usage();
-		}
-	}
-
-	if (optind + 2 != argc)
-		return usage();
-
-	if (!strcmp(argv[optind], "-"))
-	    infd = 0;
-	else
-		infd = open(argv[optind], O_RDONLY);
-	if (infd == -1) {
-		fprintf(stderr, "Failed to open source file: %s",
-			strerror(errno));
-		return usage();
-	}
-	if (fstat(infd, &st)) {
-		perror("stat");
-		return 1;
-	}
-	data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
-	if (data == MAP_FAILED) {
-		perror("mmap");
-		return 1;
-	}
-
-	if (!strcmp(argv[optind+1], "-"))
-	    outfd = 1;
-	else
-		outfd = open(argv[optind+1], O_TRUNC|O_CREAT|O_WRONLY, 0644);
-	if (outfd == -1) {
-		fprintf(stderr, "Failed to open destination file: %s",
-			strerror(errno));
-		return usage();
-	}
-	if (process_ihex(data, st.st_size))
-		return 1;
-
-	return output_records(outfd);
-}
-
-static int process_ihex(uint8_t *data, ssize_t size)
-{
-	struct ihex_binrec *record;
-	uint32_t offset = 0;
-	uint32_t data32;
-	uint8_t type, crc = 0, crcbyte = 0;
-	int i, j;
-	int line = 1;
-	int len;
-
-	i = 0;
-next_record:
-	/* search for the start of record character */
-	while (i < size) {
-		if (data[i] == '\n') line++;
-		if (data[i++] == ':') break;
-	}
-
-	/* Minimum record length would be about 10 characters */
-	if (i + 10 > size) {
-		fprintf(stderr, "Can't find valid record at line %d\n", line);
-		return -EINVAL;
-	}
-
-	len = hex(data + i, &crc); i += 2;
-	if (wide_records) {
-		len <<= 8;
-		len += hex(data + i, &crc); i += 2;
-	}
-	record = malloc((sizeof (*record) + len + 3) & ~3);
-	if (!record) {
-		fprintf(stderr, "out of memory for records\n");
-		return -ENOMEM;
-	}
-	memset(record, 0, (sizeof(*record) + len + 3) & ~3);
-	record->len = len;
-
-	/* now check if we have enough data to read everything */
-	if (i + 8 + (record->len * 2) > size) {
-		fprintf(stderr, "Not enough data to read complete record at line %d\n",
-			line);
-		return -EINVAL;
-	}
-
-	record->addr  = hex(data + i, &crc) << 8; i += 2;
-	record->addr |= hex(data + i, &crc); i += 2;
-	type = hex(data + i, &crc); i += 2;
-
-	for (j = 0; j < record->len; j++, i += 2)
-		record->data[j] = hex(data + i, &crc);
-
-	/* check CRC */
-	crcbyte = hex(data + i, &crc); i += 2;
-	if (crc != 0) {
-		fprintf(stderr, "CRC failure at line %d: got 0x%X, expected 0x%X\n",
-			line, crcbyte, (unsigned char)(crcbyte-crc));
-		return -EINVAL;
-	}
-
-	/* Done reading the record */
-	switch (type) {
-	case 0:
-		/* old style EOF record? */
-		if (!record->len)
-			break;
-
-		record->addr += offset;
-		file_record(record);
-		goto next_record;
-
-	case 1: /* End-Of-File Record */
-		if (record->addr || record->len) {
-			fprintf(stderr, "Bad EOF record (type 01) format at line %d",
-				line);
-			return -EINVAL;
-		}
-		break;
-
-	case 2: /* Extended Segment Address Record (HEX86) */
-	case 4: /* Extended Linear Address Record (HEX386) */
-		if (record->addr || record->len != 2) {
-			fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
-				type, line);
-			return -EINVAL;
-		}
-
-		/* We shouldn't really be using the offset for HEX86 because
-		 * the wraparound case is specified quite differently. */
-		offset = record->data[0] << 8 | record->data[1];
-		offset <<= (type == 2 ? 4 : 16);
-		goto next_record;
-
-	case 3: /* Start Segment Address Record */
-	case 5: /* Start Linear Address Record */
-		if (record->addr || record->len != 4) {
-			fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
-				type, line);
-			return -EINVAL;
-		}
-
-		memcpy(&data32, &record->data[0], sizeof(data32));
-		data32 = htonl(data32);
-		memcpy(&record->data[0], &data32, sizeof(data32));
-
-		/* These records contain the CS/IP or EIP where execution
-		 * starts. If requested output this as a record. */
-		if (include_jump)
-			file_record(record);
-		goto next_record;
-
-	default:
-		fprintf(stderr, "Unknown record (type %02X)\n", type);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static struct ihex_binrec *records;
-
-static void file_record(struct ihex_binrec *record)
-{
-	struct ihex_binrec **p = &records;
-
-	while ((*p) && (!sort_records || (*p)->addr < record->addr))
-		p = &((*p)->next);
-
-	record->next = *p;
-	*p = record;
-}
-
-static int output_records(int outfd)
-{
-	unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0};
-	struct ihex_binrec *p = records;
-
-	while (p) {
-		uint16_t writelen = (p->len + 9) & ~3;
-
-		p->addr = htonl(p->addr);
-		p->len = htons(p->len);
-		if (write(outfd, &p->addr, writelen) != writelen)
-			return 1;
-		p = p->next;
-	}
-	/* EOF record is zero length, since we don't bother to represent
-	   the type field in the binary version */
-	if (write(outfd, zeroes, 6) != 6)
-		return 1;
-	return 0;
-}
diff --git a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.HEX b/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.HEX
deleted file mode 100644
index 6fcf02bb4..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.HEX
+++ /dev/null
@@ -1,83 +0,0 @@
-:03000000020200F9
-:0400230002055F0073
-:0400430002010000B6
-:050030000000000000CB
-:10010000020296000200000002000000020000004F
-:1001100002000000020000000200000002000000D7
-:1001200002000000020000000204610002048900D5
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC7402907F9DF07400907FC0
-:1002300097F07486907F9EF0907F957403F0907F86
-:10024000AFE0D2E0F07401907FABF0907FAEF09021
-:100250007FAC7404F0907FAD7404F0907FC9F074AB
-:1002600084907F98F07400F59875C8307B059120D4
-:10027000D2CA759850D2E8D2AFD2AC7400F586904D
-:100280007FD67402F0792E7A007B00DBFEDAFAD991
-:10029000F67406F080FEC086C082C083C084C0852C
-:1002A000C0E0E591C2E4F591907FAB7401F0907FDE
-:1002B000E8E0F9A3E0FAA3E0FBA3E0FCE95460B4B2
-:1002C0000003020339B4406EBA000B12042040034D
-:1002D00002040202040ABA010302040ABA02030277
-:1002E000040ABA0303020444BA041EBB000A907F46
-:1002F00095E04402F0020402907F98E054FDF090F3
-:100300007F95E054FDF0020402BA050302040ABA24
-:100310000619BB0008E533D395320203DEBB0108A2
-:10032000E532C395330203DE02040ABA07058B34B3
-:1003300002040202040A02040ABA0020B9801090E2
-:100340007F00E4F0A3F0907FB57402F0020402B9DC
-:10035000820280EBB9810280E602040ABA010FBB77
-:10036000000302040ABB010302040202040ABA03E6
-:100370000FBB000302040ABB010302040202040AC9
-:10038000BA0656BC010F907FD47406F0907FD574E6
-:1003900012F0020402BC0212BB006F907FD47406FC
-:1003A000F0907FD57424F0020402BC03297404C3C6
-:1003B0009B40576055EB2B9006442582F5827400D4
-:1003C0003583F583E0F9A3E0FA907FD4E9F0907FDC
-:1003D000D5EAF002040202040ABA080F7401907F01
-:1003E00000F07401907FB5F0020402BA0903020420
-:1003F00002BA0A0574000203DEBA0B030204020209
-:10040000040A907FB47402F08009907FB4E0440144
-:10041000F08000D0E0D085D084D083D082D08632E6
-:10042000EB20E71EC3940A5019EB2324FEF58274D7
-:10043000053400F583E0F5CBF5CDA3E0F5CAF5CCA6
-:10044000C322D322B94111EB64FF5484FB907F98FF
-:10045000E0547B4BF0020402907F9BE064FF0203B8
-:10046000DEC086C082C083C084C085C0E0E591C282
-:10047000E4F591907FA97404F01205A0D0E0D08536
-:10048000D084D083D082D08632C086C082C083C060
-:1004900084C085C0E0E591C2E4F591907FAA740420
-:1004A000F0907FC9E0F9E4F586907DC075851085F0
-:1004B0003284E005860584F0E584B53302800905C1
-:1004C000320586A3D9EC8000907FC9F0B131D0E02D
-:1004D000D085D084D083D082D08632E4F586907FD8
-:1004E000BCE020E14B907D00E532F0A3E533F0A3C2
-:1004F000E530F0A3E531F0A3E430000104F0A305FA
-:10050000869010007910E0A30586F0A30586D9F641
-:10051000058674FCF0A305869011007910E0A30510
-:1005200086F0A30586D9F6E4F586907FBD7426F0A3
-:1005300022200013E532B53301220533758310857F
-:100540003382E0F599D2007400B5340122E533D34B
-:100550009532C3953440F5753400D2010205A0C030
-:1005600086C082C083C084C085C0E0309907C2992C
-:10057000C20012053430980512058AC298D0E0D026
-:1005800085D084D083D082D0863275831185308225
-:100590000582E599F0E582B53101220530B1A0224E
-:1005A000907FB8E020E138200136E530B5310122F6
-:1005B000E4F5867583110586907E00F0A3058679A3
-:1005C00001E530B5310280100531853182E00586C4
-:1005D000F0A3058609B940E9907FB9E96001F022EE
-:1005E000C201E4F586907E007401F0A37402F090DD
-:1005F0007FB9F022C299F5993099FDC29922E55E42
-:10060000F63CFD8FFEC8FF64FFB2FFD9FFEDFFF39C
-:10061000FFFA12010001FFFFFF40CD06040189AB84
-:1006200001020301090220000101008032090400D7
-:100630000002FFFFFF0007058203400001070502DB
-:1006400002400000064C0650067206A0040300009B
-:100650002203410043004D00450020007500730057
-:100660006200200077006900640067006500740084
-:1006700073002E03410043004D004500200055004B
-:1006800053004200200073006500720069006100A1
-:100690006C0020007700690064006700650074004A
-:0606A000060334003700E0
-:00000001FF
diff --git a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.S b/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.S
deleted file mode 100644
index f3acc197a..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/keyspan_pda.S
+++ /dev/null
@@ -1,1124 +0,0 @@
-/*  $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- * 
- *  Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- *  the EzUSB microcontroller.
- * 
- *  (C) Copyright 2000 Brian Warner <warner@lothar.com>
- * 
- * 	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
- * 	the Free Software Foundation; either version 2 of the License, or
- * 	(at your option) any later version.
- * 
- *  "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- *  company.
- * 
- *  This serial adapter is basically an EzUSB chip and an RS-232 line driver
- *  in a little widget that has a DB-9 on one end and a USB plug on the other.
- *  It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- *  as a baud-rate generator. The wiring is:
- *   PC0/RxD0 <- rxd (DB9 pin 2)         PC4 <- dsr pin 6
- *   PC1/TxD0 -> txd pin 3               PC5 <- ri  pin 9
- *   PC2      -> rts pin 7               PC6 <- dcd pin 1
- *   PC3      <- cts pin 8               PC7 -> dtr pin 4
- *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
- * 
- * THEORY OF OPERATION:
- *
- *   There are two 256-byte ring buffers, one for tx, one for rx.
- *
- *   EP2out is pure tx data. When it appears, the data is copied into the tx
- *   ring and serial transmission is started if it wasn't already running. The
- *   "tx buffer empty" interrupt may kick off another character if the ring
- *   still has data. If the host is tx-blocked because the ring filled up,
- *   it will request a "tx unthrottle" interrupt. If sending a serial character
- *   empties the ring below the desired threshold, we set a bit that will send
- *   up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- *   EP2in (interrupt) is used to send both rx chars and rx status messages
- *   (only "tx unthrottle" at this time) back up to the host. The first byte
- *   of the rx message indicates data (0) or status msg (1). Status messages
- *   are sent before any data.
- *
- *   Incoming serial characters are put into the rx ring by the serial
- *   interrupt, and the EP2in buffer sent if it wasn't already in transit.
- *   When the EP2in buffer returns, the interrupt prompts us to send more
- *   rx chars (or status messages) if they are pending.
- *
- *   Device control happens through "vendor specific" control messages on EP0.
- *   All messages are destined for the "Interface" (with the index always 0,
- *   so that if their two-port device might someday use similar firmware, we
- *   can use index=1 to refer to the second port). The messages defined are:
- *
- *    bRequest = 0 : set baud/bits/parity
- *               1 : unused
- *               2 : reserved for setting HW flow control (CTSRTS)
- *               3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- *               4 : set break (on/off)
- *               5 : reserved for requesting interrupts on pin state change
- *               6 : query buffer room or chars in tx buffer
- *               7 : request tx unthrottle interrupt
- *
- *  The host-side driver is set to recognize the device ID values stashed in
- *  serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- *  start it running. This firmware will use EzUSB's "renumeration" trick by
- *  simulating a bus disconnect, then reconnect with a different device ID
- *  (encoded in the desc_device descriptor below). The host driver then
- *  recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- *  EzUSB Technical Reference Manual: <http://www.cypress.com/>
- *  8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- *   basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- *   use totally different registers!
- *  USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- *  AnchorChips, for making such an incredibly useful little microcontroller.
- *  KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- *           apart and trace with an ohmmeter.
- *
- * TODO:
- *  lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- *  control. Interrupting host upon change in DCD, etc, counting transitions.
- *  Need to find a safe device id to use (the one used by the Keyspan firmware
- *  under Windows would be ideal.. can anyone figure out what it is?). Parity.
- *  More baud rates. Oh, and the string-descriptor-length silicon bug
- *  workaround should be implemented, but I'm lazy, and the consequence is
- *  that the device name strings that show up in your kernel log will have
- *  lots of trailing binary garbage in them (appears as ????). Device strings
- *  should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- *  -Brian Warner <warner@lothar.com>
- *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTCCFG #0x7f95
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
-	.org 0
-	ljmp start
-	;; interrupt vectors
-	.org 23H
-	ljmp serial_int
-	.byte 0
-	
-	.org 43H
-	ljmp USB_Jump_Table
-	.byte 0			; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
-rx_ring_in:	.byte 0
-rx_ring_out:	.byte 0
-tx_ring_in:	.byte 0
-tx_ring_out:	.byte 0
-tx_unthrottle_threshold:	.byte 0
-		
-	.org 0x100H		; wants to be on a page boundary
-USB_Jump_Table:
-	ljmp	ISR_Sudav	; Setup Data Available
-	.byte 0
-	ljmp	0		; Start of Frame
-	.byte 0
-	ljmp	0		; Setup Data Loading
-	.byte 0
-	ljmp	0		; Global Suspend
-	.byte 	0
-	ljmp	0		; USB Reset  	
-	.byte	0
-	ljmp	0		; Reserved
-	.byte	0
-	ljmp	0		; End Point 0 In
-	.byte	0
-	ljmp	0		; End Point 0 Out
-	.byte	0
-	ljmp	0		; End Point 1 In
-	.byte	0
-	ljmp	0		; End Point 1 Out
-	.byte	0
-	ljmp	ISR_Ep2in
-	.byte	0
-	ljmp	ISR_Ep2out
-	.byte	0
-
-
-	.org 0x200
-		
-start:	mov SP,STACK-1 ; set stack
-	;; clear local variables
-	clr a
-	mov tx_ring_in, a
-	mov tx_ring_out, a
-	mov rx_ring_in, a
-	mov rx_ring_out, a
-	mov tx_unthrottle_threshold, a
-	clr TX_RUNNING
-	clr DO_TX_UNTHROTTLE
-	
-	;; clear fifo with "fe"
-	mov r1, 0
-	mov a, #0xfe
-	mov dptr, #tx_ring
-clear_tx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_tx_ring_loop
-
-	mov a, #0xfd
-	mov dptr, #rx_ring
-clear_rx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-	;; set OEB.1
-	mov a, #02H
-	mov dptr,OEB
-	movx @dptr,a
-	;; clear PB1
-	mov a, #00H
-	mov dptr,OUTB
-	movx @dptr,a
-	;; set OEC.[127]
-	mov a, #0x86
-	mov dptr,OEC
-	movx @dptr,a
-	;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
-	mov dptr, PORTCCFG
-	mov a, #0x03
-	movx @dptr, a
-	
-	;; set up interrupts, autovectoring
-	mov dptr, USBBAV
-	movx a,@dptr
-	setb acc.0		; AVEN bit to 0
-	movx @dptr, a
-
-	mov a,#0x01		; enable SUDAV:	setup data available (for ep0)
-	mov dptr, USBIRQ
-	movx @dptr, a		; clear SUDAVI
-	mov dptr, USBIEN
-	movx @dptr, a
-	
-	mov dptr, IN07IEN
-	mov a,#0x04		; enable IN2 int
-	movx @dptr, a
-	
-	mov dptr, OUT07IEN
-	mov a,#0x04		; enable OUT2 int
-	movx @dptr, a
-	mov dptr, OUT2BC
-	movx @dptr, a		; arm OUT2
-
-	mov a, #0x84		; turn on RTS, DTR
-	mov dptr,OUTC
-	movx @dptr, a
-	;; setup the serial port. 9600 8N1.
-	mov a,#01010011		; mode 1, enable rx, clear int
-	mov SCON, a
-	;;  using timer2, in 16-bit baud-rate-generator mode
-	;;   (xtal 12MHz, internal fosc 24MHz)
-	;;  RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
-	;;  57600: 0xFFF2.F, say 0xFFF3
-	;;   9600: 0xFFB1.E, say 0xFFB2
-	;;    300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
-	mov r3, #5
-	acall set_baud
-	setb TR2
-	mov SCON, #050h
-	
-#if 0
-	mov r1, #0x40
-	mov a, #0x41
-send:	
-	mov SBUF, a
-	inc a
-	anl a, #0x3F
-	orl a, #0x40
-;	xrl a, #0x02
-wait1:	
-	jnb TI, wait1
-	clr TI
-	djnz r1, send
-;done:	sjmp done
-
-#endif
-	
-	setb EUSB
-	setb EA
-	setb ES0
-	;acall dump_stat
-
-	;; hey, what say we RENUMERATE! (TRM p.62)
-	mov a, #0
-	mov dps, a
-	mov dptr, USBCS
-	mov a, #0x02		; DISCON=0, DISCOE=0, RENUM=1
-	movx @dptr, a
-	;; now presence pin is floating, simulating disconnect. wait 0.5s
-	mov r1, #46
-renum_wait1:
-	mov r2, #0
-renum_wait2:
-	mov r3, #0
-renum_wait3:
-	djnz r3, renum_wait3
-	djnz r2, renum_wait2
-	djnz r1, renum_wait1	; wait about n*(256^2) 6MHz clocks
-	mov a, #0x06		; DISCON=0, DISCOE=1, RENUM=1
-	movx @dptr, a
-	;; we are back online. the host device will now re-query us
-	
-	
-main:	sjmp main
-
-	
-
-ISR_Sudav:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
-	movx @dptr,a
-
-	;; get request type
-	mov dptr, SETUPDAT
-	movx a, @dptr
-	mov r1, a		; r1 = bmRequestType
-	inc dptr
-	movx a, @dptr
-	mov r2, a		; r2 = bRequest
-	inc dptr
-	movx a, @dptr
-	mov r3, a		; r3 = wValueL
-	inc dptr
-	movx a, @dptr
-	mov r4, a		; r4 = wValueH
-
-	;; main switch on bmRequest.type: standard or vendor
-	mov a, r1
-	anl a, #0x60
-	cjne a, #0x00, setup_bmreq_type_not_standard
-	;; standard request: now main switch is on bRequest
-	ljmp setup_bmreq_is_standard
-	
-setup_bmreq_type_not_standard:	
-	;; a still has bmreq&0x60
-	cjne a, #0x40, setup_bmreq_type_not_vendor
-	;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
-	;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
-	cjne r2, #0x00, setup_ctrl_not_00
-	;; 00 is set baud, wValue[0] has baud rate index
-	lcall set_baud		; index in r3, carry set if error
-	jc setup_bmreq_type_not_standard__do_stall
-	ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
-	ljmp setup_stall
-setup_ctrl_not_00:
-	cjne r2, #0x01, setup_ctrl_not_01
-	;; 01 is reserved for set bits (parity). TODO
-	ljmp setup_stall
-setup_ctrl_not_01:
-	cjne r2, #0x02, setup_ctrl_not_02
-	;; 02 is set HW flow control. TODO
-	ljmp setup_stall
-setup_ctrl_not_02:
-	cjne r2, #0x03, setup_ctrl_not_03
-	;; 03 is control pins (RTS, DTR).
-	ljmp control_pins	; will jump to setup_done_ack,
-				;  or setup_return_one_byte
-setup_ctrl_not_03:
-	cjne r2, #0x04, setup_ctrl_not_04
-	;; 04 is send break (really "turn break on/off"). TODO
-	cjne r3, #0x00, setup_ctrl_do_break_on
-	;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	orl a, #0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_do_break_on:
-	;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
-	mov dptr, OUTC
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_not_04:
-	cjne r2, #0x05, setup_ctrl_not_05
-	;; 05 is set desired interrupt bitmap. TODO
-	ljmp setup_stall
-setup_ctrl_not_05:
-	cjne r2, #0x06, setup_ctrl_not_06
-	;; 06 is query room
-	cjne r3, #0x00, setup_ctrl_06_not_00
-	;; 06, wValue[0]=0 is query write_room
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in	; out-1-in = 255 - (in-out)
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
-	cjne r3, #0x01, setup_ctrl_06_not_01
-	;; 06, wValue[0]=1 is query chars_in_buffer
-	mov a, tx_ring_in
-	clr c
-	subb a, tx_ring_out	; in-out
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_01:	
-	ljmp setup_stall
-setup_ctrl_not_06:
-	cjne r2, #0x07, setup_ctrl_not_07
-	;; 07 is request tx unthrottle interrupt
-	mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
-	ljmp setup_done_ack
-setup_ctrl_not_07:
-	ljmp setup_stall
-	
-setup_bmreq_type_not_vendor:
-	ljmp setup_stall
-
-
-setup_bmreq_is_standard:	
-	cjne r2, #0x00, setup_breq_not_00
-	;; 00:	Get_Status (sub-switch on bmRequestType: device, ep, int)
-	cjne r1, #0x80, setup_Get_Status_not_device
-	;; Get_Status(device)
-	;;  are we self-powered? no. can we do remote wakeup? no
-	;;   so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
-	mov dptr, IN0BUF
-	clr a
-	movx @dptr, a
-	inc dptr
-	movx @dptr, a
-	mov dptr, IN0BC
-	mov a, #2
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Status_not_device:
-	cjne r1, #0x82, setup_Get_Status_not_endpoint
-	;; Get_Status(endpoint)
-	;;  must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
-	;; for now: cheat. TODO
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
-	cjne r1, #0x81, setup_Get_Status_not_interface
-	;; Get_Status(interface): return two zeros
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:	
-	ljmp setup_stall
-	
-setup_breq_not_00:
-	cjne r2, #0x01, setup_breq_not_01
-	;; 01:	Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Clear_Feature_not_stall
-	;; Clear_Feature(stall). should clear a stall bit. TODO
-	ljmp setup_stall
-setup_Clear_Feature_not_stall:
-	cjne r3, #0x01, setup_Clear_Feature_not_rwake
-	;; Clear_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_01:
-	cjne r2, #0x03, setup_breq_not_03
-	;; 03:	Set_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Set_Feature_not_stall
-	;; Set_Feature(stall). Should set a stall bit. TODO
-	ljmp setup_stall
-setup_Set_Feature_not_stall:
-	cjne r3, #0x01, setup_Set_Feature_not_rwake
-	;; Set_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_03:	
-	cjne r2, #0x06, setup_breq_not_06
-	;; 06:	Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
-	cjne r4, #0x01, setup_Get_Descriptor_not_device
-	;; Get_Descriptor(device)
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_device)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_device)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
-	cjne r4, #0x02, setup_Get_Descriptor_not_config
-	;; Get_Descriptor(config[n])
-	cjne r3, #0x00, setup_stall; only handle n==0
-	;; Get_Descriptor(config[0])
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_config1)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_config1)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
-	cjne r4, #0x03, setup_Get_Descriptor_not_string
-	;; Get_Descriptor(string[wValueL])
-	;;  if (wValueL >= maxstrings) stall
-	mov a, #((desc_strings_end-desc_strings)/2)
-	clr c
-	subb a,r3		; a=4, r3 = 0..3 . if a<=0 then stall
-	jc  setup_stall
-	jz  setup_stall
-	mov a, r3
-	add a, r3		; a = 2*wValueL
-	mov dptr, #desc_strings
-	add a, dpl
-	mov dpl, a
-	mov a, #0
-	addc a, dph
-	mov dph, a		; dph = desc_strings[a]. big endian! (handy)
-	;; it looks like my adapter uses a revision of the EZUSB that
-	;; contains "rev D errata number 8", as hinted in the EzUSB example
-	;; code. I cannot find an actual errata description on the Cypress
-	;; web site, but from the example code it looks like this bug causes
-	;; the length of string descriptors to be read incorrectly, possibly
-	;; sending back more characters than the descriptor has. The workaround
-	;; is to manually send out all of the data. The consequence of not
-	;; using the workaround is that the strings gathered by the kernel
-	;; driver are too long and are filled with trailing garbage (including
-	;; leftover strings). Writing this out by hand is a nuisance, so for
-	;; now I will just live with the bug.
-	movx a, @dptr
-	mov r1, a
-	inc dptr
-	movx a, @dptr
-	mov r2, a
-	mov dptr, SUDPTRH
-	mov a, r1
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, r2
-	movx @dptr, a
-	;; done
-	ljmp setup_done_ack
-	
-setup_Get_Descriptor_not_string:
-	ljmp setup_stall
-	
-setup_breq_not_06:
-	cjne r2, #0x08, setup_breq_not_08
-	;; Get_Configuration. always 1. return one byte.
-	;; this is reusable
-	mov a, #1
-setup_return_one_byte:	
-	mov dptr, IN0BUF
-	movx @dptr, a
-	mov a, #1
-	mov dptr, IN0BC
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_breq_not_08:
-	cjne r2, #0x09, setup_breq_not_09
-	;; 09: Set_Configuration. ignored.
-	ljmp setup_done_ack
-setup_breq_not_09:
-	cjne r2, #0x0a, setup_breq_not_0a
-	;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
-	;;  since we only have one interface, ignore wIndexL, return a 0
-	mov a, #0
-	ljmp setup_return_one_byte
-setup_breq_not_0a:
-	cjne r2, #0x0b, setup_breq_not_0b
-	;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
-	ljmp setup_done_ack
-setup_breq_not_0b:
-	ljmp setup_stall
-
-		
-setup_done_ack:	
-	;; now clear HSNAK
-	mov dptr, EP0CS
-	mov a, #0x02
-	movx @dptr, a
-	sjmp setup_done
-setup_stall:	
-	;; unhandled. STALL
-	;EP0CS |= bmEPSTALL
-	mov dptr, EP0CS
-	movx a, @dptr
-	orl a, EP0STALLbit
-	movx @dptr, a
-	sjmp setup_done
-	
-setup_done:	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-;;; ==============================================================
-	
-set_baud:			; baud index in r3
-	;; verify a < 10
-	mov a, r3
-	jb ACC.7, set_baud__badbaud
-	clr c
-	subb a, #10
-	jnc set_baud__badbaud
-	mov a, r3
-	rl a			; a = index*2
-	add a, #LOW(baud_table)
-	mov dpl, a
-	mov a, #HIGH(baud_table)
-	addc a, #0
-	mov dph, a
-	;; TODO: shut down xmit/receive
-	;; TODO: wait for current xmit char to leave
-	;; TODO: shut down timer to avoid partial-char glitch
-	movx a,@dptr		; BAUD_HIGH
-	mov RCAP2H, a
-	mov TH2, a
-	inc dptr
-	movx a,@dptr		; BAUD_LOW
-	mov RCAP2L, a
-	mov TL2, a
-	;; TODO: restart xmit/receive
-	;; TODO: reenable interrupts, resume tx if pending
-	clr c			; c=0: success
-	ret
-set_baud__badbaud:
-	setb c			; c=1: failure
-	ret
-	
-;;; ==================================================
-control_pins:
-	cjne r1, #0x41, control_pins_in
-control_pins_out:
-	mov a, r3 ; wValue[0] holds new bits:	b7 is new DTR, b2 is new RTS
-	xrl a, #0xff		; 1 means active, 0V, +12V ?
-	anl a, #0x84
-	mov r3, a
-	mov dptr, OUTC
-	movx a, @dptr		; only change bits 7 and 2
-	anl a, #0x7b		; ~0x84
-	orl a, r3
-	movx @dptr, a		; other pins are inputs, bits ignored
-	ljmp setup_done_ack
-control_pins_in:
-	mov dptr, PINSC
-	movx a, @dptr
-	xrl a, #0xff
-	ljmp setup_return_one_byte
-
-;;; ========================================
-	
-ISR_Ep2in:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-	lcall start_in
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-ISR_Ep2out:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-
-	;; copy data into buffer. for now, assume we will have enough space
-	mov dptr, OUT2BC	; get byte count
-	movx a,@dptr
-	mov r1, a
-	clr a
-	mov dps, a
-	mov dptr, OUT2BUF	; load DPTR0 with source
-	mov dph1, #HIGH(tx_ring)	; load DPTR1 with target
-	mov dpl1, tx_ring_in
-OUT_loop:
-	movx a,@dptr		; read
-	inc dps			; switch to DPTR1: target
-	inc dpl1		; target = tx_ring_in+1
-	movx @dptr,a		; store
-	mov a,dpl1
-	cjne a, tx_ring_out, OUT_no_overflow
-	sjmp OUT_overflow
-OUT_no_overflow:	
-	inc tx_ring_in		; tx_ring_in++
-	inc dps			; switch to DPTR0: source
-	inc dptr
-	djnz r1, OUT_loop
-	sjmp OUT_done
-OUT_overflow:
-	;; signal overflow
-	;; fall through
-OUT_done:	
-	;; ack
-	mov dptr,OUT2BC
-	movx @dptr,a
-
-	;; start tx
-	acall maybe_start_tx
-	;acall dump_stat
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-dump_stat:
-	;; fill in EP4in with a debugging message:
-	;;   tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
-	;;   tx_active
-	;;   tx_ring[0..15]
-	;;   0xfc
-	;;   rx_ring[0..15]
-	clr a
-	mov dps, a
-	
-	mov dptr, IN4CS
-	movx a, @dptr
-	jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
-	mov dptr, IN4BUF
-	
-	mov a, tx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, tx_ring_out
-	movx @dptr, a
-	inc dptr
-
-	mov a, rx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, rx_ring_out
-	movx @dptr, a
-	inc dptr
-	
-	clr a
-	jnb TX_RUNNING, dump_stat__no_tx_running
-	inc a
-dump_stat__no_tx_running:
-	movx @dptr, a
-	inc dptr
-	;; tx_ring[0..15]
-	inc dps
-	mov dptr, #tx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__tx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__tx_ring_loop
-	inc dps
-	
-	mov a, #0xfc
-	movx @dptr, a
-	inc dptr
-	
-	;; rx_ring[0..15]
-	inc dps
-	mov dptr, #rx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__rx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__rx_ring_loop
-	
-	;; now send it
-	clr a
-	mov dps, a
-	mov dptr, IN4BC
-	mov a, #38
-	movx @dptr, a
-dump_stat__done:	
-	ret
-		
-;;; ============================================================
-	
-maybe_start_tx:
-	;; make sure the tx process is running.
-	jb TX_RUNNING, start_tx_done
-start_tx:
-	;; is there work to be done?
-	mov a, tx_ring_in
-	cjne a,tx_ring_out, start_tx__work
-	ret			; no work
-start_tx__work:	
-	;; tx was not running. send the first character, setup the TI int
-	inc tx_ring_out		; [++tx_ring_out]
-	mov dph, #HIGH(tx_ring)
-	mov dpl, tx_ring_out
-	movx a, @dptr
-	mov sbuf, a
-	setb TX_RUNNING
-start_tx_done:
-	;; can we unthrottle the host tx process?
-	;;  step 1: do we care?
-	mov a, #0
-	cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
-	;; nope
-start_tx_really_done:
-	ret
-start_tx__maybe_unthrottle_tx:
-	;;  step 2: is there now room?
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in
-	;; a is now write_room. If thresh >= a, we can unthrottle
-	clr c
-	subb a, tx_unthrottle_threshold
-	jc start_tx_really_done	; nope
-	;; yes, we can unthrottle. remove the threshold and mark a request
-	mov tx_unthrottle_threshold, #0
-	setb DO_TX_UNTHROTTLE
-	;; prod rx, which will actually send the message when in2 becomes free
-	ljmp start_in
-	
-
-serial_int:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	jnb TI, serial_int__not_tx
-	;; tx finished. send another character if we have one
-	clr TI			; clear int
-	clr TX_RUNNING
-	lcall start_tx
-serial_int__not_tx:
-	jnb RI, serial_int__not_rx
-	lcall get_rx_char
-	clr RI			; clear int
-serial_int__not_rx:	
-	;; return
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-get_rx_char:
-	mov dph, #HIGH(rx_ring)
-	mov dpl, rx_ring_in
-	inc dpl			; target = rx_ring_in+1
-	mov a, sbuf
-	movx @dptr, a
-	;; check for overflow before incrementing rx_ring_in
-	mov a, dpl
-	cjne a, rx_ring_out, get_rx_char__no_overflow
-	;; signal overflow
-	ret
-get_rx_char__no_overflow:	
-	inc rx_ring_in
-	;; kick off USB INpipe
-	acall start_in
-	ret
-
-start_in:
-	;; check if the inpipe is already running.
-	mov dptr, IN2CS
-	movx a, @dptr
-	jb acc.1, start_in__done; int will handle it
-	jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
-	;; see if there is any work to do. a serial interrupt might occur
-	;; during this sequence?
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_in__have_work
-	ret			; nope
-start_in__have_work:	
-	;; now copy as much data as possible into the pipe. 63 bytes max.
-	clr a
-	mov dps, a
-	mov dph, #HIGH(rx_ring)	; load DPTR0 with source
-	inc dps
-	mov dptr, IN2BUF	; load DPTR1 with target
-	movx @dptr, a		; in[0] signals that rest of IN is rx data
-	inc dptr
-	inc dps
-	;; loop until we run out of data, or we have copied 64 bytes
-	mov r1, #1		; INbuf size counter
-start_in__loop:
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
-	sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
-	inc rx_ring_out
-	mov dpl, rx_ring_out
-	movx a, @dptr
-	inc dps
-	movx @dptr, a		; write into IN buffer
-	inc dptr
-	inc dps
-	inc r1
-	cjne r1, #64, start_in__loop; loop
-start_in__kick:
-	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
-	;; kick off IN
-	mov dptr, IN2BC
-	mov a, r1
-	jz start_in__done
-	movx @dptr, a
-	;; done
-start_in__done:
-	;acall dump_stat
-	ret
-start_in__do_tx_unthrottle:
-	;; special sequence: send a tx unthrottle message
-	clr DO_TX_UNTHROTTLE
-	clr a
-	mov dps, a
-	mov dptr, IN2BUF
-	mov a, #1
-	movx @dptr, a
-	inc dptr
-	mov a, #2
-	movx @dptr, a
-	mov dptr, IN2BC
-	movx @dptr, a
-	ret
-	
-putchar:
-	clr TI
-	mov SBUF, a
-putchar_wait:
-	jnb TI, putchar_wait
-	clr TI
-	ret
-
-	
-baud_table:			; baud_high, then baud_low
-	;; baud[0]: 110
-	.byte BAUD_HIGH(110)
-	.byte BAUD_LOW(110)
-	;; baud[1]: 300
-	.byte BAUD_HIGH(300)
-	.byte BAUD_LOW(300)
-	;; baud[2]: 1200
-	.byte BAUD_HIGH(1200)
-	.byte BAUD_LOW(1200)
-	;; baud[3]: 2400
-	.byte BAUD_HIGH(2400)
-	.byte BAUD_LOW(2400)
-	;; baud[4]: 4800
-	.byte BAUD_HIGH(4800)
-	.byte BAUD_LOW(4800)
-	;; baud[5]: 9600
-	.byte BAUD_HIGH(9600)
-	.byte BAUD_LOW(9600)
-	;; baud[6]: 19200
-	.byte BAUD_HIGH(19200)
-	.byte BAUD_LOW(19200)
-	;; baud[7]: 38400
-	.byte BAUD_HIGH(38400)
-	.byte BAUD_LOW(38400)
-	;; baud[8]: 57600
-	.byte BAUD_HIGH(57600)
-	.byte BAUD_LOW(57600)
-	;; baud[9]: 115200
-	.byte BAUD_HIGH(115200)
-	.byte BAUD_LOW(115200)
-
-desc_device:
-	.byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
-	.byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-	
-desc_config1:
-	.byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
-	.byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
-	.byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
-	.byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
-	.word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids:	.byte string_langids_end-string_langids
-	.byte 3
-	.word 0
-string_langids_end:
-
-	;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
-	;; *that* is a pain in the ass to encode. And they are little-endian
-	;; too. Use this perl snippet to get the bytecodes:
-	/* while (<>) {
-	    @c = split(//);
-	    foreach $c (@c) {
-	     printf("0x%02x, 0x00, ", ord($c));
-	    }
-	   }
-	*/
-
-string_mfg:	.byte string_mfg_end-string_mfg
-	.byte 3
-;	.byte "ACME usb widgets"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-	
-string_product:	.byte string_product_end-string_product
-	.byte 3
-;	.byte "ACME USB serial widget"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-	
-string_serial:	.byte string_serial_end-string_serial
-	.byte 3
-;	.byte "47"
-	.byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-		
-;;; ring buffer memory
-	;; tx_ring_in+1 is where the next input byte will go
-	;; [tx_ring_out] has been sent
-	;; if tx_ring_in == tx_ring_out, theres no work to do
-	;; there are (tx_ring_in - tx_ring_out) chars to be written
-	;; dont let _in lap _out
-	;;   cannot inc if tx_ring_in+1 == tx_ring_out
-	;;  write [tx_ring_in+1] then tx_ring_in++
-	;;   if (tx_ring_in+1 == tx_ring_out), overflow
-	;;   else tx_ring_in++
-	;;  read/send [tx_ring_out+1], then tx_ring_out++
-
-	;; rx_ring_in works the same way
-	
-	.org 0x1000
-tx_ring:
-	.skip 0x100		; 256 bytes
-rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
diff --git a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.HEX b/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.HEX
deleted file mode 100644
index e9b00d702..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.HEX
+++ /dev/null
@@ -1,87 +0,0 @@
-:03000000020200F9
-:0400230002059B0037
-:050030000000000000CB
-:0400430002010000B6
-:100100000202BA000200000002000000020000002B
-:1001100002000000020000000200000002000000D7
-:100120000200000002000000020485000204B90081
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC907F9474BFF0907F957477
-:10023000EFF07410907F9EF07400907F98F07440FF
-:10024000907F9DF07400907F97F07482907F9EF075
-:10025000907F957403F0907FAFE0D2E0F07401904E
-:100260007FABF0907FAEF0907FAC7404F0907FADE8
-:100270007404F0907FC9F07407907FAFF074209001
-:100280007F9CF07480907F98F07453F59875C83017
-:100290007B059144D2CA759850D2E8D2AFD2AC74E3
-:1002A00000F586907FD67402F0792E7A007B00DB11
-:1002B000FEDAFAD9F67406F080FEC086C082C083EA
-:1002C000C084C085C0E0E591C2E4F591907FAB7435
-:1002D00001F0907FE8E0F9A3E0FAA3E0FBA3E0FCE3
-:1002E000E95460B4000302035DB4406EBA000B121F
-:1002F0000444400302042602042EBA010302042E21
-:10030000BA020302042EBA0303020468BA041EBB35
-:10031000000A907F95E04402F0020426907F98E066
-:1003200054FDF0907F95E054FDF0020426BA0503D9
-:1003300002042EBA0619BB0008E533D39532020435
-:1003400002BB0108E532C3953302040202042EBA4F
-:1003500007058B3402042602042E02042EBA002064
-:10036000B98010907F00E4F0A3F0907FB57402F0A4
-:10037000020426B9820280EBB9810280E602042ED3
-:10038000BA010FBB000302042EBB010302042602C4
-:10039000042EBA030FBB000302042EBB01030204A8
-:1003A0002602042EBA0656BC010F907FD47406F0C4
-:1003B000907FD5745AF0020426BC0212BB006F90E5
-:1003C0007FD47406F0907FD5746CF0020426BC03D1
-:1003D000297404C39B40576055EB2B90068C2582F3
-:1003E000F58274003583F583E0F9A3E0FA907FD4B9
-:1003F000E9F0907FD5EAF002042602042EBA080F35
-:100400007401907F00F07401907FB5F0020426BA69
-:100410000903020426BA0A057400020402BA0B0397
-:1004200002042602042E907FB47402F08009907FAB
-:10043000B4E04401F08000D0E0D085D084D083D0F7
-:1004400082D08632EB20E71EC3940A5019EB232496
-:1004500046F58274063400F583E0F5CBF5CDA3E0D4
-:10046000F5CAF5CCC322D322B94111EB64FF548005
-:10047000FB907F98E0547F4BF0020426907F9BE036
-:1004800064FF020402C086C082C083C084C085C0ED
-:10049000E0E591C2E4F591907FA97404F074209096
-:1004A0007F9CF01205DC7420907F9CF0D0E0D0851A
-:1004B000D084D083D082D08632C086C082C083C030
-:1004C00084C085C0E07410907F9CF0E591C2E4F593
-:1004D00091907FAA7404F0907FC9E0F9E4F58690CA
-:1004E0007DC0758510853284E005860584F0E5843D
-:1004F000B53302800905320586A3D9EC8000907FD0
-:10050000C9F0B16D7420907F9CF0D0E0D085D0848C
-:10051000D083D082D08632E4F586907FBCE020E1A3
-:100520004B907D00E532F0A3E533F0A3E530F0A376
-:10053000E531F0A3E430000104F0A305869010003B
-:100540007910E0A30586F0A30586D9F6058674FC2C
-:10055000F0A305869011007910E0A30586F0A305AD
-:1005600086D9F6E4F586907FBD7426F0222000132C
-:10057000E532B53301220533758310853382E0F50A
-:1005800099D2007400B5340122E533D39532C39576
-:100590003440F5753400D2010205DCC086C082C04B
-:1005A00083C084C085C0E0309907C299C20012059B
-:1005B000703098051205C6C298D0E0D085D084D09E
-:1005C00083D082D086327583118530820582E59989
-:1005D000F0E582B53101220530B1DC227410907F44
-:1005E0009CF0907FB8E020E13E20013CE530B53141
-:1005F0000122E4F5867583110586907E00F0A3053F
-:10060000867901E530B5310280100531853182E00F
-:100610000586F0A3058609B940E97410907F9CF027
-:10062000907FB9E96001F022C201E4F586907E0076
-:100630007401F0A37402F0907FB9F022C299F59989
-:100640003099FDC29922E55EF63CFD8FFEC8FF643D
-:10065000FFB2FFD9FFEDFFF3FFFA12010001FFFF28
-:10066000FF40CD06040189AB01020301090220000D
-:1006700001010080320904000002FFFFFF000705AE
-:10068000820340000107050202400000069406981C
-:1006900006BA06E8040300002203410043004D00AF
-:1006A000450020007500730062002000770069009B
-:1006B000640067006500740073002E03410043006E
-:1006C0004D004500200055005300420020007300FB
-:1006D00065007200690061006C002000770069000D
-:0E06E0006400670065007400060334003700F4
-:00000001FF
diff --git a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.S b/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.S
deleted file mode 100644
index 0b79bbf0a..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/keyspan_pda/xircom_pgs.S
+++ /dev/null
@@ -1,1192 +0,0 @@
-/*  $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- * 
- *  Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- *  the EzUSB microcontroller.
- * 
- *  (C) Copyright 2000 Brian Warner <warner@lothar.com>
- * 
- * 	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
- * 	the Free Software Foundation; either version 2 of the License, or
- * 	(at your option) any later version.
- * 
- *  "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- *  company.
- * 
- *  This serial adapter is basically an EzUSB chip and an RS-232 line driver
- *  in a little widget that has a DB-9 on one end and a USB plug on the other.
- *  It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- *  as a baud-rate generator. The wiring is:
- *   PC0/RxD0 <- rxd (DB9 pin 2)         PC4 <- dsr pin 6
- *   PC1/TxD0 -> txd pin 3               PC5 <- ri  pin 9
- *   PC2      -> rts pin 7               PC6 <- dcd pin 1
- *   PC3      <- cts pin 8               PC7 -> dtr pin 4
- *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
- * 
- * THEORY OF OPERATION:
- *
- *   There are two 256-byte ring buffers, one for tx, one for rx.
- *
- *   EP2out is pure tx data. When it appears, the data is copied into the tx
- *   ring and serial transmission is started if it wasn't already running. The
- *   "tx buffer empty" interrupt may kick off another character if the ring
- *   still has data. If the host is tx-blocked because the ring filled up,
- *   it will request a "tx unthrottle" interrupt. If sending a serial character
- *   empties the ring below the desired threshold, we set a bit that will send
- *   up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- *   EP2in (interrupt) is used to send both rx chars and rx status messages
- *   (only "tx unthrottle" at this time) back up to the host. The first byte
- *   of the rx message indicates data (0) or status msg (1). Status messages
- *   are sent before any data.
- *
- *   Incoming serial characters are put into the rx ring by the serial
- *   interrupt, and the EP2in buffer sent if it wasn't already in transit.
- *   When the EP2in buffer returns, the interrupt prompts us to send more
- *   rx chars (or status messages) if they are pending.
- *
- *   Device control happens through "vendor specific" control messages on EP0.
- *   All messages are destined for the "Interface" (with the index always 0,
- *   so that if their two-port device might someday use similar firmware, we
- *   can use index=1 to refer to the second port). The messages defined are:
- *
- *    bRequest = 0 : set baud/bits/parity
- *               1 : unused
- *               2 : reserved for setting HW flow control (CTSRTS)
- *               3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- *               4 : set break (on/off)
- *               5 : reserved for requesting interrupts on pin state change
- *               6 : query buffer room or chars in tx buffer
- *               7 : request tx unthrottle interrupt
- *
- *  The host-side driver is set to recognize the device ID values stashed in
- *  serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- *  start it running. This firmware will use EzUSB's "renumeration" trick by
- *  simulating a bus disconnect, then reconnect with a different device ID
- *  (encoded in the desc_device descriptor below). The host driver then
- *  recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- *  EzUSB Technical Reference Manual: <http://www.cypress.com/>
- *  8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- *   basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- *   use totally different registers!
- *  USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- *  AnchorChips, for making such an incredibly useful little microcontroller.
- *  KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- *           apart and trace with an ohmmeter.
- *
- * TODO:
- *  lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- *  control. Interrupting host upon change in DCD, etc, counting transitions.
- *  Need to find a safe device id to use (the one used by the Keyspan firmware
- *  under Windows would be ideal.. can anyone figure out what it is?). Parity.
- *  More baud rates. Oh, and the string-descriptor-length silicon bug
- *  workaround should be implemented, but I'm lazy, and the consequence is
- *  that the device name strings that show up in your kernel log will have
- *  lots of trailing binary garbage in them (appears as ????). Device strings
- *  should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- *  -Brian Warner <warner@lothar.com>
- *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTBCFG #0x7f94
-#define PORTCCFG #0x7f95
-#define OEA	#0x7f9c
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
-	.org 0
-	ljmp start
-	;; interrupt vectors
-	.org 23H
-	ljmp serial_int
-	.byte 0
-	
-	.org 43H
-	ljmp USB_Jump_Table
-	.byte 0			; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
-rx_ring_in:	.byte 0
-rx_ring_out:	.byte 0
-tx_ring_in:	.byte 0
-tx_ring_out:	.byte 0
-tx_unthrottle_threshold:	.byte 0
-		
-	.org 0x100H		; wants to be on a page boundary
-USB_Jump_Table:
-	ljmp	ISR_Sudav	; Setup Data Available
-	.byte 0
-	ljmp	0		; Start of Frame
-	.byte 0
-	ljmp	0		; Setup Data Loading
-	.byte 0
-	ljmp	0		; Global Suspend
-	.byte 	0
-	ljmp	0		; USB Reset  	
-	.byte	0
-	ljmp	0		; Reserved
-	.byte	0
-	ljmp	0		; End Point 0 In
-	.byte	0
-	ljmp	0		; End Point 0 Out
-	.byte	0
-	ljmp	0		; End Point 1 In
-	.byte	0
-	ljmp	0		; End Point 1 Out
-	.byte	0
-	ljmp	ISR_Ep2in
-	.byte	0
-	ljmp	ISR_Ep2out
-	.byte	0
-
-
-	.org 0x200
-		
-start:	mov SP,STACK-1 ; set stack
-	;; clear local variables
-	clr a
-	mov tx_ring_in, a
-	mov tx_ring_out, a
-	mov rx_ring_in, a
-	mov rx_ring_out, a
-	mov tx_unthrottle_threshold, a
-	clr TX_RUNNING
-	clr DO_TX_UNTHROTTLE
-	
-	;; clear fifo with "fe"
-	mov r1, 0
-	mov a, #0xfe
-	mov dptr, #tx_ring
-clear_tx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_tx_ring_loop
-
-	mov a, #0xfd
-	mov dptr, #rx_ring
-clear_rx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-;;; on Xircom the STANDBY is wired to PB6 and PC4 
-	mov dptr, PORTBCFG
-        mov a, #0xBf
-        movx @dptr, a
-	mov dptr, PORTCCFG
-        mov a, #0xef
-        movx @dptr, a
-	
-	;; set OEC.4
-        mov a, #0x10
-        mov dptr,OEC
-        movx @dptr,a
-
-        ;; clear PC4
-        mov a, #0x00
-        mov dptr,OUTC
-        movx @dptr,a
-
-	;; set OEB.6
-	mov a, #0x40
-	mov dptr,OEB
-	movx @dptr,a
-
-	;; clear PB6
-	mov a, #0x00
-	mov dptr,OUTB
-	movx @dptr,a
-
-	;; set OEC.[17]
-	mov a, #0x82
-	mov dptr,OEC
-	movx @dptr,a
-
-
-	;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
-	mov dptr, PORTCCFG
-	mov a, #0x03
-	movx @dptr, a
-	
-	;; set up interrupts, autovectoring
-	;; set BKPT
-	mov dptr, USBBAV
-	movx a,@dptr
-	setb acc.0		; AVEN bit to 0
-	movx @dptr, a
-
-	mov a,#0x01		; enable SUDAV:	setup data available (for ep0)
-	mov dptr, USBIRQ
-	movx @dptr, a		; clear SUDAVI
-	mov dptr, USBIEN
-	movx @dptr, a
-	
-	mov dptr, IN07IEN
-	mov a,#0x04		; enable IN2 int
-	movx @dptr, a
-	
-	mov dptr, OUT07IEN
-	mov a,#0x04		; enable OUT2 int
-	movx @dptr, a
-	mov dptr, OUT2BC
-	movx @dptr, a		; arm OUT2
-
-;;	mov a, #0x84		; turn on RTS, DTR
-;;	mov dptr,OUTC
-;;	movx @dptr, a
-
-	mov a, #0x7             ; turn on  DTR
-        mov dptr,USBBAV
-        movx @dptr, a
-
-	mov a, #0x20             ; turn on the RED led 
-        mov dptr,OEA
-        movx @dptr, a
-
-	mov a, #0x80            ; turn on  RTS
-        mov dptr,OUTC
-        movx @dptr, a
-
-	;; setup the serial port. 9600 8N1.
-	mov a,#0x53		; mode 1, enable rx, clear int
-	mov SCON, a
-	;;  using timer2, in 16-bit baud-rate-generator mode
-	;;   (xtal 12MHz, internal fosc 24MHz)
-	;;  RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
-	;;  57600: 0xFFF2.F, say 0xFFF3
-	;;   9600: 0xFFB1.E, say 0xFFB2
-	;;    300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
-	mov r3, #5
-	acall set_baud
-	setb TR2
-	mov SCON, #050h
-	
-#if 0
-	mov r1, #0x40
-	mov a, #0x41
-send:	
-	mov SBUF, a
-	inc a
-	anl a, #0x3F
-	orl a, #0x40
-;	xrl a, #0x02
-wait1:	
-	jnb TI, wait1
-	clr TI
-	djnz r1, send
-;done:	sjmp done
-
-#endif
-	
-	setb EUSB
-	setb EA
-	setb ES0
-	;acall dump_stat
-
-	;; hey, what say we RENUMERATE! (TRM p.62)
-	mov a, #0
-	mov dps, a
-	mov dptr, USBCS
-	mov a, #0x02		; DISCON=0, DISCOE=0, RENUM=1
-	movx @dptr, a
-	;; now presence pin is floating, simulating disconnect. wait 0.5s
-	mov r1, #46
-renum_wait1:
-	mov r2, #0
-renum_wait2:
-	mov r3, #0
-renum_wait3:
-	djnz r3, renum_wait3
-	djnz r2, renum_wait2
-	djnz r1, renum_wait1	; wait about n*(256^2) 6MHz clocks
-	mov a, #0x06		; DISCON=0, DISCOE=1, RENUM=1
-	movx @dptr, a
-	;; we are back online. the host device will now re-query us
-	
-	
-main:	sjmp main
-
-	
-
-ISR_Sudav:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
-	movx @dptr,a
-
-	;; get request type
-	mov dptr, SETUPDAT
-	movx a, @dptr
-	mov r1, a		; r1 = bmRequestType
-	inc dptr
-	movx a, @dptr
-	mov r2, a		; r2 = bRequest
-	inc dptr
-	movx a, @dptr
-	mov r3, a		; r3 = wValueL
-	inc dptr
-	movx a, @dptr
-	mov r4, a		; r4 = wValueH
-
-	;; main switch on bmRequest.type: standard or vendor
-	mov a, r1
-	anl a, #0x60
-	cjne a, #0x00, setup_bmreq_type_not_standard
-	;; standard request: now main switch is on bRequest
-	ljmp setup_bmreq_is_standard
-	
-setup_bmreq_type_not_standard:	
-	;; a still has bmreq&0x60
-	cjne a, #0x40, setup_bmreq_type_not_vendor
-	;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
-	;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
-	cjne r2, #0x00, setup_ctrl_not_00
-	;; 00 is set baud, wValue[0] has baud rate index
-	lcall set_baud		; index in r3, carry set if error
-	jc setup_bmreq_type_not_standard__do_stall
-	ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
-	ljmp setup_stall
-setup_ctrl_not_00:
-	cjne r2, #0x01, setup_ctrl_not_01
-	;; 01 is reserved for set bits (parity). TODO
-	ljmp setup_stall
-setup_ctrl_not_01:
-	cjne r2, #0x02, setup_ctrl_not_02
-	;; 02 is set HW flow control. TODO
-	ljmp setup_stall
-setup_ctrl_not_02:
-	cjne r2, #0x03, setup_ctrl_not_03
-	;; 03 is control pins (RTS, DTR).
-	ljmp control_pins	; will jump to setup_done_ack,
-				;  or setup_return_one_byte
-setup_ctrl_not_03:
-	cjne r2, #0x04, setup_ctrl_not_04
-	;; 04 is send break (really "turn break on/off"). TODO
-	cjne r3, #0x00, setup_ctrl_do_break_on
-	;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	orl a, #0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_do_break_on:
-	;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
-	mov dptr, OUTC
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_not_04:
-	cjne r2, #0x05, setup_ctrl_not_05
-	;; 05 is set desired interrupt bitmap. TODO
-	ljmp setup_stall
-setup_ctrl_not_05:
-	cjne r2, #0x06, setup_ctrl_not_06
-	;; 06 is query room
-	cjne r3, #0x00, setup_ctrl_06_not_00
-	;; 06, wValue[0]=0 is query write_room
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in	; out-1-in = 255 - (in-out)
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
-	cjne r3, #0x01, setup_ctrl_06_not_01
-	;; 06, wValue[0]=1 is query chars_in_buffer
-	mov a, tx_ring_in
-	clr c
-	subb a, tx_ring_out	; in-out
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_01:	
-	ljmp setup_stall
-setup_ctrl_not_06:
-	cjne r2, #0x07, setup_ctrl_not_07
-	;; 07 is request tx unthrottle interrupt
-	mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
-	ljmp setup_done_ack
-setup_ctrl_not_07:
-	ljmp setup_stall
-	
-setup_bmreq_type_not_vendor:
-	ljmp setup_stall
-
-
-setup_bmreq_is_standard:	
-	cjne r2, #0x00, setup_breq_not_00
-	;; 00:	Get_Status (sub-switch on bmRequestType: device, ep, int)
-	cjne r1, #0x80, setup_Get_Status_not_device
-	;; Get_Status(device)
-	;;  are we self-powered? no. can we do remote wakeup? no
-	;;   so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
-	mov dptr, IN0BUF
-	clr a
-	movx @dptr, a
-	inc dptr
-	movx @dptr, a
-	mov dptr, IN0BC
-	mov a, #2
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Status_not_device:
-	cjne r1, #0x82, setup_Get_Status_not_endpoint
-	;; Get_Status(endpoint)
-	;;  must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
-	;; for now: cheat. TODO
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
-	cjne r1, #0x81, setup_Get_Status_not_interface
-	;; Get_Status(interface): return two zeros
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:	
-	ljmp setup_stall
-	
-setup_breq_not_00:
-	cjne r2, #0x01, setup_breq_not_01
-	;; 01:	Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Clear_Feature_not_stall
-	;; Clear_Feature(stall). should clear a stall bit. TODO
-	ljmp setup_stall
-setup_Clear_Feature_not_stall:
-	cjne r3, #0x01, setup_Clear_Feature_not_rwake
-	;; Clear_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_01:
-	cjne r2, #0x03, setup_breq_not_03
-	;; 03:	Set_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Set_Feature_not_stall
-	;; Set_Feature(stall). Should set a stall bit. TODO
-	ljmp setup_stall
-setup_Set_Feature_not_stall:
-	cjne r3, #0x01, setup_Set_Feature_not_rwake
-	;; Set_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_03:	
-	cjne r2, #0x06, setup_breq_not_06
-	;; 06:	Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
-	cjne r4, #0x01, setup_Get_Descriptor_not_device
-	;; Get_Descriptor(device)
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_device)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_device)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
-	cjne r4, #0x02, setup_Get_Descriptor_not_config
-	;; Get_Descriptor(config[n])
-	cjne r3, #0x00, setup_stall; only handle n==0
-	;; Get_Descriptor(config[0])
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_config1)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_config1)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
-	cjne r4, #0x03, setup_Get_Descriptor_not_string
-	;; Get_Descriptor(string[wValueL])
-	;;  if (wValueL >= maxstrings) stall
-	mov a, #((desc_strings_end-desc_strings)/2)
-	clr c
-	subb a,r3		; a=4, r3 = 0..3 . if a<=0 then stall
-	jc  setup_stall
-	jz  setup_stall
-	mov a, r3
-	add a, r3		; a = 2*wValueL
-	mov dptr, #desc_strings
-	add a, dpl
-	mov dpl, a
-	mov a, #0
-	addc a, dph
-	mov dph, a		; dph = desc_strings[a]. big endian! (handy)
-	;; it looks like my adapter uses a revision of the EZUSB that
-	;; contains "rev D errata number 8", as hinted in the EzUSB example
-	;; code. I cannot find an actual errata description on the Cypress
-	;; web site, but from the example code it looks like this bug causes
-	;; the length of string descriptors to be read incorrectly, possibly
-	;; sending back more characters than the descriptor has. The workaround
-	;; is to manually send out all of the data. The consequence of not
-	;; using the workaround is that the strings gathered by the kernel
-	;; driver are too long and are filled with trailing garbage (including
-	;; leftover strings). Writing this out by hand is a nuisance, so for
-	;; now I will just live with the bug.
-	movx a, @dptr
-	mov r1, a
-	inc dptr
-	movx a, @dptr
-	mov r2, a
-	mov dptr, SUDPTRH
-	mov a, r1
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, r2
-	movx @dptr, a
-	;; done
-	ljmp setup_done_ack
-	
-setup_Get_Descriptor_not_string:
-	ljmp setup_stall
-	
-setup_breq_not_06:
-	cjne r2, #0x08, setup_breq_not_08
-	;; Get_Configuration. always 1. return one byte.
-	;; this is reusable
-	mov a, #1
-setup_return_one_byte:	
-	mov dptr, IN0BUF
-	movx @dptr, a
-	mov a, #1
-	mov dptr, IN0BC
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_breq_not_08:
-	cjne r2, #0x09, setup_breq_not_09
-	;; 09: Set_Configuration. ignored.
-	ljmp setup_done_ack
-setup_breq_not_09:
-	cjne r2, #0x0a, setup_breq_not_0a
-	;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
-	;;  since we only have one interface, ignore wIndexL, return a 0
-	mov a, #0
-	ljmp setup_return_one_byte
-setup_breq_not_0a:
-	cjne r2, #0x0b, setup_breq_not_0b
-	;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
-	ljmp setup_done_ack
-setup_breq_not_0b:
-	ljmp setup_stall
-
-		
-setup_done_ack:	
-	;; now clear HSNAK
-	mov dptr, EP0CS
-	mov a, #0x02
-	movx @dptr, a
-	sjmp setup_done
-setup_stall:	
-	;; unhandled. STALL
-	;EP0CS |= bmEPSTALL
-	mov dptr, EP0CS
-	movx a, @dptr
-	orl a, EP0STALLbit
-	movx @dptr, a
-	sjmp setup_done
-	
-setup_done:	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-;;; ==============================================================
-	
-set_baud:			; baud index in r3
-	;; verify a < 10
-	mov a, r3
-	jb ACC.7, set_baud__badbaud
-	clr c
-	subb a, #10
-	jnc set_baud__badbaud
-	mov a, r3
-	rl a			; a = index*2
-	add a, #LOW(baud_table)
-	mov dpl, a
-	mov a, #HIGH(baud_table)
-	addc a, #0
-	mov dph, a
-	;; TODO: shut down xmit/receive
-	;; TODO: wait for current xmit char to leave
-	;; TODO: shut down timer to avoid partial-char glitch
-	movx a,@dptr		; BAUD_HIGH
-	mov RCAP2H, a
-	mov TH2, a
-	inc dptr
-	movx a,@dptr		; BAUD_LOW
-	mov RCAP2L, a
-	mov TL2, a
-	;; TODO: restart xmit/receive
-	;; TODO: reenable interrupts, resume tx if pending
-	clr c			; c=0: success
-	ret
-set_baud__badbaud:
-	setb c			; c=1: failure
-	ret
-	
-;;; ==================================================
-control_pins:
-	cjne r1, #0x41, control_pins_in
-control_pins_out:
-		;TODO BKPT is DTR
-	mov a, r3 ; wValue[0] holds new bits:	b7 is new RTS
-	xrl a, #0xff		; 1 means active, 0V, +12V ?
-	anl a, #0x80
-	mov r3, a
-	mov dptr, OUTC
-	movx a, @dptr		; only change bit 7 
-	anl a, #0x7F		; ~0x84
-	orl a, r3
-	movx @dptr, a		; other pins are inputs, bits ignored
-	ljmp setup_done_ack
-control_pins_in:
-	mov dptr, PINSC
-	movx a, @dptr
-	xrl a, #0xff
-	ljmp setup_return_one_byte
-
-;;; ========================================
-	
-ISR_Ep2in:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-	;; do stuff
-	lcall start_in
-
-	mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-ISR_Ep2out:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-
-        mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-
-	;; copy data into buffer. for now, assume we will have enough space
-	mov dptr, OUT2BC	; get byte count
-	movx a,@dptr
-	mov r1, a
-	clr a
-	mov dps, a
-	mov dptr, OUT2BUF	; load DPTR0 with source
-	mov dph1, #HIGH(tx_ring)	; load DPTR1 with target
-	mov dpl1, tx_ring_in
-OUT_loop:
-	movx a,@dptr		; read
-	inc dps			; switch to DPTR1: target
-	inc dpl1		; target = tx_ring_in+1
-	movx @dptr,a		; store
-	mov a,dpl1
-	cjne a, tx_ring_out, OUT_no_overflow
-	sjmp OUT_overflow
-OUT_no_overflow:	
-	inc tx_ring_in		; tx_ring_in++
-	inc dps			; switch to DPTR0: source
-	inc dptr
-	djnz r1, OUT_loop
-	sjmp OUT_done
-OUT_overflow:
-	;; signal overflow
-	;; fall through
-OUT_done:	
-	;; ack
-	mov dptr,OUT2BC
-	movx @dptr,a
-
-	;; start tx
-	acall maybe_start_tx
-	;acall dump_stat
-
-        mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-dump_stat:
-	;; fill in EP4in with a debugging message:
-	;;   tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
-	;;   tx_active
-	;;   tx_ring[0..15]
-	;;   0xfc
-	;;   rx_ring[0..15]
-	clr a
-	mov dps, a
-	
-	mov dptr, IN4CS
-	movx a, @dptr
-	jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
-	mov dptr, IN4BUF
-	
-	mov a, tx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, tx_ring_out
-	movx @dptr, a
-	inc dptr
-
-	mov a, rx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, rx_ring_out
-	movx @dptr, a
-	inc dptr
-	
-	clr a
-	jnb TX_RUNNING, dump_stat__no_tx_running
-	inc a
-dump_stat__no_tx_running:
-	movx @dptr, a
-	inc dptr
-	;; tx_ring[0..15]
-	inc dps
-	mov dptr, #tx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__tx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__tx_ring_loop
-	inc dps
-	
-	mov a, #0xfc
-	movx @dptr, a
-	inc dptr
-	
-	;; rx_ring[0..15]
-	inc dps
-	mov dptr, #rx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__rx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__rx_ring_loop
-	
-	;; now send it
-	clr a
-	mov dps, a
-	mov dptr, IN4BC
-	mov a, #38
-	movx @dptr, a
-dump_stat__done:	
-	ret
-		
-;;; ============================================================
-	
-maybe_start_tx:
-	;; make sure the tx process is running.
-	jb TX_RUNNING, start_tx_done
-start_tx:
-	;; is there work to be done?
-	mov a, tx_ring_in
-	cjne a,tx_ring_out, start_tx__work
-	ret			; no work
-start_tx__work:	
-	;; tx was not running. send the first character, setup the TI int
-	inc tx_ring_out		; [++tx_ring_out]
-	mov dph, #HIGH(tx_ring)
-	mov dpl, tx_ring_out
-	movx a, @dptr
-	mov sbuf, a
-	setb TX_RUNNING
-start_tx_done:
-	;; can we unthrottle the host tx process?
-	;;  step 1: do we care?
-	mov a, #0
-	cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
-	;; nope
-start_tx_really_done:
-	ret
-start_tx__maybe_unthrottle_tx:
-	;;  step 2: is there now room?
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in
-	;; a is now write_room. If thresh >= a, we can unthrottle
-	clr c
-	subb a, tx_unthrottle_threshold
-	jc start_tx_really_done	; nope
-	;; yes, we can unthrottle. remove the threshold and mark a request
-	mov tx_unthrottle_threshold, #0
-	setb DO_TX_UNTHROTTLE
-	;; prod rx, which will actually send the message when in2 becomes free
-	ljmp start_in
-	
-
-serial_int:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	jnb TI, serial_int__not_tx
-	;; tx finished. send another character if we have one
-	clr TI			; clear int
-	clr TX_RUNNING
-	lcall start_tx
-serial_int__not_tx:
-	jnb RI, serial_int__not_rx
-	lcall get_rx_char
-	clr RI			; clear int
-serial_int__not_rx:	
-	;; return
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-get_rx_char:
-	mov dph, #HIGH(rx_ring)
-	mov dpl, rx_ring_in
-	inc dpl			; target = rx_ring_in+1
-	mov a, sbuf
-	movx @dptr, a
-	;; check for overflow before incrementing rx_ring_in
-	mov a, dpl
-	cjne a, rx_ring_out, get_rx_char__no_overflow
-	;; signal overflow
-	ret
-get_rx_char__no_overflow:	
-	inc rx_ring_in
-	;; kick off USB INpipe
-	acall start_in
-	ret
-
-start_in:
-	;; check if the inpipe is already running.
-	mov  a,#0x10
-	mov dptr, OEA
-	movx @dptr,a
-
-	mov dptr, IN2CS
-	movx a, @dptr
-	jb acc.1, start_in__done; int will handle it
-	jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
-	;; see if there is any work to do. a serial interrupt might occur
-	;; during this sequence?
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_in__have_work
-	ret			; nope
-start_in__have_work:	
-	;; now copy as much data as possible into the pipe. 63 bytes max.
-	clr a
-	mov dps, a
-	mov dph, #HIGH(rx_ring)	; load DPTR0 with source
-	inc dps
-	mov dptr, IN2BUF	; load DPTR1 with target
-	movx @dptr, a		; in[0] signals that rest of IN is rx data
-	inc dptr
-	inc dps
-	;; loop until we run out of data, or we have copied 64 bytes
-	mov r1, #1		; INbuf size counter
-start_in__loop:
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
-	sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
-	inc rx_ring_out
-	mov dpl, rx_ring_out
-	movx a, @dptr
-	inc dps
-	movx @dptr, a		; write into IN buffer
-	inc dptr
-	inc dps
-	inc r1
-	cjne r1, #64, start_in__loop; loop
-start_in__kick:
-	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
-	;; kick off IN
-	mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
-	mov dptr, IN2BC
-	mov a, r1
-	jz start_in__done
-	movx @dptr, a
-	;; done
-start_in__done:
-	;acall dump_stat
-	ret
-start_in__do_tx_unthrottle:
-	;; special sequence: send a tx unthrottle message
-	clr DO_TX_UNTHROTTLE
-	clr a
-	mov dps, a
-	mov dptr, IN2BUF
-	mov a, #1
-	movx @dptr, a
-	inc dptr
-	mov a, #2
-	movx @dptr, a
-	mov dptr, IN2BC
-	movx @dptr, a
-	ret
-	
-putchar:
-	clr TI
-	mov SBUF, a
-putchar_wait:
-	jnb TI, putchar_wait
-	clr TI
-	ret
-
-	
-baud_table:			; baud_high, then baud_low
-	;; baud[0]: 110
-	.byte BAUD_HIGH(110)
-	.byte BAUD_LOW(110)
-	;; baud[1]: 300
-	.byte BAUD_HIGH(300)
-	.byte BAUD_LOW(300)
-	;; baud[2]: 1200
-	.byte BAUD_HIGH(1200)
-	.byte BAUD_LOW(1200)
-	;; baud[3]: 2400
-	.byte BAUD_HIGH(2400)
-	.byte BAUD_LOW(2400)
-	;; baud[4]: 4800
-	.byte BAUD_HIGH(4800)
-	.byte BAUD_LOW(4800)
-	;; baud[5]: 9600
-	.byte BAUD_HIGH(9600)
-	.byte BAUD_LOW(9600)
-	;; baud[6]: 19200
-	.byte BAUD_HIGH(19200)
-	.byte BAUD_LOW(19200)
-	;; baud[7]: 38400
-	.byte BAUD_HIGH(38400)
-	.byte BAUD_LOW(38400)
-	;; baud[8]: 57600
-	.byte BAUD_HIGH(57600)
-	.byte BAUD_LOW(57600)
-	;; baud[9]: 115200
-	.byte BAUD_HIGH(115200)
-	.byte BAUD_LOW(115200)
-
-desc_device:
-	.byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
-	.byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-	
-desc_config1:
-	.byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
-	.byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
-	.byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
-	.byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
-	.word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids:	.byte string_langids_end-string_langids
-	.byte 3
-	.word 0
-string_langids_end:
-
-	;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
-	;; *that* is a pain in the ass to encode. And they are little-endian
-	;; too. Use this perl snippet to get the bytecodes:
-	/* while (<>) {
-	    @c = split(//);
-	    foreach $c (@c) {
-	     printf("0x%02x, 0x00, ", ord($c));
-	    }
-	   }
-	*/
-
-string_mfg:	.byte string_mfg_end-string_mfg
-	.byte 3
-;	.byte "ACME usb widgets"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-	
-string_product:	.byte string_product_end-string_product
-	.byte 3
-;	.byte "ACME USB serial widget"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-	
-string_serial:	.byte string_serial_end-string_serial
-	.byte 3
-;	.byte "47"
-	.byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-		
-;;; ring buffer memory
-	;; tx_ring_in+1 is where the next input byte will go
-	;; [tx_ring_out] has been sent
-	;; if tx_ring_in == tx_ring_out, theres no work to do
-	;; there are (tx_ring_in - tx_ring_out) chars to be written
-	;; dont let _in lap _out
-	;;   cannot inc if tx_ring_in+1 == tx_ring_out
-	;;  write [tx_ring_in+1] then tx_ring_in++
-	;;   if (tx_ring_in+1 == tx_ring_out), overflow
-	;;   else tx_ring_in++
-	;;  read/send [tx_ring_out+1], then tx_ring_out++
-
-	;; rx_ring_in works the same way
-	
-	.org 0x1000
-tx_ring:
-	.skip 0x100		; 256 bytes
-rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
diff --git a/helpers/DATA/linux-lts-utopic/firmware/whiteheat.HEX b/helpers/DATA/linux-lts-utopic/firmware/whiteheat.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/whiteheat.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader.HEX b/helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader_debug.HEX b/helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader_debug.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux-lts-utopic/firmware/whiteheat_loader_debug.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux-lts-vivid/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch b/helpers/DATA/linux-lts-vivid/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch
deleted file mode 100644
index 9e70d675a..000000000
--- a/helpers/DATA/linux-lts-vivid/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 2b248dae913fb3e556f3fe761970291ceea0442c Mon Sep 17 00:00:00 2001
-From: Paolo Valente <paolo.valente@unimore.it>
-Date: Sat, 6 Jun 2015 17:56:31 +0200
-Subject: [PATCH 1/3] block: cgroups, kconfig, build bits for BFQ-v7r8-3.19.0
-
-Update Kconfig.iosched and do the related Makefile changes to include
-kernel configuration options for BFQ. Also add the bfqio controller
-to the cgroups subsystem.
-
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
----
- block/Kconfig.iosched         | 32 ++++++++++++++++++++++++++++++++
- block/Makefile                |  1 +
- include/linux/cgroup_subsys.h |  4 ++++
- 3 files changed, 37 insertions(+)
-
-diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
-index 421bef9..0ee5f0f 100644
---- a/block/Kconfig.iosched
-+++ b/block/Kconfig.iosched
-@@ -39,6 +39,27 @@ config CFQ_GROUP_IOSCHED
- 	---help---
- 	  Enable group IO scheduling in CFQ.
- 
-+config IOSCHED_BFQ
-+	tristate "BFQ I/O scheduler"
-+	default n
-+	---help---
-+	  The BFQ I/O scheduler tries to distribute bandwidth among
-+	  all processes according to their weights.
-+	  It aims at distributing the bandwidth as desired, independently of
-+	  the disk parameters and with any workload. It also tries to
-+	  guarantee low latency to interactive and soft real-time
-+	  applications. If compiled built-in (saying Y here), BFQ can
-+	  be configured to support hierarchical scheduling.
-+
-+config CGROUP_BFQIO
-+	bool "BFQ hierarchical scheduling support"
-+	depends on CGROUPS && IOSCHED_BFQ=y
-+	default n
-+	---help---
-+	  Enable hierarchical scheduling in BFQ, using the cgroups
-+	  filesystem interface.  The name of the subsystem will be
-+	  bfqio.
-+
- choice
- 	prompt "Default I/O scheduler"
- 	default DEFAULT_CFQ
-@@ -52,6 +73,16 @@ choice
- 	config DEFAULT_CFQ
- 		bool "CFQ" if IOSCHED_CFQ=y
- 
-+	config DEFAULT_BFQ
-+		bool "BFQ" if IOSCHED_BFQ=y
-+		help
-+		  Selects BFQ as the default I/O scheduler which will be
-+		  used by default for all block devices.
-+		  The BFQ I/O scheduler aims at distributing the bandwidth
-+		  as desired, independently of the disk parameters and with
-+		  any workload. It also tries to guarantee low latency to
-+		  interactive and soft real-time applications.
-+
- 	config DEFAULT_NOOP
- 		bool "No-op"
- 
-@@ -61,6 +92,7 @@ config DEFAULT_IOSCHED
- 	string
- 	default "deadline" if DEFAULT_DEADLINE
- 	default "cfq" if DEFAULT_CFQ
-+	default "bfq" if DEFAULT_BFQ
- 	default "noop" if DEFAULT_NOOP
- 
- endmenu
-diff --git a/block/Makefile b/block/Makefile
-index 00ecc97..1ed86d5 100644
---- a/block/Makefile
-+++ b/block/Makefile
-@@ -18,6 +18,7 @@ obj-$(CONFIG_BLK_DEV_THROTTLING)	+= blk-throttle.o
- obj-$(CONFIG_IOSCHED_NOOP)	+= noop-iosched.o
- obj-$(CONFIG_IOSCHED_DEADLINE)	+= deadline-iosched.o
- obj-$(CONFIG_IOSCHED_CFQ)	+= cfq-iosched.o
-+obj-$(CONFIG_IOSCHED_BFQ)	+= bfq-iosched.o
- 
- obj-$(CONFIG_BLOCK_COMPAT)	+= compat_ioctl.o
- obj-$(CONFIG_BLK_CMDLINE_PARSER)	+= cmdline-parser.o
-diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
-index 98c4f9b..13b010d 100644
---- a/include/linux/cgroup_subsys.h
-+++ b/include/linux/cgroup_subsys.h
-@@ -35,6 +35,10 @@ SUBSYS(net_cls)
- SUBSYS(blkio)
- #endif
- 
-+#if IS_ENABLED(CONFIG_CGROUP_BFQIO)
-+SUBSYS(bfqio)
-+#endif
-+
- #if IS_ENABLED(CONFIG_CGROUP_PERF)
- SUBSYS(perf_event)
- #endif
--- 
-2.1.4
-
diff --git a/helpers/DATA/linux-lts-vivid/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch b/helpers/DATA/linux-lts-vivid/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch
deleted file mode 100644
index 1f3a08902..000000000
--- a/helpers/DATA/linux-lts-vivid/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch
+++ /dev/null
@@ -1,6952 +0,0 @@
-From aeda87684a7306350bce27db3a0112e31091c0a7 Mon Sep 17 00:00:00 2001
-From: Paolo Valente <paolo.valente@unimore.it>
-Date: Thu, 9 May 2013 19:10:02 +0200
-Subject: [PATCH 2/3] block: introduce the BFQ-v7r8 I/O sched for 3.19.0
-
-Add the BFQ-v7r8 I/O scheduler to 3.19.0.
-The general structure is borrowed from CFQ, as much of the code for
-handling I/O contexts. Over time, several useful features have been
-ported from CFQ as well (details in the changelog in README.BFQ). A
-(bfq_)queue is associated to each task doing I/O on a device, and each
-time a scheduling decision has to be made a queue is selected and served
-until it expires.
-
-    - Slices are given in the service domain: tasks are assigned
-      budgets, measured in number of sectors. Once got the disk, a task
-      must however consume its assigned budget within a configurable
-      maximum time (by default, the maximum possible value of the
-      budgets is automatically computed to comply with this timeout).
-      This allows the desired latency vs "throughput boosting" tradeoff
-      to be set.
-
-    - Budgets are scheduled according to a variant of WF2Q+, implemented
-      using an augmented rb-tree to take eligibility into account while
-      preserving an O(log N) overall complexity.
-
-    - A low-latency tunable is provided; if enabled, both interactive
-      and soft real-time applications are guaranteed a very low latency.
-
-    - Latency guarantees are preserved also in the presence of NCQ.
-
-    - Also with flash-based devices, a high throughput is achieved
-      while still preserving latency guarantees.
-
-    - BFQ features Early Queue Merge (EQM), a sort of fusion of the
-      cooperating-queue-merging and the preemption mechanisms present
-      in CFQ. EQM is in fact a unified mechanism that tries to get a
-      sequential read pattern, and hence a high throughput, with any
-      set of processes performing interleaved I/O over a contiguous
-      sequence of sectors.
-
-    - BFQ supports full hierarchical scheduling, exporting a cgroups
-      interface.  Since each node has a full scheduler, each group can
-      be assigned its own weight.
-
-    - If the cgroups interface is not used, only I/O priorities can be
-      assigned to processes, with ioprio values mapped to weights
-      with the relation weight = IOPRIO_BE_NR - ioprio.
-
-    - ioprio classes are served in strict priority order, i.e., lower
-      priority queues are not served as long as there are higher
-      priority queues.  Among queues in the same class the bandwidth is
-      distributed in proportion to the weight of each queue. A very
-      thin extra bandwidth is however guaranteed to the Idle class, to
-      prevent it from starving.
-
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
----
- block/bfq-cgroup.c  |  936 +++++++++++++
- block/bfq-ioc.c     |   36 +
- block/bfq-iosched.c | 3898 +++++++++++++++++++++++++++++++++++++++++++++++++++
- block/bfq-sched.c   | 1208 ++++++++++++++++
- block/bfq.h         |  771 ++++++++++
- 5 files changed, 6849 insertions(+)
- create mode 100644 block/bfq-cgroup.c
- create mode 100644 block/bfq-ioc.c
- create mode 100644 block/bfq-iosched.c
- create mode 100644 block/bfq-sched.c
- create mode 100644 block/bfq.h
-
-diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
-new file mode 100644
-index 0000000..11e2f1d
---- /dev/null
-+++ b/block/bfq-cgroup.c
-@@ -0,0 +1,936 @@
-+/*
-+ * BFQ: CGROUPS support.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Licensed under the GPL-2 as detailed in the accompanying COPYING.BFQ
-+ * file.
-+ */
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+
-+static DEFINE_MUTEX(bfqio_mutex);
-+
-+static bool bfqio_is_removed(struct bfqio_cgroup *bgrp)
-+{
-+	return bgrp ? !bgrp->online : false;
-+}
-+
-+static struct bfqio_cgroup bfqio_root_cgroup = {
-+	.weight = BFQ_DEFAULT_GRP_WEIGHT,
-+	.ioprio = BFQ_DEFAULT_GRP_IOPRIO,
-+	.ioprio_class = BFQ_DEFAULT_GRP_CLASS,
-+};
-+
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
-+{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
-+}
-+
-+static struct bfqio_cgroup *css_to_bfqio(struct cgroup_subsys_state *css)
-+{
-+	return css ? container_of(css, struct bfqio_cgroup, css) : NULL;
-+}
-+
-+/*
-+ * Search the bfq_group for bfqd into the hash table (by now only a list)
-+ * of bgrp.  Must be called under rcu_read_lock().
-+ */
-+static struct bfq_group *bfqio_lookup_group(struct bfqio_cgroup *bgrp,
-+					    struct bfq_data *bfqd)
-+{
-+	struct bfq_group *bfqg;
-+	void *key;
-+
-+	hlist_for_each_entry_rcu(bfqg, &bgrp->group_data, group_node) {
-+		key = rcu_dereference(bfqg->bfqd);
-+		if (key == bfqd)
-+			return bfqg;
-+	}
-+
-+	return NULL;
-+}
-+
-+static inline void bfq_group_init_entity(struct bfqio_cgroup *bgrp,
-+					 struct bfq_group *bfqg)
-+{
-+	struct bfq_entity *entity = &bfqg->entity;
-+
-+	/*
-+	 * If the weight of the entity has never been set via the sysfs
-+	 * interface, then bgrp->weight == 0. In this case we initialize
-+	 * the weight from the current ioprio value. Otherwise, the group
-+	 * weight, if set, has priority over the ioprio value.
-+	 */
-+	if (bgrp->weight == 0) {
-+		entity->new_weight = bfq_ioprio_to_weight(bgrp->ioprio);
-+		entity->new_ioprio = bgrp->ioprio;
-+	} else {
-+		if (bgrp->weight < BFQ_MIN_WEIGHT ||
-+		    bgrp->weight > BFQ_MAX_WEIGHT) {
-+			printk(KERN_CRIT "bfq_group_init_entity: "
-+					 "bgrp->weight %d\n", bgrp->weight);
-+			BUG();
-+		}
-+		entity->new_weight = bgrp->weight;
-+		entity->new_ioprio = bfq_weight_to_ioprio(bgrp->weight);
-+	}
-+	entity->orig_weight = entity->weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class = bgrp->ioprio_class;
-+	entity->my_sched_data = &bfqg->sched_data;
-+	bfqg->active_entities = 0;
-+}
-+
-+static inline void bfq_group_set_parent(struct bfq_group *bfqg,
-+					struct bfq_group *parent)
-+{
-+	struct bfq_entity *entity;
-+
-+	BUG_ON(parent == NULL);
-+	BUG_ON(bfqg == NULL);
-+
-+	entity = &bfqg->entity;
-+	entity->parent = parent->my_entity;
-+	entity->sched_data = &parent->sched_data;
-+}
-+
-+/**
-+ * bfq_group_chain_alloc - allocate a chain of groups.
-+ * @bfqd: queue descriptor.
-+ * @css: the leaf cgroup_subsys_state this chain starts from.
-+ *
-+ * Allocate a chain of groups starting from the one belonging to
-+ * @cgroup up to the root cgroup.  Stop if a cgroup on the chain
-+ * to the root has already an allocated group on @bfqd.
-+ */
-+static struct bfq_group *bfq_group_chain_alloc(struct bfq_data *bfqd,
-+					       struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *prev = NULL, *leaf = NULL;
-+
-+	for (; css != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		if (bfqg != NULL) {
-+			/*
-+			 * All the cgroups in the path from there to the
-+			 * root must have a bfq_group for bfqd, so we don't
-+			 * need any more allocations.
-+			 */
-+			break;
-+		}
-+
-+		bfqg = kzalloc(sizeof(*bfqg), GFP_ATOMIC);
-+		if (bfqg == NULL)
-+			goto cleanup;
-+
-+		bfq_group_init_entity(bgrp, bfqg);
-+		bfqg->my_entity = &bfqg->entity;
-+
-+		if (leaf == NULL) {
-+			leaf = bfqg;
-+			prev = leaf;
-+		} else {
-+			bfq_group_set_parent(prev, bfqg);
-+			/*
-+			 * Build a list of allocated nodes using the bfqd
-+			 * filed, that is still unused and will be
-+			 * initialized only after the node will be
-+			 * connected.
-+			 */
-+			prev->bfqd = bfqg;
-+			prev = bfqg;
-+		}
-+	}
-+
-+	return leaf;
-+
-+cleanup:
-+	while (leaf != NULL) {
-+		prev = leaf;
-+		leaf = leaf->bfqd;
-+		kfree(prev);
-+	}
-+
-+	return NULL;
-+}
-+
-+/**
-+ * bfq_group_chain_link - link an allocated group chain to a cgroup
-+ *                        hierarchy.
-+ * @bfqd: the queue descriptor.
-+ * @css: the leaf cgroup_subsys_state to start from.
-+ * @leaf: the leaf group (to be associated to @cgroup).
-+ *
-+ * Try to link a chain of groups to a cgroup hierarchy, connecting the
-+ * nodes bottom-up, so we can be sure that when we find a cgroup in the
-+ * hierarchy that already as a group associated to @bfqd all the nodes
-+ * in the path to the root cgroup have one too.
-+ *
-+ * On locking: the queue lock protects the hierarchy (there is a hierarchy
-+ * per device) while the bfqio_cgroup lock protects the list of groups
-+ * belonging to the same cgroup.
-+ */
-+static void bfq_group_chain_link(struct bfq_data *bfqd,
-+				 struct cgroup_subsys_state *css,
-+				 struct bfq_group *leaf)
-+{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *next, *prev = NULL;
-+	unsigned long flags;
-+
-+	assert_spin_locked(bfqd->queue->queue_lock);
-+
-+	for (; css != NULL && leaf != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+		next = leaf->bfqd;
-+
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		BUG_ON(bfqg != NULL);
-+
-+		spin_lock_irqsave(&bgrp->lock, flags);
-+
-+		rcu_assign_pointer(leaf->bfqd, bfqd);
-+		hlist_add_head_rcu(&leaf->group_node, &bgrp->group_data);
-+		hlist_add_head(&leaf->bfqd_node, &bfqd->group_list);
-+
-+		spin_unlock_irqrestore(&bgrp->lock, flags);
-+
-+		prev = leaf;
-+		leaf = next;
-+	}
-+
-+	BUG_ON(css == NULL && leaf != NULL);
-+	if (css != NULL && prev != NULL) {
-+		bgrp = css_to_bfqio(css);
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		bfq_group_set_parent(prev, bfqg);
-+	}
-+}
-+
-+/**
-+ * bfq_find_alloc_group - return the group associated to @bfqd in @cgroup.
-+ * @bfqd: queue descriptor.
-+ * @cgroup: cgroup being searched for.
-+ *
-+ * Return a group associated to @bfqd in @cgroup, allocating one if
-+ * necessary.  When a group is returned all the cgroups in the path
-+ * to the root have a group associated to @bfqd.
-+ *
-+ * If the allocation fails, return the root group: this breaks guarantees
-+ * but is a safe fallback.  If this loss becomes a problem it can be
-+ * mitigated using the equivalent weight (given by the product of the
-+ * weights of the groups in the path from @group to the root) in the
-+ * root scheduler.
-+ *
-+ * We allocate all the missing nodes in the path from the leaf cgroup
-+ * to the root and we connect the nodes only after all the allocations
-+ * have been successful.
-+ */
-+static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
-+					      struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct bfq_group *bfqg;
-+
-+	bfqg = bfqio_lookup_group(bgrp, bfqd);
-+	if (bfqg != NULL)
-+		return bfqg;
-+
-+	bfqg = bfq_group_chain_alloc(bfqd, css);
-+	if (bfqg != NULL)
-+		bfq_group_chain_link(bfqd, css, bfqg);
-+	else
-+		bfqg = bfqd->root_group;
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_bfqq_move - migrate @bfqq to @bfqg.
-+ * @bfqd: queue descriptor.
-+ * @bfqq: the queue to move.
-+ * @entity: @bfqq's entity.
-+ * @bfqg: the group to move to.
-+ *
-+ * Move @bfqq to @bfqg, deactivating it from its old group and reactivating
-+ * it on the new one.  Avoid putting the entity on the old group idle tree.
-+ *
-+ * Must be called under the queue lock; the cgroup owning @bfqg must
-+ * not disappear (by now this just means that we are called under
-+ * rcu_read_lock()).
-+ */
-+static void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			  struct bfq_entity *entity, struct bfq_group *bfqg)
-+{
-+	int busy, resume;
-+
-+	busy = bfq_bfqq_busy(bfqq);
-+	resume = !RB_EMPTY_ROOT(&bfqq->sort_list);
-+
-+	BUG_ON(resume && !entity->on_st);
-+	BUG_ON(busy && !resume && entity->on_st &&
-+	       bfqq != bfqd->in_service_queue);
-+
-+	if (busy) {
-+		BUG_ON(atomic_read(&bfqq->ref) < 2);
-+
-+		if (!resume)
-+			bfq_del_bfqq_busy(bfqd, bfqq, 0);
-+		else
-+			bfq_deactivate_bfqq(bfqd, bfqq, 0);
-+	} else if (entity->on_st)
-+		bfq_put_idle_entity(bfq_entity_service_tree(entity), entity);
-+
-+	/*
-+	 * Here we use a reference to bfqg.  We don't need a refcounter
-+	 * as the cgroup reference will not be dropped, so that its
-+	 * destroy() callback will not be invoked.
-+	 */
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
-+
-+	if (busy && resume)
-+		bfq_activate_bfqq(bfqd, bfqq);
-+
-+	if (bfqd->in_service_queue == NULL && !bfqd->rq_in_driver)
-+		bfq_schedule_dispatch(bfqd);
-+}
-+
-+/**
-+ * __bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bfqd: the queue descriptor.
-+ * @bic: the bic to move.
-+ * @cgroup: the cgroup to move to.
-+ *
-+ * Move bic to cgroup, assuming that bfqd->queue is locked; the caller
-+ * has to make sure that the reference to cgroup is valid across the call.
-+ *
-+ * NOTE: an alternative approach might have been to store the current
-+ * cgroup in bfqq and getting a reference to it, reducing the lookup
-+ * time here, at the price of slightly more complex code.
-+ */
-+static struct bfq_group *__bfq_bic_change_cgroup(struct bfq_data *bfqd,
-+						struct bfq_io_cq *bic,
-+						struct cgroup_subsys_state *css)
-+{
-+	struct bfq_queue *async_bfqq = bic_to_bfqq(bic, 0);
-+	struct bfq_queue *sync_bfqq = bic_to_bfqq(bic, 1);
-+	struct bfq_entity *entity;
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+
-+	bgrp = css_to_bfqio(css);
-+
-+	bfqg = bfq_find_alloc_group(bfqd, css);
-+	if (async_bfqq != NULL) {
-+		entity = &async_bfqq->entity;
-+
-+		if (entity->sched_data != &bfqg->sched_data) {
-+			bic_set_bfqq(bic, NULL, 0);
-+			bfq_log_bfqq(bfqd, async_bfqq,
-+				     "bic_change_group: %p %d",
-+				     async_bfqq, atomic_read(&async_bfqq->ref));
-+			bfq_put_queue(async_bfqq);
-+		}
-+	}
-+
-+	if (sync_bfqq != NULL) {
-+		entity = &sync_bfqq->entity;
-+		if (entity->sched_data != &bfqg->sched_data)
-+			bfq_bfqq_move(bfqd, sync_bfqq, entity, bfqg);
-+	}
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bic: the bic being migrated.
-+ * @cgroup: the destination cgroup.
-+ *
-+ * When the task owning @bic is moved to @cgroup, @bic is immediately
-+ * moved into its new parent group.
-+ */
-+static void bfq_bic_change_cgroup(struct bfq_io_cq *bic,
-+				  struct cgroup_subsys_state *css)
-+{
-+	struct bfq_data *bfqd;
-+	unsigned long uninitialized_var(flags);
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	if (bfqd != NULL) {
-+		__bfq_bic_change_cgroup(bfqd, bic, css);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+}
-+
-+/**
-+ * bfq_bic_update_cgroup - update the cgroup of @bic.
-+ * @bic: the @bic to update.
-+ *
-+ * Make sure that @bic is enqueued in the cgroup of the current task.
-+ * We need this in addition to moving bics during the cgroup attach
-+ * phase because the task owning @bic could be at its first disk
-+ * access or we may end up in the root cgroup as the result of a
-+ * memory allocation failure and here we try to move to the right
-+ * group.
-+ *
-+ * Must be called under the queue lock.  It is safe to use the returned
-+ * value even after the rcu_read_unlock() as the migration/destruction
-+ * paths act under the queue lock too.  IOW it is impossible to race with
-+ * group migration/destruction and end up with an invalid group as:
-+ *   a) here cgroup has not yet been destroyed, nor its destroy callback
-+ *      has started execution, as current holds a reference to it,
-+ *   b) if it is destroyed after rcu_read_unlock() [after current is
-+ *      migrated to a different cgroup] its attach() callback will have
-+ *      taken care of remove all the references to the old cgroup data.
-+ */
-+static struct bfq_group *bfq_bic_update_cgroup(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	struct bfq_group *bfqg;
-+	struct cgroup_subsys_state *css;
-+
-+	BUG_ON(bfqd == NULL);
-+
-+	rcu_read_lock();
-+	css = task_css(current, bfqio_cgrp_id);
-+	bfqg = __bfq_bic_change_cgroup(bfqd, bic, css);
-+	rcu_read_unlock();
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_flush_idle_tree - deactivate any entity on the idle tree of @st.
-+ * @st: the service tree being flushed.
-+ */
-+static inline void bfq_flush_idle_tree(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entity = st->first_idle;
-+
-+	for (; entity != NULL; entity = st->first_idle)
-+		__bfq_deactivate_entity(entity, 0);
-+}
-+
-+/**
-+ * bfq_reparent_leaf_entity - move leaf entity to the root_group.
-+ * @bfqd: the device data structure with the root group.
-+ * @entity: the entity to move.
-+ */
-+static inline void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
-+					    struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	BUG_ON(bfqq == NULL);
-+	bfq_bfqq_move(bfqd, bfqq, entity, bfqd->root_group);
-+	return;
-+}
-+
-+/**
-+ * bfq_reparent_active_entities - move to the root group all active
-+ *                                entities.
-+ * @bfqd: the device data structure with the root group.
-+ * @bfqg: the group to move from.
-+ * @st: the service tree with the entities.
-+ *
-+ * Needs queue_lock to be taken and reference to be valid over the call.
-+ */
-+static inline void bfq_reparent_active_entities(struct bfq_data *bfqd,
-+						struct bfq_group *bfqg,
-+						struct bfq_service_tree *st)
-+{
-+	struct rb_root *active = &st->active;
-+	struct bfq_entity *entity = NULL;
-+
-+	if (!RB_EMPTY_ROOT(&st->active))
-+		entity = bfq_entity_of(rb_first(active));
-+
-+	for (; entity != NULL; entity = bfq_entity_of(rb_first(active)))
-+		bfq_reparent_leaf_entity(bfqd, entity);
-+
-+	if (bfqg->sched_data.in_service_entity != NULL)
-+		bfq_reparent_leaf_entity(bfqd,
-+			bfqg->sched_data.in_service_entity);
-+
-+	return;
-+}
-+
-+/**
-+ * bfq_destroy_group - destroy @bfqg.
-+ * @bgrp: the bfqio_cgroup containing @bfqg.
-+ * @bfqg: the group being destroyed.
-+ *
-+ * Destroy @bfqg, making sure that it is not referenced from its parent.
-+ */
-+static void bfq_destroy_group(struct bfqio_cgroup *bgrp, struct bfq_group *bfqg)
-+{
-+	struct bfq_data *bfqd;
-+	struct bfq_service_tree *st;
-+	struct bfq_entity *entity = bfqg->my_entity;
-+	unsigned long uninitialized_var(flags);
-+	int i;
-+
-+	hlist_del(&bfqg->group_node);
-+
-+	/*
-+	 * Empty all service_trees belonging to this group before
-+	 * deactivating the group itself.
-+	 */
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++) {
-+		st = bfqg->sched_data.service_tree + i;
-+
-+		/*
-+		 * The idle tree may still contain bfq_queues belonging
-+		 * to exited task because they never migrated to a different
-+		 * cgroup from the one being destroyed now.  No one else
-+		 * can access them so it's safe to act without any lock.
-+		 */
-+		bfq_flush_idle_tree(st);
-+
-+		/*
-+		 * It may happen that some queues are still active
-+		 * (busy) upon group destruction (if the corresponding
-+		 * processes have been forced to terminate). We move
-+		 * all the leaf entities corresponding to these queues
-+		 * to the root_group.
-+		 * Also, it may happen that the group has an entity
-+		 * in service, which is disconnected from the active
-+		 * tree: it must be moved, too.
-+		 * There is no need to put the sync queues, as the
-+		 * scheduler has taken no reference.
-+		 */
-+		bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+		if (bfqd != NULL) {
-+			bfq_reparent_active_entities(bfqd, bfqg, st);
-+			bfq_put_bfqd_unlock(bfqd, &flags);
-+		}
-+		BUG_ON(!RB_EMPTY_ROOT(&st->active));
-+		BUG_ON(!RB_EMPTY_ROOT(&st->idle));
-+	}
-+	BUG_ON(bfqg->sched_data.next_in_service != NULL);
-+	BUG_ON(bfqg->sched_data.in_service_entity != NULL);
-+
-+	/*
-+	 * We may race with device destruction, take extra care when
-+	 * dereferencing bfqg->bfqd.
-+	 */
-+	bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+	if (bfqd != NULL) {
-+		hlist_del(&bfqg->bfqd_node);
-+		__bfq_deactivate_entity(entity, 0);
-+		bfq_put_async_queues(bfqd, bfqg);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+	BUG_ON(entity->tree != NULL);
-+
-+	/*
-+	 * No need to defer the kfree() to the end of the RCU grace
-+	 * period: we are called from the destroy() callback of our
-+	 * cgroup, so we can be sure that no one is a) still using
-+	 * this cgroup or b) doing lookups in it.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static void bfq_end_wr_async(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node)
-+		bfq_end_wr_async_queues(bfqd, bfqg);
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+/**
-+ * bfq_disconnect_groups - disconnect @bfqd from all its groups.
-+ * @bfqd: the device descriptor being exited.
-+ *
-+ * When the device exits we just make sure that no lookup can return
-+ * the now unused group structures.  They will be deallocated on cgroup
-+ * destruction.
-+ */
-+static void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	bfq_log(bfqd, "disconnect_groups beginning");
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node) {
-+		hlist_del(&bfqg->bfqd_node);
-+
-+		__bfq_deactivate_entity(bfqg->my_entity, 0);
-+
-+		/*
-+		 * Don't remove from the group hash, just set an
-+		 * invalid key.  No lookups can race with the
-+		 * assignment as bfqd is being destroyed; this
-+		 * implies also that new elements cannot be added
-+		 * to the list.
-+		 */
-+		rcu_assign_pointer(bfqg->bfqd, NULL);
-+
-+		bfq_log(bfqd, "disconnect_groups: put async for group %p",
-+			bfqg);
-+		bfq_put_async_queues(bfqd, bfqg);
-+	}
-+}
-+
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	struct bfqio_cgroup *bgrp = &bfqio_root_cgroup;
-+	struct bfq_group *bfqg = bfqd->root_group;
-+
-+	bfq_put_async_queues(bfqd, bfqg);
-+
-+	spin_lock_irq(&bgrp->lock);
-+	hlist_del_rcu(&bfqg->group_node);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	/*
-+	 * No need to synchronize_rcu() here: since the device is gone
-+	 * there cannot be any read-side access to its root_group.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
-+{
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+	int i;
-+
-+	bfqg = kzalloc_node(sizeof(*bfqg), GFP_KERNEL, node);
-+	if (bfqg == NULL)
-+		return NULL;
-+
-+	bfqg->entity.parent = NULL;
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	bgrp = &bfqio_root_cgroup;
-+	spin_lock_irq(&bgrp->lock);
-+	rcu_assign_pointer(bfqg->bfqd, bfqd);
-+	hlist_add_head_rcu(&bfqg->group_node, &bgrp->group_data);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	return bfqg;
-+}
-+
-+#define SHOW_FUNCTION(__VAR)						\
-+static u64 bfqio_cgroup_##__VAR##_read(struct cgroup_subsys_state *css, \
-+				       struct cftype *cftype)		\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	u64 ret = -ENODEV;						\
-+									\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	ret = bgrp->__VAR;						\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
-+
-+SHOW_FUNCTION(weight);
-+SHOW_FUNCTION(ioprio);
-+SHOW_FUNCTION(ioprio_class);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__VAR, __MIN, __MAX)				\
-+static int bfqio_cgroup_##__VAR##_write(struct cgroup_subsys_state *css,\
-+					struct cftype *cftype,		\
-+					u64 val)			\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	struct bfq_group *bfqg;						\
-+	int ret = -EINVAL;						\
-+									\
-+	if (val < (__MIN) || val > (__MAX))				\
-+		return ret;						\
-+									\
-+	ret = -ENODEV;							\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+	ret = 0;							\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	bgrp->__VAR = (unsigned short)val;				\
-+	hlist_for_each_entry(bfqg, &bgrp->group_data, group_node) {	\
-+		/*							\
-+		 * Setting the ioprio_changed flag of the entity        \
-+		 * to 1 with new_##__VAR == ##__VAR would re-set        \
-+		 * the value of the weight to its ioprio mapping.       \
-+		 * Set the flag only if necessary.			\
-+		 */							\
-+		if ((unsigned short)val != bfqg->entity.new_##__VAR) {  \
-+			bfqg->entity.new_##__VAR = (unsigned short)val; \
-+			/*						\
-+			 * Make sure that the above new value has been	\
-+			 * stored in bfqg->entity.new_##__VAR before	\
-+			 * setting the ioprio_changed flag. In fact,	\
-+			 * this flag may be read asynchronously (in	\
-+			 * critical sections protected by a different	\
-+			 * lock than that held here), and finding this	\
-+			 * flag set may cause the execution of the code	\
-+			 * for updating parameters whose value may	\
-+			 * depend also on bfqg->entity.new_##__VAR (in	\
-+			 * __bfq_entity_update_weight_prio).		\
-+			 * This barrier makes sure that the new value	\
-+			 * of bfqg->entity.new_##__VAR is correctly	\
-+			 * seen in that code.				\
-+			 */						\
-+			smp_wmb();                                      \
-+			bfqg->entity.ioprio_changed = 1;                \
-+		}							\
-+	}								\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
-+
-+STORE_FUNCTION(weight, BFQ_MIN_WEIGHT, BFQ_MAX_WEIGHT);
-+STORE_FUNCTION(ioprio, 0, IOPRIO_BE_NR - 1);
-+STORE_FUNCTION(ioprio_class, IOPRIO_CLASS_RT, IOPRIO_CLASS_IDLE);
-+#undef STORE_FUNCTION
-+
-+static struct cftype bfqio_files[] = {
-+	{
-+		.name = "weight",
-+		.read_u64 = bfqio_cgroup_weight_read,
-+		.write_u64 = bfqio_cgroup_weight_write,
-+	},
-+	{
-+		.name = "ioprio",
-+		.read_u64 = bfqio_cgroup_ioprio_read,
-+		.write_u64 = bfqio_cgroup_ioprio_write,
-+	},
-+	{
-+		.name = "ioprio_class",
-+		.read_u64 = bfqio_cgroup_ioprio_class_read,
-+		.write_u64 = bfqio_cgroup_ioprio_class_write,
-+	},
-+	{ },	/* terminate */
-+};
-+
-+static struct cgroup_subsys_state *bfqio_create(struct cgroup_subsys_state
-+						*parent_css)
-+{
-+	struct bfqio_cgroup *bgrp;
-+
-+	if (parent_css != NULL) {
-+		bgrp = kzalloc(sizeof(*bgrp), GFP_KERNEL);
-+		if (bgrp == NULL)
-+			return ERR_PTR(-ENOMEM);
-+	} else
-+		bgrp = &bfqio_root_cgroup;
-+
-+	spin_lock_init(&bgrp->lock);
-+	INIT_HLIST_HEAD(&bgrp->group_data);
-+	bgrp->ioprio = BFQ_DEFAULT_GRP_IOPRIO;
-+	bgrp->ioprio_class = BFQ_DEFAULT_GRP_CLASS;
-+
-+	return &bgrp->css;
-+}
-+
-+/*
-+ * We cannot support shared io contexts, as we have no means to support
-+ * two tasks with the same ioc in two different groups without major rework
-+ * of the main bic/bfqq data structures.  By now we allow a task to change
-+ * its cgroup only if it's the only owner of its ioc; the drawback of this
-+ * behavior is that a group containing a task that forked using CLONE_IO
-+ * will not be destroyed until the tasks sharing the ioc die.
-+ */
-+static int bfqio_can_attach(struct cgroup_subsys_state *css,
-+			    struct cgroup_taskset *tset)
-+{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	int ret = 0;
-+
-+	cgroup_taskset_for_each(task, tset) {
-+		/*
-+		 * task_lock() is needed to avoid races with
-+		 * exit_io_context()
-+		 */
-+		task_lock(task);
-+		ioc = task->io_context;
-+		if (ioc != NULL && atomic_read(&ioc->nr_tasks) > 1)
-+			/*
-+			 * ioc == NULL means that the task is either too
-+			 * young or exiting: if it has still no ioc the
-+			 * ioc can't be shared, if the task is exiting the
-+			 * attach will fail anyway, no matter what we
-+			 * return here.
-+			 */
-+			ret = -EINVAL;
-+		task_unlock(task);
-+		if (ret)
-+			break;
-+	}
-+
-+	return ret;
-+}
-+
-+static void bfqio_attach(struct cgroup_subsys_state *css,
-+			 struct cgroup_taskset *tset)
-+{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	struct io_cq *icq;
-+
-+	/*
-+	 * IMPORTANT NOTE: The move of more than one process at a time to a
-+	 * new group has not yet been tested.
-+	 */
-+	cgroup_taskset_for_each(task, tset) {
-+		ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);
-+		if (ioc) {
-+			/*
-+			 * Handle cgroup change here.
-+			 */
-+			rcu_read_lock();
-+			hlist_for_each_entry_rcu(icq, &ioc->icq_list, ioc_node)
-+				if (!strncmp(
-+					icq->q->elevator->type->elevator_name,
-+					"bfq", ELV_NAME_MAX))
-+					bfq_bic_change_cgroup(icq_to_bic(icq),
-+							      css);
-+			rcu_read_unlock();
-+			put_io_context(ioc);
-+		}
-+	}
-+}
-+
-+static void bfqio_destroy(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	/*
-+	 * Since we are destroying the cgroup, there are no more tasks
-+	 * referencing it, and all the RCU grace periods that may have
-+	 * referenced it are ended (as the destruction of the parent
-+	 * cgroup is RCU-safe); bgrp->group_data will not be accessed by
-+	 * anything else and we don't need any synchronization.
-+	 */
-+	hlist_for_each_entry_safe(bfqg, tmp, &bgrp->group_data, group_node)
-+		bfq_destroy_group(bgrp, bfqg);
-+
-+	BUG_ON(!hlist_empty(&bgrp->group_data));
-+
-+	kfree(bgrp);
-+}
-+
-+static int bfqio_css_online(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = true;
-+	mutex_unlock(&bfqio_mutex);
-+
-+	return 0;
-+}
-+
-+static void bfqio_css_offline(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = false;
-+	mutex_unlock(&bfqio_mutex);
-+}
-+
-+struct cgroup_subsys bfqio_cgrp_subsys = {
-+	.css_alloc = bfqio_create,
-+	.css_online = bfqio_css_online,
-+	.css_offline = bfqio_css_offline,
-+	.can_attach = bfqio_can_attach,
-+	.attach = bfqio_attach,
-+	.css_free = bfqio_destroy,
-+	.legacy_cftypes = bfqio_files,
-+};
-+#else
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
-+{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->sched_data = &bfqg->sched_data;
-+}
-+
-+static inline struct bfq_group *
-+bfq_bic_update_cgroup(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	return bfqd->root_group;
-+}
-+
-+static inline void bfq_bfqq_move(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq,
-+				 struct bfq_entity *entity,
-+				 struct bfq_group *bfqg)
-+{
-+}
-+
-+static void bfq_end_wr_async(struct bfq_data *bfqd)
-+{
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+static inline void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	bfq_put_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	kfree(bfqd->root_group);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
-+{
-+	struct bfq_group *bfqg;
-+	int i;
-+
-+	bfqg = kmalloc_node(sizeof(*bfqg), GFP_KERNEL | __GFP_ZERO, node);
-+	if (bfqg == NULL)
-+		return NULL;
-+
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	return bfqg;
-+}
-+#endif
-diff --git a/block/bfq-ioc.c b/block/bfq-ioc.c
-new file mode 100644
-index 0000000..7f6b000
---- /dev/null
-+++ b/block/bfq-ioc.c
-@@ -0,0 +1,36 @@
-+/*
-+ * BFQ: I/O context handling.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+/**
-+ * icq_to_bic - convert iocontext queue structure to bfq_io_cq.
-+ * @icq: the iocontext queue.
-+ */
-+static inline struct bfq_io_cq *icq_to_bic(struct io_cq *icq)
-+{
-+	/* bic->icq is the first member, %NULL will convert to %NULL */
-+	return container_of(icq, struct bfq_io_cq, icq);
-+}
-+
-+/**
-+ * bfq_bic_lookup - search into @ioc a bic associated to @bfqd.
-+ * @bfqd: the lookup key.
-+ * @ioc: the io_context of the process doing I/O.
-+ *
-+ * Queue lock must be held.
-+ */
-+static inline struct bfq_io_cq *bfq_bic_lookup(struct bfq_data *bfqd,
-+					       struct io_context *ioc)
-+{
-+	if (ioc)
-+		return icq_to_bic(ioc_lookup_icq(ioc, bfqd->queue));
-+	return NULL;
-+}
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-new file mode 100644
-index 0000000..773b2ee
---- /dev/null
-+++ b/block/bfq-iosched.c
-@@ -0,0 +1,3898 @@
-+/*
-+ * Budget Fair Queueing (BFQ) disk scheduler.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Licensed under the GPL-2 as detailed in the accompanying COPYING.BFQ
-+ * file.
-+ *
-+ * BFQ is a proportional-share storage-I/O scheduling algorithm based on
-+ * the slice-by-slice service scheme of CFQ. But BFQ assigns budgets,
-+ * measured in number of sectors, to processes instead of time slices. The
-+ * device is not granted to the in-service process for a given time slice,
-+ * but until it has exhausted its assigned budget. This change from the time
-+ * to the service domain allows BFQ to distribute the device throughput
-+ * among processes as desired, without any distortion due to ZBR, workload
-+ * fluctuations or other factors. BFQ uses an ad hoc internal scheduler,
-+ * called B-WF2Q+, to schedule processes according to their budgets. More
-+ * precisely, BFQ schedules queues associated to processes. Thanks to the
-+ * accurate policy of B-WF2Q+, BFQ can afford to assign high budgets to
-+ * I/O-bound processes issuing sequential requests (to boost the
-+ * throughput), and yet guarantee a low latency to interactive and soft
-+ * real-time applications.
-+ *
-+ * BFQ is described in [1], where also a reference to the initial, more
-+ * theoretical paper on BFQ can be found. The interested reader can find
-+ * in the latter paper full details on the main algorithm, as well as
-+ * formulas of the guarantees and formal proofs of all the properties.
-+ * With respect to the version of BFQ presented in these papers, this
-+ * implementation adds a few more heuristics, such as the one that
-+ * guarantees a low latency to soft real-time applications, and a
-+ * hierarchical extension based on H-WF2Q+.
-+ *
-+ * B-WF2Q+ is based on WF2Q+, that is described in [2], together with
-+ * H-WF2Q+, while the augmented tree used to implement B-WF2Q+ with O(log N)
-+ * complexity derives from the one introduced with EEVDF in [3].
-+ *
-+ * [1] P. Valente and M. Andreolini, ``Improving Application Responsiveness
-+ *     with the BFQ Disk I/O Scheduler'',
-+ *     Proceedings of the 5th Annual International Systems and Storage
-+ *     Conference (SYSTOR '12), June 2012.
-+ *
-+ * http://algogroup.unimo.it/people/paolo/disk_sched/bf1-v1-suite-results.pdf
-+ *
-+ * [2] Jon C.R. Bennett and H. Zhang, ``Hierarchical Packet Fair Queueing
-+ *     Algorithms,'' IEEE/ACM Transactions on Networking, 5(5):675-689,
-+ *     Oct 1997.
-+ *
-+ * http://www.cs.cmu.edu/~hzhang/papers/TON-97-Oct.ps.gz
-+ *
-+ * [3] I. Stoica and H. Abdel-Wahab, ``Earliest Eligible Virtual Deadline
-+ *     First: A Flexible and Accurate Mechanism for Proportional Share
-+ *     Resource Allocation,'' technical report.
-+ *
-+ * http://www.cs.berkeley.edu/~istoica/papers/eevdf-tr-95.pdf
-+ */
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/blkdev.h>
-+#include <linux/cgroup.h>
-+#include <linux/elevator.h>
-+#include <linux/jiffies.h>
-+#include <linux/rbtree.h>
-+#include <linux/ioprio.h>
-+#include "bfq.h"
-+#include "blk.h"
-+
-+/* Expiration time of sync (0) and async (1) requests, in jiffies. */
-+static const int bfq_fifo_expire[2] = { HZ / 4, HZ / 8 };
-+
-+/* Maximum backwards seek, in KiB. */
-+static const int bfq_back_max = 16 * 1024;
-+
-+/* Penalty of a backwards seek, in number of sectors. */
-+static const int bfq_back_penalty = 2;
-+
-+/* Idling period duration, in jiffies. */
-+static int bfq_slice_idle = HZ / 125;
-+
-+/* Default maximum budget values, in sectors and number of requests. */
-+static const int bfq_default_max_budget = 16 * 1024;
-+static const int bfq_max_budget_async_rq = 4;
-+
-+/*
-+ * Async to sync throughput distribution is controlled as follows:
-+ * when an async request is served, the entity is charged the number
-+ * of sectors of the request, multiplied by the factor below
-+ */
-+static const int bfq_async_charge_factor = 10;
-+
-+/* Default timeout values, in jiffies, approximating CFQ defaults. */
-+static const int bfq_timeout_sync = HZ / 8;
-+static int bfq_timeout_async = HZ / 25;
-+
-+struct kmem_cache *bfq_pool;
-+
-+/* Below this threshold (in ms), we consider thinktime immediate. */
-+#define BFQ_MIN_TT		2
-+
-+/* hw_tag detection: parallel requests threshold and min samples needed. */
-+#define BFQ_HW_QUEUE_THRESHOLD	4
-+#define BFQ_HW_QUEUE_SAMPLES	32
-+
-+#define BFQQ_SEEK_THR	 (sector_t)(8 * 1024)
-+#define BFQQ_SEEKY(bfqq) ((bfqq)->seek_mean > BFQQ_SEEK_THR)
-+
-+/* Min samples used for peak rate estimation (for autotuning). */
-+#define BFQ_PEAK_RATE_SAMPLES	32
-+
-+/* Shift used for peak rate fixed precision calculations. */
-+#define BFQ_RATE_SHIFT		16
-+
-+/*
-+ * By default, BFQ computes the duration of the weight raising for
-+ * interactive applications automatically, using the following formula:
-+ * duration = (R / r) * T, where r is the peak rate of the device, and
-+ * R and T are two reference parameters.
-+ * In particular, R is the peak rate of the reference device (see below),
-+ * and T is a reference time: given the systems that are likely to be
-+ * installed on the reference device according to its speed class, T is
-+ * about the maximum time needed, under BFQ and while reading two files in
-+ * parallel, to load typical large applications on these systems.
-+ * In practice, the slower/faster the device at hand is, the more/less it
-+ * takes to load applications with respect to the reference device.
-+ * Accordingly, the longer/shorter BFQ grants weight raising to interactive
-+ * applications.
-+ *
-+ * BFQ uses four different reference pairs (R, T), depending on:
-+ * . whether the device is rotational or non-rotational;
-+ * . whether the device is slow, such as old or portable HDDs, as well as
-+ *   SD cards, or fast, such as newer HDDs and SSDs.
-+ *
-+ * The device's speed class is dynamically (re)detected in
-+ * bfq_update_peak_rate() every time the estimated peak rate is updated.
-+ *
-+ * In the following definitions, R_slow[0]/R_fast[0] and T_slow[0]/T_fast[0]
-+ * are the reference values for a slow/fast rotational device, whereas
-+ * R_slow[1]/R_fast[1] and T_slow[1]/T_fast[1] are the reference values for
-+ * a slow/fast non-rotational device. Finally, device_speed_thresh are the
-+ * thresholds used to switch between speed classes.
-+ * Both the reference peak rates and the thresholds are measured in
-+ * sectors/usec, left-shifted by BFQ_RATE_SHIFT.
-+ */
-+static int R_slow[2] = {1536, 10752};
-+static int R_fast[2] = {17415, 34791};
-+/*
-+ * To improve readability, a conversion function is used to initialize the
-+ * following arrays, which entails that they can be initialized only in a
-+ * function.
-+ */
-+static int T_slow[2];
-+static int T_fast[2];
-+static int device_speed_thresh[2];
-+
-+#define BFQ_SERVICE_TREE_INIT	((struct bfq_service_tree)		\
-+				{ RB_ROOT, RB_ROOT, NULL, NULL, 0, 0 })
-+
-+#define RQ_BIC(rq)		((struct bfq_io_cq *) (rq)->elv.priv[0])
-+#define RQ_BFQQ(rq)		((rq)->elv.priv[1])
-+
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd);
-+
-+#include "bfq-ioc.c"
-+#include "bfq-sched.c"
-+#include "bfq-cgroup.c"
-+
-+#define bfq_class_idle(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_IDLE)
-+#define bfq_class_rt(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_RT)
-+
-+#define bfq_sample_valid(samples)	((samples) > 80)
-+
-+/*
-+ * The following macro groups conditions that need to be evaluated when
-+ * checking if existing queues and groups form a symmetric scenario
-+ * and therefore idling can be reduced or disabled for some of the
-+ * queues. See the comment to the function bfq_bfqq_must_not_expire()
-+ * for further details.
-+ */
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define symmetric_scenario	  (!bfqd->active_numerous_groups && \
-+				   !bfq_differentiated_weights(bfqd))
-+#else
-+#define symmetric_scenario	  (!bfq_differentiated_weights(bfqd))
-+#endif
-+
-+/*
-+ * We regard a request as SYNC, if either it's a read or has the SYNC bit
-+ * set (in which case it could also be a direct WRITE).
-+ */
-+static inline int bfq_bio_sync(struct bio *bio)
-+{
-+	if (bio_data_dir(bio) == READ || (bio->bi_rw & REQ_SYNC))
-+		return 1;
-+
-+	return 0;
-+}
-+
-+/*
-+ * Scheduler run of queue, if there are requests pending and no one in the
-+ * driver that will restart queueing.
-+ */
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd)
-+{
-+	if (bfqd->queued != 0) {
-+		bfq_log(bfqd, "schedule dispatch");
-+		kblockd_schedule_work(&bfqd->unplug_work);
-+	}
-+}
-+
-+/*
-+ * Lifted from AS - choose which of rq1 and rq2 that is best served now.
-+ * We choose the request that is closesr to the head right now.  Distance
-+ * behind the head is penalized and only allowed to a certain extent.
-+ */
-+static struct request *bfq_choose_req(struct bfq_data *bfqd,
-+				      struct request *rq1,
-+				      struct request *rq2,
-+				      sector_t last)
-+{
-+	sector_t s1, s2, d1 = 0, d2 = 0;
-+	unsigned long back_max;
-+#define BFQ_RQ1_WRAP	0x01 /* request 1 wraps */
-+#define BFQ_RQ2_WRAP	0x02 /* request 2 wraps */
-+	unsigned wrap = 0; /* bit mask: requests behind the disk head? */
-+
-+	if (rq1 == NULL || rq1 == rq2)
-+		return rq2;
-+	if (rq2 == NULL)
-+		return rq1;
-+
-+	if (rq_is_sync(rq1) && !rq_is_sync(rq2))
-+		return rq1;
-+	else if (rq_is_sync(rq2) && !rq_is_sync(rq1))
-+		return rq2;
-+	if ((rq1->cmd_flags & REQ_META) && !(rq2->cmd_flags & REQ_META))
-+		return rq1;
-+	else if ((rq2->cmd_flags & REQ_META) && !(rq1->cmd_flags & REQ_META))
-+		return rq2;
-+
-+	s1 = blk_rq_pos(rq1);
-+	s2 = blk_rq_pos(rq2);
-+
-+	/*
-+	 * By definition, 1KiB is 2 sectors.
-+	 */
-+	back_max = bfqd->bfq_back_max * 2;
-+
-+	/*
-+	 * Strict one way elevator _except_ in the case where we allow
-+	 * short backward seeks which are biased as twice the cost of a
-+	 * similar forward seek.
-+	 */
-+	if (s1 >= last)
-+		d1 = s1 - last;
-+	else if (s1 + back_max >= last)
-+		d1 = (last - s1) * bfqd->bfq_back_penalty;
-+	else
-+		wrap |= BFQ_RQ1_WRAP;
-+
-+	if (s2 >= last)
-+		d2 = s2 - last;
-+	else if (s2 + back_max >= last)
-+		d2 = (last - s2) * bfqd->bfq_back_penalty;
-+	else
-+		wrap |= BFQ_RQ2_WRAP;
-+
-+	/* Found required data */
-+
-+	/*
-+	 * By doing switch() on the bit mask "wrap" we avoid having to
-+	 * check two variables for all permutations: --> faster!
-+	 */
-+	switch (wrap) {
-+	case 0: /* common case for CFQ: rq1 and rq2 not wrapped */
-+		if (d1 < d2)
-+			return rq1;
-+		else if (d2 < d1)
-+			return rq2;
-+		else {
-+			if (s1 >= s2)
-+				return rq1;
-+			else
-+				return rq2;
-+		}
-+
-+	case BFQ_RQ2_WRAP:
-+		return rq1;
-+	case BFQ_RQ1_WRAP:
-+		return rq2;
-+	case (BFQ_RQ1_WRAP|BFQ_RQ2_WRAP): /* both rqs wrapped */
-+	default:
-+		/*
-+		 * Since both rqs are wrapped,
-+		 * start with the one that's further behind head
-+		 * (--> only *one* back seek required),
-+		 * since back seek takes more time than forward.
-+		 */
-+		if (s1 <= s2)
-+			return rq1;
-+		else
-+			return rq2;
-+	}
-+}
-+
-+static struct bfq_queue *
-+bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
-+		     sector_t sector, struct rb_node **ret_parent,
-+		     struct rb_node ***rb_link)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	parent = NULL;
-+	p = &root->rb_node;
-+	while (*p) {
-+		struct rb_node **n;
-+
-+		parent = *p;
-+		bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+
-+		/*
-+		 * Sort strictly based on sector. Smallest to the left,
-+		 * largest to the right.
-+		 */
-+		if (sector > blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_right;
-+		else if (sector < blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_left;
-+		else
-+			break;
-+		p = n;
-+		bfqq = NULL;
-+	}
-+
-+	*ret_parent = parent;
-+	if (rb_link)
-+		*rb_link = p;
-+
-+	bfq_log(bfqd, "rq_pos_tree_lookup %llu: returning %d",
-+		(long long unsigned)sector,
-+		bfqq != NULL ? bfqq->pid : 0);
-+
-+	return bfqq;
-+}
-+
-+static void bfq_rq_pos_tree_add(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *__bfqq;
-+
-+	if (bfqq->pos_root != NULL) {
-+		rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+		bfqq->pos_root = NULL;
-+	}
-+
-+	if (bfq_class_idle(bfqq))
-+		return;
-+	if (!bfqq->next_rq)
-+		return;
-+
-+	bfqq->pos_root = &bfqd->rq_pos_tree;
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, bfqq->pos_root,
-+			blk_rq_pos(bfqq->next_rq), &parent, &p);
-+	if (__bfqq == NULL) {
-+		rb_link_node(&bfqq->pos_node, parent, p);
-+		rb_insert_color(&bfqq->pos_node, bfqq->pos_root);
-+	} else
-+		bfqq->pos_root = NULL;
-+}
-+
-+/*
-+ * Tell whether there are active queues or groups with differentiated weights.
-+ */
-+static inline bool bfq_differentiated_weights(struct bfq_data *bfqd)
-+{
-+	/*
-+	 * For weights to differ, at least one of the trees must contain
-+	 * at least two nodes.
-+	 */
-+	return (!RB_EMPTY_ROOT(&bfqd->queue_weights_tree) &&
-+		(bfqd->queue_weights_tree.rb_node->rb_left ||
-+		 bfqd->queue_weights_tree.rb_node->rb_right)
-+#ifdef CONFIG_CGROUP_BFQIO
-+	       ) ||
-+	       (!RB_EMPTY_ROOT(&bfqd->group_weights_tree) &&
-+		(bfqd->group_weights_tree.rb_node->rb_left ||
-+		 bfqd->group_weights_tree.rb_node->rb_right)
-+#endif
-+	       );
-+}
-+
-+/*
-+ * If the weight-counter tree passed as input contains no counter for
-+ * the weight of the input entity, then add that counter; otherwise just
-+ * increment the existing counter.
-+ *
-+ * Note that weight-counter trees contain few nodes in mostly symmetric
-+ * scenarios. For example, if all queues have the same weight, then the
-+ * weight-counter tree for the queues may contain at most one node.
-+ * This holds even if low_latency is on, because weight-raised queues
-+ * are not inserted in the tree.
-+ * In most scenarios, the rate at which nodes are created/destroyed
-+ * should be low too.
-+ */
-+static void bfq_weights_tree_add(struct bfq_data *bfqd,
-+				 struct bfq_entity *entity,
-+				 struct rb_root *root)
-+{
-+	struct rb_node **new = &(root->rb_node), *parent = NULL;
-+
-+	/*
-+	 * Do not insert if the entity is already associated with a
-+	 * counter, which happens if:
-+	 *   1) the entity is associated with a queue,
-+	 *   2) a request arrival has caused the queue to become both
-+	 *      non-weight-raised, and hence change its weight, and
-+	 *      backlogged; in this respect, each of the two events
-+	 *      causes an invocation of this function,
-+	 *   3) this is the invocation of this function caused by the
-+	 *      second event. This second invocation is actually useless,
-+	 *      and we handle this fact by exiting immediately. More
-+	 *      efficient or clearer solutions might possibly be adopted.
-+	 */
-+	if (entity->weight_counter)
-+		return;
-+
-+	while (*new) {
-+		struct bfq_weight_counter *__counter = container_of(*new,
-+						struct bfq_weight_counter,
-+						weights_node);
-+		parent = *new;
-+
-+		if (entity->weight == __counter->weight) {
-+			entity->weight_counter = __counter;
-+			goto inc_counter;
-+		}
-+		if (entity->weight < __counter->weight)
-+			new = &((*new)->rb_left);
-+		else
-+			new = &((*new)->rb_right);
-+	}
-+
-+	entity->weight_counter = kzalloc(sizeof(struct bfq_weight_counter),
-+					 GFP_ATOMIC);
-+	entity->weight_counter->weight = entity->weight;
-+	rb_link_node(&entity->weight_counter->weights_node, parent, new);
-+	rb_insert_color(&entity->weight_counter->weights_node, root);
-+
-+inc_counter:
-+	entity->weight_counter->num_active++;
-+}
-+
-+/*
-+ * Decrement the weight counter associated with the entity, and, if the
-+ * counter reaches 0, remove the counter from the tree.
-+ * See the comments to the function bfq_weights_tree_add() for considerations
-+ * about overhead.
-+ */
-+static void bfq_weights_tree_remove(struct bfq_data *bfqd,
-+				    struct bfq_entity *entity,
-+				    struct rb_root *root)
-+{
-+	if (!entity->weight_counter)
-+		return;
-+
-+	BUG_ON(RB_EMPTY_ROOT(root));
-+	BUG_ON(entity->weight_counter->weight != entity->weight);
-+
-+	BUG_ON(!entity->weight_counter->num_active);
-+	entity->weight_counter->num_active--;
-+	if (entity->weight_counter->num_active > 0)
-+		goto reset_entity_pointer;
-+
-+	rb_erase(&entity->weight_counter->weights_node, root);
-+	kfree(entity->weight_counter);
-+
-+reset_entity_pointer:
-+	entity->weight_counter = NULL;
-+}
-+
-+static struct request *bfq_find_next_rq(struct bfq_data *bfqd,
-+					struct bfq_queue *bfqq,
-+					struct request *last)
-+{
-+	struct rb_node *rbnext = rb_next(&last->rb_node);
-+	struct rb_node *rbprev = rb_prev(&last->rb_node);
-+	struct request *next = NULL, *prev = NULL;
-+
-+	BUG_ON(RB_EMPTY_NODE(&last->rb_node));
-+
-+	if (rbprev != NULL)
-+		prev = rb_entry_rq(rbprev);
-+
-+	if (rbnext != NULL)
-+		next = rb_entry_rq(rbnext);
-+	else {
-+		rbnext = rb_first(&bfqq->sort_list);
-+		if (rbnext && rbnext != &last->rb_node)
-+			next = rb_entry_rq(rbnext);
-+	}
-+
-+	return bfq_choose_req(bfqd, next, prev, blk_rq_pos(last));
-+}
-+
-+/* see the definition of bfq_async_charge_factor for details */
-+static inline unsigned long bfq_serv_to_charge(struct request *rq,
-+					       struct bfq_queue *bfqq)
-+{
-+	return blk_rq_sectors(rq) *
-+		(1 + ((!bfq_bfqq_sync(bfqq)) * (bfqq->wr_coeff == 1) *
-+		bfq_async_charge_factor));
-+}
-+
-+/**
-+ * bfq_updated_next_req - update the queue after a new next_rq selection.
-+ * @bfqd: the device data the queue belongs to.
-+ * @bfqq: the queue to update.
-+ *
-+ * If the first request of a queue changes we make sure that the queue
-+ * has enough budget to serve at least its first request (if the
-+ * request has grown).  We do this because if the queue has not enough
-+ * budget for its first request, it has to go through two dispatch
-+ * rounds to actually get it dispatched.
-+ */
-+static void bfq_updated_next_req(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	struct request *next_rq = bfqq->next_rq;
-+	unsigned long new_budget;
-+
-+	if (next_rq == NULL)
-+		return;
-+
-+	if (bfqq == bfqd->in_service_queue)
-+		/*
-+		 * In order not to break guarantees, budgets cannot be
-+		 * changed after an entity has been selected.
-+		 */
-+		return;
-+
-+	BUG_ON(entity->tree != &st->active);
-+	BUG_ON(entity == entity->sched_data->in_service_entity);
-+
-+	new_budget = max_t(unsigned long, bfqq->max_budget,
-+			   bfq_serv_to_charge(next_rq, bfqq));
-+	if (entity->budget != new_budget) {
-+		entity->budget = new_budget;
-+		bfq_log_bfqq(bfqd, bfqq, "updated next rq: new budget %lu",
-+					 new_budget);
-+		bfq_activate_bfqq(bfqd, bfqq);
-+	}
-+}
-+
-+static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
-+{
-+	u64 dur;
-+
-+	if (bfqd->bfq_wr_max_time > 0)
-+		return bfqd->bfq_wr_max_time;
-+
-+	dur = bfqd->RT_prod;
-+	do_div(dur, bfqd->peak_rate);
-+
-+	return dur;
-+}
-+
-+/* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
-+static inline void bfq_reset_burst_list(struct bfq_data *bfqd,
-+					struct bfq_queue *bfqq)
-+{
-+	struct bfq_queue *item;
-+	struct hlist_node *n;
-+
-+	hlist_for_each_entry_safe(item, n, &bfqd->burst_list, burst_list_node)
-+		hlist_del_init(&item->burst_list_node);
-+	hlist_add_head(&bfqq->burst_list_node, &bfqd->burst_list);
-+	bfqd->burst_size = 1;
-+}
-+
-+/* Add bfqq to the list of queues in current burst (see bfq_handle_burst) */
-+static void bfq_add_to_burst(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	/* Increment burst size to take into account also bfqq */
-+	bfqd->burst_size++;
-+
-+	if (bfqd->burst_size == bfqd->bfq_large_burst_thresh) {
-+		struct bfq_queue *pos, *bfqq_item;
-+		struct hlist_node *n;
-+
-+		/*
-+		 * Enough queues have been activated shortly after each
-+		 * other to consider this burst as large.
-+		 */
-+		bfqd->large_burst = true;
-+
-+		/*
-+		 * We can now mark all queues in the burst list as
-+		 * belonging to a large burst.
-+		 */
-+		hlist_for_each_entry(bfqq_item, &bfqd->burst_list,
-+				     burst_list_node)
-+		        bfq_mark_bfqq_in_large_burst(bfqq_item);
-+		bfq_mark_bfqq_in_large_burst(bfqq);
-+
-+		/*
-+		 * From now on, and until the current burst finishes, any
-+		 * new queue being activated shortly after the last queue
-+		 * was inserted in the burst can be immediately marked as
-+		 * belonging to a large burst. So the burst list is not
-+		 * needed any more. Remove it.
-+		 */
-+		hlist_for_each_entry_safe(pos, n, &bfqd->burst_list,
-+					  burst_list_node)
-+			hlist_del_init(&pos->burst_list_node);
-+	} else /* burst not yet large: add bfqq to the burst list */
-+		hlist_add_head(&bfqq->burst_list_node, &bfqd->burst_list);
-+}
-+
-+/*
-+ * If many queues happen to become active shortly after each other, then,
-+ * to help the processes associated to these queues get their job done as
-+ * soon as possible, it is usually better to not grant either weight-raising
-+ * or device idling to these queues. In this comment we describe, firstly,
-+ * the reasons why this fact holds, and, secondly, the next function, which
-+ * implements the main steps needed to properly mark these queues so that
-+ * they can then be treated in a different way.
-+ *
-+ * As for the terminology, we say that a queue becomes active, i.e.,
-+ * switches from idle to backlogged, either when it is created (as a
-+ * consequence of the arrival of an I/O request), or, if already existing,
-+ * when a new request for the queue arrives while the queue is idle.
-+ * Bursts of activations, i.e., activations of different queues occurring
-+ * shortly after each other, are typically caused by services or applications
-+ * that spawn or reactivate many parallel threads/processes. Examples are
-+ * systemd during boot or git grep.
-+ *
-+ * These services or applications benefit mostly from a high throughput:
-+ * the quicker the requests of the activated queues are cumulatively served,
-+ * the sooner the target job of these queues gets completed. As a consequence,
-+ * weight-raising any of these queues, which also implies idling the device
-+ * for it, is almost always counterproductive: in most cases it just lowers
-+ * throughput.
-+ *
-+ * On the other hand, a burst of activations may be also caused by the start
-+ * of an application that does not consist in a lot of parallel I/O-bound
-+ * threads. In fact, with a complex application, the burst may be just a
-+ * consequence of the fact that several processes need to be executed to
-+ * start-up the application. To start an application as quickly as possible,
-+ * the best thing to do is to privilege the I/O related to the application
-+ * with respect to all other I/O. Therefore, the best strategy to start as
-+ * quickly as possible an application that causes a burst of activations is
-+ * to weight-raise all the queues activated during the burst. This is the
-+ * exact opposite of the best strategy for the other type of bursts.
-+ *
-+ * In the end, to take the best action for each of the two cases, the two
-+ * types of bursts need to be distinguished. Fortunately, this seems
-+ * relatively easy to do, by looking at the sizes of the bursts. In
-+ * particular, we found a threshold such that bursts with a larger size
-+ * than that threshold are apparently caused only by services or commands
-+ * such as systemd or git grep. For brevity, hereafter we call just 'large'
-+ * these bursts. BFQ *does not* weight-raise queues whose activations occur
-+ * in a large burst. In addition, for each of these queues BFQ performs or
-+ * does not perform idling depending on which choice boosts the throughput
-+ * most. The exact choice depends on the device and request pattern at
-+ * hand.
-+ *
-+ * Turning back to the next function, it implements all the steps needed
-+ * to detect the occurrence of a large burst and to properly mark all the
-+ * queues belonging to it (so that they can then be treated in a different
-+ * way). This goal is achieved by maintaining a special "burst list" that
-+ * holds, temporarily, the queues that belong to the burst in progress. The
-+ * list is then used to mark these queues as belonging to a large burst if
-+ * the burst does become large. The main steps are the following.
-+ *
-+ * . when the very first queue is activated, the queue is inserted into the
-+ *   list (as it could be the first queue in a possible burst)
-+ *
-+ * . if the current burst has not yet become large, and a queue Q that does
-+ *   not yet belong to the burst is activated shortly after the last time
-+ *   at which a new queue entered the burst list, then the function appends
-+ *   Q to the burst list
-+ *
-+ * . if, as a consequence of the previous step, the burst size reaches
-+ *   the large-burst threshold, then
-+ *
-+ *     . all the queues in the burst list are marked as belonging to a
-+ *       large burst
-+ *
-+ *     . the burst list is deleted; in fact, the burst list already served
-+ *       its purpose (keeping temporarily track of the queues in a burst,
-+ *       so as to be able to mark them as belonging to a large burst in the
-+ *       previous sub-step), and now is not needed any more
-+ *
-+ *     . the device enters a large-burst mode
-+ *
-+ * . if a queue Q that does not belong to the burst is activated while
-+ *   the device is in large-burst mode and shortly after the last time
-+ *   at which a queue either entered the burst list or was marked as
-+ *   belonging to the current large burst, then Q is immediately marked
-+ *   as belonging to a large burst.
-+ *
-+ * . if a queue Q that does not belong to the burst is activated a while
-+ *   later, i.e., not shortly after, than the last time at which a queue
-+ *   either entered the burst list or was marked as belonging to the
-+ *   current large burst, then the current burst is deemed as finished and:
-+ *
-+ *        . the large-burst mode is reset if set
-+ *
-+ *        . the burst list is emptied
-+ *
-+ *        . Q is inserted in the burst list, as Q may be the first queue
-+ *          in a possible new burst (then the burst list contains just Q
-+ *          after this step).
-+ */
-+static void bfq_handle_burst(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			     bool idle_for_long_time)
-+{
-+	/*
-+	 * If bfqq happened to be activated in a burst, but has been idle
-+	 * for at least as long as an interactive queue, then we assume
-+	 * that, in the overall I/O initiated in the burst, the I/O
-+	 * associated to bfqq is finished. So bfqq does not need to be
-+	 * treated as a queue belonging to a burst anymore. Accordingly,
-+	 * we reset bfqq's in_large_burst flag if set, and remove bfqq
-+	 * from the burst list if it's there. We do not decrement instead
-+	 * burst_size, because the fact that bfqq does not need to belong
-+	 * to the burst list any more does not invalidate the fact that
-+	 * bfqq may have been activated during the current burst.
-+	 */
-+	if (idle_for_long_time) {
-+		hlist_del_init(&bfqq->burst_list_node);
-+		bfq_clear_bfqq_in_large_burst(bfqq);
-+	}
-+
-+	/*
-+	 * If bfqq is already in the burst list or is part of a large
-+	 * burst, then there is nothing else to do.
-+	 */
-+	if (!hlist_unhashed(&bfqq->burst_list_node) ||
-+	    bfq_bfqq_in_large_burst(bfqq))
-+		return;
-+
-+	/*
-+	 * If bfqq's activation happens late enough, then the current
-+	 * burst is finished, and related data structures must be reset.
-+	 *
-+	 * In this respect, consider the special case where bfqq is the very
-+	 * first queue being activated. In this case, last_ins_in_burst is
-+	 * not yet significant when we get here. But it is easy to verify
-+	 * that, whether or not the following condition is true, bfqq will
-+	 * end up being inserted into the burst list. In particular the
-+	 * list will happen to contain only bfqq. And this is exactly what
-+	 * has to happen, as bfqq may be the first queue in a possible
-+	 * burst.
-+	 */
-+	if (time_is_before_jiffies(bfqd->last_ins_in_burst +
-+	    bfqd->bfq_burst_interval)) {
-+		bfqd->large_burst = false;
-+		bfq_reset_burst_list(bfqd, bfqq);
-+		return;
-+	}
-+
-+	/*
-+	 * If we get here, then bfqq is being activated shortly after the
-+	 * last queue. So, if the current burst is also large, we can mark
-+	 * bfqq as belonging to this large burst immediately.
-+	 */
-+	if (bfqd->large_burst) {
-+		bfq_mark_bfqq_in_large_burst(bfqq);
-+		return;
-+	}
-+
-+	/*
-+	 * If we get here, then a large-burst state has not yet been
-+	 * reached, but bfqq is being activated shortly after the last
-+	 * queue. Then we add bfqq to the burst.
-+	 */
-+	bfq_add_to_burst(bfqd, bfqq);
-+}
-+
-+static void bfq_add_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	struct request *next_rq, *prev;
-+	unsigned long old_wr_coeff = bfqq->wr_coeff;
-+	bool interactive = false;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "add_request %d", rq_is_sync(rq));
-+	bfqq->queued[rq_is_sync(rq)]++;
-+	bfqd->queued++;
-+
-+	elv_rb_add(&bfqq->sort_list, rq);
-+
-+	/*
-+	 * Check if this request is a better next-serve candidate.
-+	 */
-+	prev = bfqq->next_rq;
-+	next_rq = bfq_choose_req(bfqd, bfqq->next_rq, rq, bfqd->last_position);
-+	BUG_ON(next_rq == NULL);
-+	bfqq->next_rq = next_rq;
-+
-+	/*
-+	 * Adjust priority tree position, if next_rq changes.
-+	 */
-+	if (prev != bfqq->next_rq)
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+
-+	if (!bfq_bfqq_busy(bfqq)) {
-+		bool soft_rt,
-+		     idle_for_long_time = time_is_before_jiffies(
-+						bfqq->budget_timeout +
-+						bfqd->bfq_wr_min_idle_time);
-+
-+		if (bfq_bfqq_sync(bfqq)) {
-+			bool already_in_burst =
-+			   !hlist_unhashed(&bfqq->burst_list_node) ||
-+			   bfq_bfqq_in_large_burst(bfqq);
-+			bfq_handle_burst(bfqd, bfqq, idle_for_long_time);
-+			/*
-+			 * If bfqq was not already in the current burst,
-+			 * then, at this point, bfqq either has been
-+			 * added to the current burst or has caused the
-+			 * current burst to terminate. In particular, in
-+			 * the second case, bfqq has become the first
-+			 * queue in a possible new burst.
-+			 * In both cases last_ins_in_burst needs to be
-+			 * moved forward.
-+			 */
-+			if (!already_in_burst)
-+				bfqd->last_ins_in_burst = jiffies;
-+		}
-+
-+		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
-+			!bfq_bfqq_in_large_burst(bfqq) &&
-+			time_is_before_jiffies(bfqq->soft_rt_next_start);
-+		interactive = !bfq_bfqq_in_large_burst(bfqq) &&
-+			      idle_for_long_time;
-+		entity->budget = max_t(unsigned long, bfqq->max_budget,
-+				       bfq_serv_to_charge(next_rq, bfqq));
-+
-+		if (!bfq_bfqq_IO_bound(bfqq)) {
-+			if (time_before(jiffies,
-+					RQ_BIC(rq)->ttime.last_end_request +
-+					bfqd->bfq_slice_idle)) {
-+				bfqq->requests_within_timer++;
-+				if (bfqq->requests_within_timer >=
-+				    bfqd->bfq_requests_within_timer)
-+					bfq_mark_bfqq_IO_bound(bfqq);
-+			} else
-+				bfqq->requests_within_timer = 0;
-+		}
-+
-+		if (!bfqd->low_latency)
-+			goto add_bfqq_busy;
-+
-+		/*
-+		 * If the queue is not being boosted and has been idle
-+		 * for enough time, start a weight-raising period
-+		 */
-+		if (old_wr_coeff == 1 && (interactive || soft_rt)) {
-+			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
-+			if (interactive)
-+				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else
-+				bfqq->wr_cur_max_time =
-+					bfqd->bfq_wr_rt_max_time;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "wrais starting at %lu, rais_max_time %u",
-+				     jiffies,
-+				     jiffies_to_msecs(bfqq->wr_cur_max_time));
-+		} else if (old_wr_coeff > 1) {
-+			if (interactive)
-+				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else if (bfq_bfqq_in_large_burst(bfqq) ||
-+				 (bfqq->wr_cur_max_time ==
-+				  bfqd->bfq_wr_rt_max_time &&
-+				  !soft_rt)) {
-+				bfqq->wr_coeff = 1;
-+				bfq_log_bfqq(bfqd, bfqq,
-+					"wrais ending at %lu, rais_max_time %u",
-+					jiffies,
-+					jiffies_to_msecs(bfqq->
-+						wr_cur_max_time));
-+			} else if (time_before(
-+					bfqq->last_wr_start_finish +
-+					bfqq->wr_cur_max_time,
-+					jiffies +
-+					bfqd->bfq_wr_rt_max_time) &&
-+				   soft_rt) {
-+				/*
-+				 *
-+				 * The remaining weight-raising time is lower
-+				 * than bfqd->bfq_wr_rt_max_time, which
-+				 * means that the application is enjoying
-+				 * weight raising either because deemed soft-
-+				 * rt in the near past, or because deemed
-+				 * interactive a long ago. In both cases,
-+				 * resetting now the current remaining weight-
-+				 * raising time for the application to the
-+				 * weight-raising duration for soft rt
-+				 * applications would not cause any latency
-+				 * increase for the application (as the new
-+				 * duration would be higher than the remaining
-+				 * time).
-+				 *
-+				 * In addition, the application is now meeting
-+				 * the requirements for being deemed soft rt.
-+				 * In the end we can correctly and safely
-+				 * (re)charge the weight-raising duration for
-+				 * the application with the weight-raising
-+				 * duration for soft rt applications.
-+				 *
-+				 * In particular, doing this recharge now, i.e.,
-+				 * before the weight-raising period for the
-+				 * application finishes, reduces the probability
-+				 * of the following negative scenario:
-+				 * 1) the weight of a soft rt application is
-+				 *    raised at startup (as for any newly
-+				 *    created application),
-+				 * 2) since the application is not interactive,
-+				 *    at a certain time weight-raising is
-+				 *    stopped for the application,
-+				 * 3) at that time the application happens to
-+				 *    still have pending requests, and hence
-+				 *    is destined to not have a chance to be
-+				 *    deemed soft rt before these requests are
-+				 *    completed (see the comments to the
-+				 *    function bfq_bfqq_softrt_next_start()
-+				 *    for details on soft rt detection),
-+				 * 4) these pending requests experience a high
-+				 *    latency because the application is not
-+				 *    weight-raised while they are pending.
-+				 */
-+				bfqq->last_wr_start_finish = jiffies;
-+				bfqq->wr_cur_max_time =
-+					bfqd->bfq_wr_rt_max_time;
-+			}
-+		}
-+		if (old_wr_coeff != bfqq->wr_coeff)
-+			entity->ioprio_changed = 1;
-+add_bfqq_busy:
-+		bfqq->last_idle_bklogged = jiffies;
-+		bfqq->service_from_backlogged = 0;
-+		bfq_clear_bfqq_softrt_update(bfqq);
-+		bfq_add_bfqq_busy(bfqd, bfqq);
-+	} else {
-+		if (bfqd->low_latency && old_wr_coeff == 1 && !rq_is_sync(rq) &&
-+		    time_is_before_jiffies(
-+				bfqq->last_wr_start_finish +
-+				bfqd->bfq_wr_min_inter_arr_async)) {
-+			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
-+			bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+
-+			bfqd->wr_busy_queues++;
-+			entity->ioprio_changed = 1;
-+			bfq_log_bfqq(bfqd, bfqq,
-+			    "non-idle wrais starting at %lu, rais_max_time %u",
-+			    jiffies,
-+			    jiffies_to_msecs(bfqq->wr_cur_max_time));
-+		}
-+		if (prev != bfqq->next_rq)
-+			bfq_updated_next_req(bfqd, bfqq);
-+	}
-+
-+	if (bfqd->low_latency &&
-+		(old_wr_coeff == 1 || bfqq->wr_coeff == 1 || interactive))
-+		bfqq->last_wr_start_finish = jiffies;
-+}
-+
-+static struct request *bfq_find_rq_fmerge(struct bfq_data *bfqd,
-+					  struct bio *bio)
-+{
-+	struct task_struct *tsk = current;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
-+		return NULL;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	if (bfqq != NULL)
-+		return elv_rb_find(&bfqq->sort_list, bio_end_sector(bio));
-+
-+	return NULL;
-+}
-+
-+static void bfq_activate_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+
-+	bfqd->rq_in_driver++;
-+	bfqd->last_position = blk_rq_pos(rq) + blk_rq_sectors(rq);
-+	bfq_log(bfqd, "activate_request: new bfqd->last_position %llu",
-+		(long long unsigned)bfqd->last_position);
-+}
-+
-+static inline void bfq_deactivate_request(struct request_queue *q,
-+					  struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+
-+	BUG_ON(bfqd->rq_in_driver == 0);
-+	bfqd->rq_in_driver--;
-+}
-+
-+static void bfq_remove_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	const int sync = rq_is_sync(rq);
-+
-+	if (bfqq->next_rq == rq) {
-+		bfqq->next_rq = bfq_find_next_rq(bfqd, bfqq, rq);
-+		bfq_updated_next_req(bfqd, bfqq);
-+	}
-+
-+	if (rq->queuelist.prev != &rq->queuelist)
-+		list_del_init(&rq->queuelist);
-+	BUG_ON(bfqq->queued[sync] == 0);
-+	bfqq->queued[sync]--;
-+	bfqd->queued--;
-+	elv_rb_del(&bfqq->sort_list, rq);
-+
-+	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		if (bfq_bfqq_busy(bfqq) && bfqq != bfqd->in_service_queue)
-+			bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+		/*
-+		 * Remove queue from request-position tree as it is empty.
-+		 */
-+		if (bfqq->pos_root != NULL) {
-+			rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+			bfqq->pos_root = NULL;
-+		}
-+	}
-+
-+	if (rq->cmd_flags & REQ_META) {
-+		BUG_ON(bfqq->meta_pending == 0);
-+		bfqq->meta_pending--;
-+	}
-+}
-+
-+static int bfq_merge(struct request_queue *q, struct request **req,
-+		     struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct request *__rq;
-+
-+	__rq = bfq_find_rq_fmerge(bfqd, bio);
-+	if (__rq != NULL && elv_rq_merge_ok(__rq, bio)) {
-+		*req = __rq;
-+		return ELEVATOR_FRONT_MERGE;
-+	}
-+
-+	return ELEVATOR_NO_MERGE;
-+}
-+
-+static void bfq_merged_request(struct request_queue *q, struct request *req,
-+			       int type)
-+{
-+	if (type == ELEVATOR_FRONT_MERGE &&
-+	    rb_prev(&req->rb_node) &&
-+	    blk_rq_pos(req) <
-+	    blk_rq_pos(container_of(rb_prev(&req->rb_node),
-+				    struct request, rb_node))) {
-+		struct bfq_queue *bfqq = RQ_BFQQ(req);
-+		struct bfq_data *bfqd = bfqq->bfqd;
-+		struct request *prev, *next_rq;
-+
-+		/* Reposition request in its sort_list */
-+		elv_rb_del(&bfqq->sort_list, req);
-+		elv_rb_add(&bfqq->sort_list, req);
-+		/* Choose next request to be served for bfqq */
-+		prev = bfqq->next_rq;
-+		next_rq = bfq_choose_req(bfqd, bfqq->next_rq, req,
-+					 bfqd->last_position);
-+		BUG_ON(next_rq == NULL);
-+		bfqq->next_rq = next_rq;
-+		/*
-+		 * If next_rq changes, update both the queue's budget to
-+		 * fit the new request and the queue's position in its
-+		 * rq_pos_tree.
-+		 */
-+		if (prev != bfqq->next_rq) {
-+			bfq_updated_next_req(bfqd, bfqq);
-+			bfq_rq_pos_tree_add(bfqd, bfqq);
-+		}
-+	}
-+}
-+
-+static void bfq_merged_requests(struct request_queue *q, struct request *rq,
-+				struct request *next)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq), *next_bfqq = RQ_BFQQ(next);
-+
-+	/*
-+	 * If next and rq belong to the same bfq_queue and next is older
-+	 * than rq, then reposition rq in the fifo (by substituting next
-+	 * with rq). Otherwise, if next and rq belong to different
-+	 * bfq_queues, never reposition rq: in fact, we would have to
-+	 * reposition it with respect to next's position in its own fifo,
-+	 * which would most certainly be too expensive with respect to
-+	 * the benefits.
-+	 */
-+	if (bfqq == next_bfqq &&
-+	    !list_empty(&rq->queuelist) && !list_empty(&next->queuelist) &&
-+	    time_before(next->fifo_time, rq->fifo_time)) {
-+		list_del_init(&rq->queuelist);
-+		list_replace_init(&next->queuelist, &rq->queuelist);
-+		rq->fifo_time = next->fifo_time;
-+	}
-+
-+	if (bfqq->next_rq == next)
-+		bfqq->next_rq = rq;
-+
-+	bfq_remove_request(next);
-+}
-+
-+/* Must be called with bfqq != NULL */
-+static inline void bfq_bfqq_end_wr(struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfqq == NULL);
-+	if (bfq_bfqq_busy(bfqq))
-+		bfqq->bfqd->wr_busy_queues--;
-+	bfqq->wr_coeff = 1;
-+	bfqq->wr_cur_max_time = 0;
-+	/* Trigger a weight change on the next activation of the queue */
-+	bfqq->entity.ioprio_changed = 1;
-+}
-+
-+static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
-+				    struct bfq_group *bfqg)
-+{
-+	int i, j;
-+
-+	for (i = 0; i < 2; i++)
-+		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			if (bfqg->async_bfqq[i][j] != NULL)
-+				bfq_bfqq_end_wr(bfqg->async_bfqq[i][j]);
-+	if (bfqg->async_idle_bfqq != NULL)
-+		bfq_bfqq_end_wr(bfqg->async_idle_bfqq);
-+}
-+
-+static void bfq_end_wr(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	spin_lock_irq(bfqd->queue->queue_lock);
-+
-+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list)
-+		bfq_bfqq_end_wr(bfqq);
-+	list_for_each_entry(bfqq, &bfqd->idle_list, bfqq_list)
-+		bfq_bfqq_end_wr(bfqq);
-+	bfq_end_wr_async(bfqd);
-+
-+	spin_unlock_irq(bfqd->queue->queue_lock);
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
-+						  struct bfq_queue *bfqq)
-+{
-+	if (!bfqq)
-+		bfqq = bfq_get_next_queue(bfqd);
-+	else
-+		bfq_get_next_queue_forced(bfqd, bfqq);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
-+static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
-+					  struct request *rq)
-+{
-+	if (blk_rq_pos(rq) >= bfqd->last_position)
-+		return blk_rq_pos(rq) - bfqd->last_position;
-+	else
-+		return bfqd->last_position - blk_rq_pos(rq);
-+}
-+
-+/*
-+ * Return true if bfqq has no request pending and rq is close enough to
-+ * bfqd->last_position, or if rq is closer to bfqd->last_position than
-+ * bfqq->next_rq
-+ */
-+static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+{
-+	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+}
-+
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+{
-+	struct rb_root *root = &bfqd->rq_pos_tree;
-+	struct rb_node *parent, *node;
-+	struct bfq_queue *__bfqq;
-+	sector_t sector = bfqd->last_position;
-+
-+	if (RB_EMPTY_ROOT(root))
-+		return NULL;
-+
-+	/*
-+	 * First, if we find a request starting at the end of the last
-+	 * request, choose it.
-+	 */
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, root, sector, &parent, NULL);
-+	if (__bfqq != NULL)
-+		return __bfqq;
-+
-+	/*
-+	 * If the exact sector wasn't found, the parent of the NULL leaf
-+	 * will contain the closest sector (rq_pos_tree sorted by
-+	 * next_request position).
-+	 */
-+	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	if (blk_rq_pos(__bfqq->next_rq) < sector)
-+		node = rb_next(&__bfqq->pos_node);
-+	else
-+		node = rb_prev(&__bfqq->pos_node);
-+	if (node == NULL)
-+		return NULL;
-+
-+	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	return NULL;
-+}
-+
-+/*
-+ * bfqd - obvious
-+ * cur_bfqq - passed in so that we don't decide that the current queue
-+ *            is closely cooperating with itself.
-+ *
-+ * We are assuming that cur_bfqq has dispatched at least one request,
-+ * and that bfqd->last_position reflects a position on the disk associated
-+ * with the I/O issued by cur_bfqq.
-+ */
-+static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
-+					      struct bfq_queue *cur_bfqq)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	if (bfq_class_idle(cur_bfqq))
-+		return NULL;
-+	if (!bfq_bfqq_sync(cur_bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(cur_bfqq))
-+		return NULL;
-+
-+	/* If device has only one backlogged bfq_queue, don't search. */
-+	if (bfqd->busy_queues == 1)
-+		return NULL;
-+
-+	/*
-+	 * We should notice if some of the queues are cooperating, e.g.
-+	 * working closely on the same area of the disk. In that case,
-+	 * we can group them together and don't waste time idling.
-+	 */
-+	bfqq = bfqq_close(bfqd);
-+	if (bfqq == NULL || bfqq == cur_bfqq)
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues from different bfq_groups.
-+	*/
-+	if (bfqq->entity.parent != cur_bfqq->entity.parent)
-+		return NULL;
-+
-+	/*
-+	 * It only makes sense to merge sync queues.
-+	 */
-+	if (!bfq_bfqq_sync(bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(bfqq))
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues of different priority classes.
-+	 */
-+	if (bfq_class_rt(bfqq) != bfq_class_rt(cur_bfqq))
-+		return NULL;
-+
-+	return bfqq;
-+}
-+
-+/*
-+ * If enough samples have been computed, return the current max budget
-+ * stored in bfqd, which is dynamically updated according to the
-+ * estimated disk peak rate; otherwise return the default max budget
-+ */
-+static inline unsigned long bfq_max_budget(struct bfq_data *bfqd)
-+{
-+	if (bfqd->budgets_assigned < 194)
-+		return bfq_default_max_budget;
-+	else
-+		return bfqd->bfq_max_budget;
-+}
-+
-+/*
-+ * Return min budget, which is a fraction of the current or default
-+ * max budget (trying with 1/32)
-+ */
-+static inline unsigned long bfq_min_budget(struct bfq_data *bfqd)
-+{
-+	if (bfqd->budgets_assigned < 194)
-+		return bfq_default_max_budget / 32;
-+	else
-+		return bfqd->bfq_max_budget / 32;
-+}
-+
-+static void bfq_arm_slice_timer(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfqd->in_service_queue;
-+	struct bfq_io_cq *bic;
-+	unsigned long sl;
-+
-+	BUG_ON(!RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	/* Processes have exited, don't wait. */
-+	bic = bfqd->in_service_bic;
-+	if (bic == NULL || atomic_read(&bic->icq.ioc->active_ref) == 0)
-+		return;
-+
-+	bfq_mark_bfqq_wait_request(bfqq);
-+
-+	/*
-+	 * We don't want to idle for seeks, but we do want to allow
-+	 * fair distribution of slice time for a process doing back-to-back
-+	 * seeks. So allow a little bit of time for him to submit a new rq.
-+	 *
-+	 * To prevent processes with (partly) seeky workloads from
-+	 * being too ill-treated, grant them a small fraction of the
-+	 * assigned budget before reducing the waiting time to
-+	 * BFQ_MIN_TT. This happened to help reduce latency.
-+	 */
-+	sl = bfqd->bfq_slice_idle;
-+	/*
-+	 * Unless the queue is being weight-raised or the scenario is
-+	 * asymmetric, grant only minimum idle time if the queue either
-+	 * has been seeky for long enough or has already proved to be
-+	 * constantly seeky.
-+	 */
-+	if (bfq_sample_valid(bfqq->seek_samples) &&
-+	    ((BFQQ_SEEKY(bfqq) && bfqq->entity.service >
-+				  bfq_max_budget(bfqq->bfqd) / 8) ||
-+	      bfq_bfqq_constantly_seeky(bfqq)) && bfqq->wr_coeff == 1 &&
-+	    symmetric_scenario)
-+		sl = min(sl, msecs_to_jiffies(BFQ_MIN_TT));
-+	else if (bfqq->wr_coeff > 1)
-+		sl = sl * 3;
-+	bfqd->last_idling_start = ktime_get();
-+	mod_timer(&bfqd->idle_slice_timer, jiffies + sl);
-+	bfq_log(bfqd, "arm idle: %u/%u ms",
-+		jiffies_to_msecs(sl), jiffies_to_msecs(bfqd->bfq_slice_idle));
-+}
-+
-+/*
-+ * Set the maximum time for the in-service queue to consume its
-+ * budget. This prevents seeky processes from lowering the disk
-+ * throughput (always guaranteed with a time slice scheme as in CFQ).
-+ */
-+static void bfq_set_budget_timeout(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfqd->in_service_queue;
-+	unsigned int timeout_coeff;
-+	if (bfqq->wr_cur_max_time == bfqd->bfq_wr_rt_max_time)
-+		timeout_coeff = 1;
-+	else
-+		timeout_coeff = bfqq->entity.weight / bfqq->entity.orig_weight;
-+
-+	bfqd->last_budget_start = ktime_get();
-+
-+	bfq_clear_bfqq_budget_new(bfqq);
-+	bfqq->budget_timeout = jiffies +
-+		bfqd->bfq_timeout[bfq_bfqq_sync(bfqq)] * timeout_coeff;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "set budget_timeout %u",
-+		jiffies_to_msecs(bfqd->bfq_timeout[bfq_bfqq_sync(bfqq)] *
-+		timeout_coeff));
-+}
-+
-+/*
-+ * Move request from internal lists to the request queue dispatch list.
-+ */
-+static void bfq_dispatch_insert(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	/*
-+	 * For consistency, the next instruction should have been executed
-+	 * after removing the request from the queue and dispatching it.
-+	 * We execute instead this instruction before bfq_remove_request()
-+	 * (and hence introduce a temporary inconsistency), for efficiency.
-+	 * In fact, in a forced_dispatch, this prevents two counters related
-+	 * to bfqq->dispatched to risk to be uselessly decremented if bfqq
-+	 * is not in service, and then to be incremented again after
-+	 * incrementing bfqq->dispatched.
-+	 */
-+	bfqq->dispatched++;
-+	bfq_remove_request(rq);
-+	elv_dispatch_sort(q, rq);
-+
-+	if (bfq_bfqq_sync(bfqq))
-+		bfqd->sync_flight++;
-+}
-+
-+/*
-+ * Return expired entry, or NULL to just start from scratch in rbtree.
-+ */
-+static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
-+{
-+	struct request *rq = NULL;
-+
-+	if (bfq_bfqq_fifo_expire(bfqq))
-+		return NULL;
-+
-+	bfq_mark_bfqq_fifo_expire(bfqq);
-+
-+	if (list_empty(&bfqq->fifo))
-+		return NULL;
-+
-+	rq = rq_entry_fifo(bfqq->fifo.next);
-+
-+	if (time_before(jiffies, rq->fifo_time))
-+		return NULL;
-+
-+	return rq;
-+}
-+
-+/* Must be called with the queue_lock held. */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
-+static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return;
-+
-+	/*
-+	 * Merge in the direction of the lesser amount of work.
-+	 */
-+	if (new_process_refs >= process_refs) {
-+		bfqq->new_bfqq = new_bfqq;
-+		atomic_add(process_refs, &new_bfqq->ref);
-+	} else {
-+		new_bfqq->new_bfqq = bfqq;
-+		atomic_add(new_process_refs, &bfqq->ref);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+}
-+
-+static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	return entity->budget - entity->service;
-+}
-+
-+static void __bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	__bfq_bfqd_reset_in_service(bfqd);
-+
-+	/*
-+	 * If this bfqq is shared between multiple processes, check
-+	 * to make sure that those processes are still issuing I/Os
-+	 * within the mean seek distance. If not, it may be time to
-+	 * break the queues apart again.
-+	 */
-+	if (bfq_bfqq_coop(bfqq) && BFQQ_SEEKY(bfqq))
-+		bfq_mark_bfqq_split_coop(bfqq);
-+
-+	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		/*
-+		 * Overloading budget_timeout field to store the time
-+		 * at which the queue remains with no backlog; used by
-+		 * the weight-raising mechanism.
-+		 */
-+		bfqq->budget_timeout = jiffies;
-+		bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+	} else {
-+		bfq_activate_bfqq(bfqd, bfqq);
-+		/*
-+		 * Resort priority tree of potential close cooperators.
-+		 */
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+	}
-+}
-+
-+/**
-+ * __bfq_bfqq_recalc_budget - try to adapt the budget to the @bfqq behavior.
-+ * @bfqd: device data.
-+ * @bfqq: queue to update.
-+ * @reason: reason for expiration.
-+ *
-+ * Handle the feedback on @bfqq budget.  See the body for detailed
-+ * comments.
-+ */
-+static void __bfq_bfqq_recalc_budget(struct bfq_data *bfqd,
-+				     struct bfq_queue *bfqq,
-+				     enum bfqq_expiration reason)
-+{
-+	struct request *next_rq;
-+	unsigned long budget, min_budget;
-+
-+	budget = bfqq->max_budget;
-+	min_budget = bfq_min_budget(bfqd);
-+
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last budg %lu, budg left %lu",
-+		bfqq->entity.budget, bfq_bfqq_budget_left(bfqq));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last max_budg %lu, min budg %lu",
-+		budget, bfq_min_budget(bfqd));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: sync %d, seeky %d",
-+		bfq_bfqq_sync(bfqq), BFQQ_SEEKY(bfqd->in_service_queue));
-+
-+	if (bfq_bfqq_sync(bfqq)) {
-+		switch (reason) {
-+		/*
-+		 * Caveat: in all the following cases we trade latency
-+		 * for throughput.
-+		 */
-+		case BFQ_BFQQ_TOO_IDLE:
-+			/*
-+			 * This is the only case where we may reduce
-+			 * the budget: if there is no request of the
-+			 * process still waiting for completion, then
-+			 * we assume (tentatively) that the timer has
-+			 * expired because the batch of requests of
-+			 * the process could have been served with a
-+			 * smaller budget.  Hence, betting that
-+			 * process will behave in the same way when it
-+			 * becomes backlogged again, we reduce its
-+			 * next budget.  As long as we guess right,
-+			 * this budget cut reduces the latency
-+			 * experienced by the process.
-+			 *
-+			 * However, if there are still outstanding
-+			 * requests, then the process may have not yet
-+			 * issued its next request just because it is
-+			 * still waiting for the completion of some of
-+			 * the still outstanding ones.  So in this
-+			 * subcase we do not reduce its budget, on the
-+			 * contrary we increase it to possibly boost
-+			 * the throughput, as discussed in the
-+			 * comments to the BUDGET_TIMEOUT case.
-+			 */
-+			if (bfqq->dispatched > 0) /* still outstanding reqs */
-+				budget = min(budget * 2, bfqd->bfq_max_budget);
-+			else {
-+				if (budget > 5 * min_budget)
-+					budget -= 4 * min_budget;
-+				else
-+					budget = min_budget;
-+			}
-+			break;
-+		case BFQ_BFQQ_BUDGET_TIMEOUT:
-+			/*
-+			 * We double the budget here because: 1) it
-+			 * gives the chance to boost the throughput if
-+			 * this is not a seeky process (which may have
-+			 * bumped into this timeout because of, e.g.,
-+			 * ZBR), 2) together with charge_full_budget
-+			 * it helps give seeky processes higher
-+			 * timestamps, and hence be served less
-+			 * frequently.
-+			 */
-+			budget = min(budget * 2, bfqd->bfq_max_budget);
-+			break;
-+		case BFQ_BFQQ_BUDGET_EXHAUSTED:
-+			/*
-+			 * The process still has backlog, and did not
-+			 * let either the budget timeout or the disk
-+			 * idling timeout expire. Hence it is not
-+			 * seeky, has a short thinktime and may be
-+			 * happy with a higher budget too. So
-+			 * definitely increase the budget of this good
-+			 * candidate to boost the disk throughput.
-+			 */
-+			budget = min(budget * 4, bfqd->bfq_max_budget);
-+			break;
-+		case BFQ_BFQQ_NO_MORE_REQUESTS:
-+		       /*
-+			* Leave the budget unchanged.
-+			*/
-+		default:
-+			return;
-+		}
-+	} else /* async queue */
-+	    /* async queues get always the maximum possible budget
-+	     * (their ability to dispatch is limited by
-+	     * @bfqd->bfq_max_budget_async_rq).
-+	     */
-+		budget = bfqd->bfq_max_budget;
-+
-+	bfqq->max_budget = budget;
-+
-+	if (bfqd->budgets_assigned >= 194 && bfqd->bfq_user_max_budget == 0 &&
-+	    bfqq->max_budget > bfqd->bfq_max_budget)
-+		bfqq->max_budget = bfqd->bfq_max_budget;
-+
-+	/*
-+	 * Make sure that we have enough budget for the next request.
-+	 * Since the finish time of the bfqq must be kept in sync with
-+	 * the budget, be sure to call __bfq_bfqq_expire() after the
-+	 * update.
-+	 */
-+	next_rq = bfqq->next_rq;
-+	if (next_rq != NULL)
-+		bfqq->entity.budget = max_t(unsigned long, bfqq->max_budget,
-+					    bfq_serv_to_charge(next_rq, bfqq));
-+	else
-+		bfqq->entity.budget = bfqq->max_budget;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "head sect: %u, new budget %lu",
-+			next_rq != NULL ? blk_rq_sectors(next_rq) : 0,
-+			bfqq->entity.budget);
-+}
-+
-+static unsigned long bfq_calc_max_budget(u64 peak_rate, u64 timeout)
-+{
-+	unsigned long max_budget;
-+
-+	/*
-+	 * The max_budget calculated when autotuning is equal to the
-+	 * amount of sectors transfered in timeout_sync at the
-+	 * estimated peak rate.
-+	 */
-+	max_budget = (unsigned long)(peak_rate * 1000 *
-+				     timeout >> BFQ_RATE_SHIFT);
-+
-+	return max_budget;
-+}
-+
-+/*
-+ * In addition to updating the peak rate, checks whether the process
-+ * is "slow", and returns 1 if so. This slow flag is used, in addition
-+ * to the budget timeout, to reduce the amount of service provided to
-+ * seeky processes, and hence reduce their chances to lower the
-+ * throughput. See the code for more details.
-+ */
-+static int bfq_update_peak_rate(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int compensate, enum bfqq_expiration reason)
-+{
-+	u64 bw, usecs, expected, timeout;
-+	ktime_t delta;
-+	int update = 0;
-+
-+	if (!bfq_bfqq_sync(bfqq) || bfq_bfqq_budget_new(bfqq))
-+		return 0;
-+
-+	if (compensate)
-+		delta = bfqd->last_idling_start;
-+	else
-+		delta = ktime_get();
-+	delta = ktime_sub(delta, bfqd->last_budget_start);
-+	usecs = ktime_to_us(delta);
-+
-+	/* Don't trust short/unrealistic values. */
-+	if (usecs < 100 || usecs >= LONG_MAX)
-+		return 0;
-+
-+	/*
-+	 * Calculate the bandwidth for the last slice.  We use a 64 bit
-+	 * value to store the peak rate, in sectors per usec in fixed
-+	 * point math.  We do so to have enough precision in the estimate
-+	 * and to avoid overflows.
-+	 */
-+	bw = (u64)bfqq->entity.service << BFQ_RATE_SHIFT;
-+	do_div(bw, (unsigned long)usecs);
-+
-+	timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
-+
-+	/*
-+	 * Use only long (> 20ms) intervals to filter out spikes for
-+	 * the peak rate estimation.
-+	 */
-+	if (usecs > 20000) {
-+		if (bw > bfqd->peak_rate ||
-+		   (!BFQQ_SEEKY(bfqq) &&
-+		    reason == BFQ_BFQQ_BUDGET_TIMEOUT)) {
-+			bfq_log(bfqd, "measured bw =%llu", bw);
-+			/*
-+			 * To smooth oscillations use a low-pass filter with
-+			 * alpha=7/8, i.e.,
-+			 * new_rate = (7/8) * old_rate + (1/8) * bw
-+			 */
-+			do_div(bw, 8);
-+			if (bw == 0)
-+				return 0;
-+			bfqd->peak_rate *= 7;
-+			do_div(bfqd->peak_rate, 8);
-+			bfqd->peak_rate += bw;
-+			update = 1;
-+			bfq_log(bfqd, "new peak_rate=%llu", bfqd->peak_rate);
-+		}
-+
-+		update |= bfqd->peak_rate_samples == BFQ_PEAK_RATE_SAMPLES - 1;
-+
-+		if (bfqd->peak_rate_samples < BFQ_PEAK_RATE_SAMPLES)
-+			bfqd->peak_rate_samples++;
-+
-+		if (bfqd->peak_rate_samples == BFQ_PEAK_RATE_SAMPLES &&
-+		    update) {
-+			int dev_type = blk_queue_nonrot(bfqd->queue);
-+			if (bfqd->bfq_user_max_budget == 0) {
-+				bfqd->bfq_max_budget =
-+					bfq_calc_max_budget(bfqd->peak_rate,
-+							    timeout);
-+				bfq_log(bfqd, "new max_budget=%lu",
-+					bfqd->bfq_max_budget);
-+			}
-+			if (bfqd->device_speed == BFQ_BFQD_FAST &&
-+			    bfqd->peak_rate < device_speed_thresh[dev_type]) {
-+				bfqd->device_speed = BFQ_BFQD_SLOW;
-+				bfqd->RT_prod = R_slow[dev_type] *
-+						T_slow[dev_type];
-+			} else if (bfqd->device_speed == BFQ_BFQD_SLOW &&
-+			    bfqd->peak_rate > device_speed_thresh[dev_type]) {
-+				bfqd->device_speed = BFQ_BFQD_FAST;
-+				bfqd->RT_prod = R_fast[dev_type] *
-+						T_fast[dev_type];
-+			}
-+		}
-+	}
-+
-+	/*
-+	 * If the process has been served for a too short time
-+	 * interval to let its possible sequential accesses prevail on
-+	 * the initial seek time needed to move the disk head on the
-+	 * first sector it requested, then give the process a chance
-+	 * and for the moment return false.
-+	 */
-+	if (bfqq->entity.budget <= bfq_max_budget(bfqd) / 8)
-+		return 0;
-+
-+	/*
-+	 * A process is considered ``slow'' (i.e., seeky, so that we
-+	 * cannot treat it fairly in the service domain, as it would
-+	 * slow down too much the other processes) if, when a slice
-+	 * ends for whatever reason, it has received service at a
-+	 * rate that would not be high enough to complete the budget
-+	 * before the budget timeout expiration.
-+	 */
-+	expected = bw * 1000 * timeout >> BFQ_RATE_SHIFT;
-+
-+	/*
-+	 * Caveat: processes doing IO in the slower disk zones will
-+	 * tend to be slow(er) even if not seeky. And the estimated
-+	 * peak rate will actually be an average over the disk
-+	 * surface. Hence, to not be too harsh with unlucky processes,
-+	 * we keep a budget/3 margin of safety before declaring a
-+	 * process slow.
-+	 */
-+	return expected > (4 * bfqq->entity.budget) / 3;
-+}
-+
-+/*
-+ * To be deemed as soft real-time, an application must meet two
-+ * requirements. First, the application must not require an average
-+ * bandwidth higher than the approximate bandwidth required to playback or
-+ * record a compressed high-definition video.
-+ * The next function is invoked on the completion of the last request of a
-+ * batch, to compute the next-start time instant, soft_rt_next_start, such
-+ * that, if the next request of the application does not arrive before
-+ * soft_rt_next_start, then the above requirement on the bandwidth is met.
-+ *
-+ * The second requirement is that the request pattern of the application is
-+ * isochronous, i.e., that, after issuing a request or a batch of requests,
-+ * the application stops issuing new requests until all its pending requests
-+ * have been completed. After that, the application may issue a new batch,
-+ * and so on.
-+ * For this reason the next function is invoked to compute
-+ * soft_rt_next_start only for applications that meet this requirement,
-+ * whereas soft_rt_next_start is set to infinity for applications that do
-+ * not.
-+ *
-+ * Unfortunately, even a greedy application may happen to behave in an
-+ * isochronous way if the CPU load is high. In fact, the application may
-+ * stop issuing requests while the CPUs are busy serving other processes,
-+ * then restart, then stop again for a while, and so on. In addition, if
-+ * the disk achieves a low enough throughput with the request pattern
-+ * issued by the application (e.g., because the request pattern is random
-+ * and/or the device is slow), then the application may meet the above
-+ * bandwidth requirement too. To prevent such a greedy application to be
-+ * deemed as soft real-time, a further rule is used in the computation of
-+ * soft_rt_next_start: soft_rt_next_start must be higher than the current
-+ * time plus the maximum time for which the arrival of a request is waited
-+ * for when a sync queue becomes idle, namely bfqd->bfq_slice_idle.
-+ * This filters out greedy applications, as the latter issue instead their
-+ * next request as soon as possible after the last one has been completed
-+ * (in contrast, when a batch of requests is completed, a soft real-time
-+ * application spends some time processing data).
-+ *
-+ * Unfortunately, the last filter may easily generate false positives if
-+ * only bfqd->bfq_slice_idle is used as a reference time interval and one
-+ * or both the following cases occur:
-+ * 1) HZ is so low that the duration of a jiffy is comparable to or higher
-+ *    than bfqd->bfq_slice_idle. This happens, e.g., on slow devices with
-+ *    HZ=100.
-+ * 2) jiffies, instead of increasing at a constant rate, may stop increasing
-+ *    for a while, then suddenly 'jump' by several units to recover the lost
-+ *    increments. This seems to happen, e.g., inside virtual machines.
-+ * To address this issue, we do not use as a reference time interval just
-+ * bfqd->bfq_slice_idle, but bfqd->bfq_slice_idle plus a few jiffies. In
-+ * particular we add the minimum number of jiffies for which the filter
-+ * seems to be quite precise also in embedded systems and KVM/QEMU virtual
-+ * machines.
-+ */
-+static inline unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
-+						       struct bfq_queue *bfqq)
-+{
-+	return max(bfqq->last_idle_bklogged +
-+		   HZ * bfqq->service_from_backlogged /
-+		   bfqd->bfq_wr_max_softrt_rate,
-+		   jiffies + bfqq->bfqd->bfq_slice_idle + 4);
-+}
-+
-+/*
-+ * Return the largest-possible time instant such that, for as long as possible,
-+ * the current time will be lower than this time instant according to the macro
-+ * time_is_before_jiffies().
-+ */
-+static inline unsigned long bfq_infinity_from_now(unsigned long now)
-+{
-+	return now + ULONG_MAX / 2;
-+}
-+
-+/**
-+ * bfq_bfqq_expire - expire a queue.
-+ * @bfqd: device owning the queue.
-+ * @bfqq: the queue to expire.
-+ * @compensate: if true, compensate for the time spent idling.
-+ * @reason: the reason causing the expiration.
-+ *
-+ *
-+ * If the process associated to the queue is slow (i.e., seeky), or in
-+ * case of budget timeout, or, finally, if it is async, we
-+ * artificially charge it an entire budget (independently of the
-+ * actual service it received). As a consequence, the queue will get
-+ * higher timestamps than the correct ones upon reactivation, and
-+ * hence it will be rescheduled as if it had received more service
-+ * than what it actually received. In the end, this class of processes
-+ * will receive less service in proportion to how slowly they consume
-+ * their budgets (and hence how seriously they tend to lower the
-+ * throughput).
-+ *
-+ * In contrast, when a queue expires because it has been idling for
-+ * too much or because it exhausted its budget, we do not touch the
-+ * amount of service it has received. Hence when the queue will be
-+ * reactivated and its timestamps updated, the latter will be in sync
-+ * with the actual service received by the queue until expiration.
-+ *
-+ * Charging a full budget to the first type of queues and the exact
-+ * service to the others has the effect of using the WF2Q+ policy to
-+ * schedule the former on a timeslice basis, without violating the
-+ * service domain guarantees of the latter.
-+ */
-+static void bfq_bfqq_expire(struct bfq_data *bfqd,
-+			    struct bfq_queue *bfqq,
-+			    int compensate,
-+			    enum bfqq_expiration reason)
-+{
-+	int slow;
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	/* Update disk peak rate for autotuning and check whether the
-+	 * process is slow (see bfq_update_peak_rate).
-+	 */
-+	slow = bfq_update_peak_rate(bfqd, bfqq, compensate, reason);
-+
-+	/*
-+	 * As above explained, 'punish' slow (i.e., seeky), timed-out
-+	 * and async queues, to favor sequential sync workloads.
-+	 *
-+	 * Processes doing I/O in the slower disk zones will tend to be
-+	 * slow(er) even if not seeky. Hence, since the estimated peak
-+	 * rate is actually an average over the disk surface, these
-+	 * processes may timeout just for bad luck. To avoid punishing
-+	 * them we do not charge a full budget to a process that
-+	 * succeeded in consuming at least 2/3 of its budget.
-+	 */
-+	if (slow || (reason == BFQ_BFQQ_BUDGET_TIMEOUT &&
-+		     bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3))
-+		bfq_bfqq_charge_full_budget(bfqq);
-+
-+	bfqq->service_from_backlogged += bfqq->entity.service;
-+
-+	if (BFQQ_SEEKY(bfqq) && reason == BFQ_BFQQ_BUDGET_TIMEOUT &&
-+	    !bfq_bfqq_constantly_seeky(bfqq)) {
-+		bfq_mark_bfqq_constantly_seeky(bfqq);
-+		if (!blk_queue_nonrot(bfqd->queue))
-+			bfqd->const_seeky_busy_in_flight_queues++;
-+	}
-+
-+	if (reason == BFQ_BFQQ_TOO_IDLE &&
-+	    bfqq->entity.service <= 2 * bfqq->entity.budget / 10 )
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+
-+	if (bfqd->low_latency && bfqq->wr_coeff == 1)
-+		bfqq->last_wr_start_finish = jiffies;
-+
-+	if (bfqd->low_latency && bfqd->bfq_wr_max_softrt_rate > 0 &&
-+	    RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		/*
-+		 * If we get here, and there are no outstanding requests,
-+		 * then the request pattern is isochronous (see the comments
-+		 * to the function bfq_bfqq_softrt_next_start()). Hence we
-+		 * can compute soft_rt_next_start. If, instead, the queue
-+		 * still has outstanding requests, then we have to wait
-+		 * for the completion of all the outstanding requests to
-+		 * discover whether the request pattern is actually
-+		 * isochronous.
-+		 */
-+		if (bfqq->dispatched == 0)
-+			bfqq->soft_rt_next_start =
-+				bfq_bfqq_softrt_next_start(bfqd, bfqq);
-+		else {
-+			/*
-+			 * The application is still waiting for the
-+			 * completion of one or more requests:
-+			 * prevent it from possibly being incorrectly
-+			 * deemed as soft real-time by setting its
-+			 * soft_rt_next_start to infinity. In fact,
-+			 * without this assignment, the application
-+			 * would be incorrectly deemed as soft
-+			 * real-time if:
-+			 * 1) it issued a new request before the
-+			 *    completion of all its in-flight
-+			 *    requests, and
-+			 * 2) at that time, its soft_rt_next_start
-+			 *    happened to be in the past.
-+			 */
-+			bfqq->soft_rt_next_start =
-+				bfq_infinity_from_now(jiffies);
-+			/*
-+			 * Schedule an update of soft_rt_next_start to when
-+			 * the task may be discovered to be isochronous.
-+			 */
-+			bfq_mark_bfqq_softrt_update(bfqq);
-+		}
-+	}
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+		"expire (%d, slow %d, num_disp %d, idle_win %d)", reason,
-+		slow, bfqq->dispatched, bfq_bfqq_idle_window(bfqq));
-+
-+	/*
-+	 * Increase, decrease or leave budget unchanged according to
-+	 * reason.
-+	 */
-+	__bfq_bfqq_recalc_budget(bfqd, bfqq, reason);
-+	__bfq_bfqq_expire(bfqd, bfqq);
-+}
-+
-+/*
-+ * Budget timeout is not implemented through a dedicated timer, but
-+ * just checked on request arrivals and completions, as well as on
-+ * idle timer expirations.
-+ */
-+static int bfq_bfqq_budget_timeout(struct bfq_queue *bfqq)
-+{
-+	if (bfq_bfqq_budget_new(bfqq) ||
-+	    time_before(jiffies, bfqq->budget_timeout))
-+		return 0;
-+	return 1;
-+}
-+
-+/*
-+ * If we expire a queue that is waiting for the arrival of a new
-+ * request, we may prevent the fictitious timestamp back-shifting that
-+ * allows the guarantees of the queue to be preserved (see [1] for
-+ * this tricky aspect). Hence we return true only if this condition
-+ * does not hold, or if the queue is slow enough to deserve only to be
-+ * kicked off for preserving a high throughput.
-+*/
-+static inline int bfq_may_expire_for_budg_timeout(struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq,
-+		"may_budget_timeout: wait_request %d left %d timeout %d",
-+		bfq_bfqq_wait_request(bfqq),
-+			bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3,
-+		bfq_bfqq_budget_timeout(bfqq));
-+
-+	return (!bfq_bfqq_wait_request(bfqq) ||
-+		bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3)
-+		&&
-+		bfq_bfqq_budget_timeout(bfqq);
-+}
-+
-+/*
-+ * Device idling is allowed only for the queues for which this function
-+ * returns true. For this reason, the return value of this function plays a
-+ * critical role for both throughput boosting and service guarantees. The
-+ * return value is computed through a logical expression. In this rather
-+ * long comment, we try to briefly describe all the details and motivations
-+ * behind the components of this logical expression.
-+ *
-+ * First, the expression is false if bfqq is not sync, or if: bfqq happened
-+ * to become active during a large burst of queue activations, and the
-+ * pattern of requests bfqq contains boosts the throughput if bfqq is
-+ * expired. In fact, queues that became active during a large burst benefit
-+ * only from throughput, as discussed in the comments to bfq_handle_burst.
-+ * In this respect, expiring bfqq certainly boosts the throughput on NCQ-
-+ * capable flash-based devices, whereas, on rotational devices, it boosts
-+ * the throughput only if bfqq contains random requests.
-+ *
-+ * On the opposite end, if (a) bfqq is sync, (b) the above burst-related
-+ * condition does not hold, and (c) bfqq is being weight-raised, then the
-+ * expression always evaluates to true, as device idling is instrumental
-+ * for preserving low-latency guarantees (see [1]). If, instead, conditions
-+ * (a) and (b) do hold, but (c) does not, then the expression evaluates to
-+ * true only if: (1) bfqq is I/O-bound and has a non-null idle window, and
-+ * (2) at least one of the following two conditions holds.
-+ * The first condition is that the device is not performing NCQ, because
-+ * idling the device most certainly boosts the throughput if this condition
-+ * holds and bfqq is I/O-bound and has been granted a non-null idle window.
-+ * The second compound condition is made of the logical AND of two components.
-+ *
-+ * The first component is true only if there is no weight-raised busy
-+ * queue. This guarantees that the device is not idled for a sync non-
-+ * weight-raised queue when there are busy weight-raised queues. The former
-+ * is then expired immediately if empty. Combined with the timestamping
-+ * rules of BFQ (see [1] for details), this causes sync non-weight-raised
-+ * queues to get a lower number of requests served, and hence to ask for a
-+ * lower number of requests from the request pool, before the busy weight-
-+ * raised queues get served again.
-+ *
-+ * This is beneficial for the processes associated with weight-raised
-+ * queues, when the request pool is saturated (e.g., in the presence of
-+ * write hogs). In fact, if the processes associated with the other queues
-+ * ask for requests at a lower rate, then weight-raised processes have a
-+ * higher probability to get a request from the pool immediately (or at
-+ * least soon) when they need one. Hence they have a higher probability to
-+ * actually get a fraction of the disk throughput proportional to their
-+ * high weight. This is especially true with NCQ-capable drives, which
-+ * enqueue several requests in advance and further reorder internally-
-+ * queued requests.
-+ *
-+ * In the end, mistreating non-weight-raised queues when there are busy
-+ * weight-raised queues seems to mitigate starvation problems in the
-+ * presence of heavy write workloads and NCQ, and hence to guarantee a
-+ * higher application and system responsiveness in these hostile scenarios.
-+ *
-+ * If the first component of the compound condition is instead true, i.e.,
-+ * there is no weight-raised busy queue, then the second component of the
-+ * compound condition takes into account service-guarantee and throughput
-+ * issues related to NCQ (recall that the compound condition is evaluated
-+ * only if the device is detected as supporting NCQ).
-+ *
-+ * As for service guarantees, allowing the drive to enqueue more than one
-+ * request at a time, and hence delegating de facto final scheduling
-+ * decisions to the drive's internal scheduler, causes loss of control on
-+ * the actual request service order. In this respect, when the drive is
-+ * allowed to enqueue more than one request at a time, the service
-+ * distribution enforced by the drive's internal scheduler is likely to
-+ * coincide with the desired device-throughput distribution only in the
-+ * following, perfectly symmetric, scenario:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups at the same level in the groups tree have the same
-+ *    weight,
-+ * 3) all active groups at the same level in the groups tree have the same
-+ *    number of children.
-+ *
-+ * Even in such a scenario, sequential I/O may still receive a preferential
-+ * treatment, but this is not likely to be a big issue with flash-based
-+ * devices, because of their non-dramatic loss of throughput with random
-+ * I/O. Things do differ with HDDs, for which additional care is taken, as
-+ * explained after completing the discussion for flash-based devices.
-+ *
-+ * Unfortunately, keeping the necessary state for evaluating exactly the
-+ * above symmetry conditions would be quite complex and time-consuming.
-+ * Therefore BFQ evaluates instead the following stronger sub-conditions,
-+ * for which it is much easier to maintain the needed state:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups have the same weight,
-+ * 3) all active groups have at most one active child each.
-+ * In particular, the last two conditions are always true if hierarchical
-+ * support and the cgroups interface are not enabled, hence no state needs
-+ * to be maintained in this case.
-+ *
-+ * According to the above considerations, the second component of the
-+ * compound condition evaluates to true if any of the above symmetry
-+ * sub-condition does not hold, or the device is not flash-based. Therefore,
-+ * if also the first component is true, then idling is allowed for a sync
-+ * queue. These are the only sub-conditions considered if the device is
-+ * flash-based, as, for such a device, it is sensible to force idling only
-+ * for service-guarantee issues. In fact, as for throughput, idling
-+ * NCQ-capable flash-based devices would not boost the throughput even
-+ * with sequential I/O; rather it would lower the throughput in proportion
-+ * to how fast the device is. In the end, (only) if all the three
-+ * sub-conditions hold and the device is flash-based, the compound
-+ * condition evaluates to false and therefore no idling is performed.
-+ *
-+ * As already said, things change with a rotational device, where idling
-+ * boosts the throughput with sequential I/O (even with NCQ). Hence, for
-+ * such a device the second component of the compound condition evaluates
-+ * to true also if the following additional sub-condition does not hold:
-+ * the queue is constantly seeky. Unfortunately, this different behavior
-+ * with respect to flash-based devices causes an additional asymmetry: if
-+ * some sync queues enjoy idling and some other sync queues do not, then
-+ * the latter get a low share of the device throughput, simply because the
-+ * former get many requests served after being set as in service, whereas
-+ * the latter do not. As a consequence, to guarantee the desired throughput
-+ * distribution, on HDDs the compound expression evaluates to true (and
-+ * hence device idling is performed) also if the following last symmetry
-+ * condition does not hold: no other queue is benefiting from idling. Also
-+ * this last condition is actually replaced with a simpler-to-maintain and
-+ * stronger condition: there is no busy queue which is not constantly seeky
-+ * (and hence may also benefit from idling).
-+ *
-+ * To sum up, when all the required symmetry and throughput-boosting
-+ * sub-conditions hold, the second component of the compound condition
-+ * evaluates to false, and hence no idling is performed. This helps to
-+ * keep the drives' internal queues full on NCQ-capable devices, and hence
-+ * to boost the throughput, without causing 'almost' any loss of service
-+ * guarantees. The 'almost' follows from the fact that, if the internal
-+ * queue of one such device is filled while all the sub-conditions hold,
-+ * but at some point in time some sub-condition stops to hold, then it may
-+ * become impossible to let requests be served in the new desired order
-+ * until all the requests already queued in the device have been served.
-+ */
-+static inline bool bfq_bfqq_must_not_expire(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+#define cond_for_seeky_on_ncq_hdd (bfq_bfqq_constantly_seeky(bfqq) && \
-+				   bfqd->busy_in_flight_queues == \
-+				   bfqd->const_seeky_busy_in_flight_queues)
-+
-+#define cond_for_expiring_in_burst	(bfq_bfqq_in_large_burst(bfqq) && \
-+					 bfqd->hw_tag && \
-+					 (blk_queue_nonrot(bfqd->queue) || \
-+					  bfq_bfqq_constantly_seeky(bfqq)))
-+
-+/*
-+ * Condition for expiring a non-weight-raised queue (and hence not idling
-+ * the device).
-+ */
-+#define cond_for_expiring_non_wr  (bfqd->hw_tag && \
-+				   (bfqd->wr_busy_queues > 0 || \
-+				    (blk_queue_nonrot(bfqd->queue) || \
-+				      cond_for_seeky_on_ncq_hdd)))
-+
-+	return bfq_bfqq_sync(bfqq) &&
-+		!cond_for_expiring_in_burst &&
-+		(bfqq->wr_coeff > 1 || !symmetric_scenario ||
-+		 (bfq_bfqq_IO_bound(bfqq) && bfq_bfqq_idle_window(bfqq) &&
-+		  !cond_for_expiring_non_wr)
-+	);
-+}
-+
-+/*
-+ * If the in-service queue is empty but sync, and the function
-+ * bfq_bfqq_must_not_expire returns true, then:
-+ * 1) the queue must remain in service and cannot be expired, and
-+ * 2) the disk must be idled to wait for the possible arrival of a new
-+ *    request for the queue.
-+ * See the comments to the function bfq_bfqq_must_not_expire for the reasons
-+ * why performing device idling is the best choice to boost the throughput
-+ * and preserve service guarantees when bfq_bfqq_must_not_expire itself
-+ * returns true.
-+ */
-+static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	return RB_EMPTY_ROOT(&bfqq->sort_list) && bfqd->bfq_slice_idle != 0 &&
-+	       bfq_bfqq_must_not_expire(bfqq);
-+}
-+
-+/*
-+ * Select a queue for service.  If we have a current queue in service,
-+ * check whether to continue servicing it, or retrieve and set a new one.
-+ */
-+static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct request *next_rq;
-+	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
-+
-+	bfqq = bfqd->in_service_queue;
-+	if (bfqq == NULL)
-+		goto new_queue;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
-+
-+	/*
-+         * If another queue has a request waiting within our mean seek
-+         * distance, let it run. The expire code will check for close
-+         * cooperators and put the close queue at the front of the
-+         * service tree. If possible, merge the expiring queue with the
-+         * new bfqq.
-+         */
-+        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
-+        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
-+                bfq_setup_merge(bfqq, new_bfqq);
-+
-+	if (bfq_may_expire_for_budg_timeout(bfqq) &&
-+	    !timer_pending(&bfqd->idle_slice_timer) &&
-+	    !bfq_bfqq_must_idle(bfqq))
-+		goto expire;
-+
-+	next_rq = bfqq->next_rq;
-+	/*
-+	 * If bfqq has requests queued and it has enough budget left to
-+	 * serve them, keep the queue, otherwise expire it.
-+	 */
-+	if (next_rq != NULL) {
-+		if (bfq_serv_to_charge(next_rq, bfqq) >
-+			bfq_bfqq_budget_left(bfqq)) {
-+			reason = BFQ_BFQQ_BUDGET_EXHAUSTED;
-+			goto expire;
-+		} else {
-+			/*
-+			 * The idle timer may be pending because we may
-+			 * not disable disk idling even when a new request
-+			 * arrives.
-+			 */
-+			if (timer_pending(&bfqd->idle_slice_timer)) {
-+				/*
-+				 * If we get here: 1) at least a new request
-+				 * has arrived but we have not disabled the
-+				 * timer because the request was too small,
-+				 * 2) then the block layer has unplugged
-+				 * the device, causing the dispatch to be
-+				 * invoked.
-+				 *
-+				 * Since the device is unplugged, now the
-+				 * requests are probably large enough to
-+				 * provide a reasonable throughput.
-+				 * So we disable idling.
-+				 */
-+				bfq_clear_bfqq_wait_request(bfqq);
-+				del_timer(&bfqd->idle_slice_timer);
-+			}
-+			if (new_bfqq == NULL)
-+				goto keep_queue;
-+			else
-+				goto expire;
-+		}
-+	}
-+
-+	/*
-+	 * No requests pending. However, if the in-service queue is idling
-+	 * for a new request, or has requests waiting for a completion and
-+	 * may idle after their completion, then keep it anyway.
-+	 */
-+	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+		bfqq = NULL;
-+		goto keep_queue;
-+	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
-+		/*
-+		 * Expiring the queue because there is a close cooperator,
-+		 * cancel timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
-+	}
-+
-+	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
-+expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
-+new_queue:
-+	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfq_log(bfqd, "select_queue: new queue %d returned",
-+		bfqq != NULL ? bfqq->pid : 0);
-+keep_queue:
-+	return bfqq;
-+}
-+
-+static void bfq_update_wr_data(struct bfq_data *bfqd,
-+			       struct bfq_queue *bfqq)
-+{
-+	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
-+		struct bfq_entity *entity = &bfqq->entity;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
-+			jiffies_to_msecs(jiffies -
-+				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(bfqq->wr_cur_max_time),
-+			bfqq->wr_coeff,
-+			bfqq->entity.weight, bfqq->entity.orig_weight);
-+
-+		BUG_ON(bfqq != bfqd->in_service_queue && entity->weight !=
-+		       entity->orig_weight * bfqq->wr_coeff);
-+		if (entity->ioprio_changed)
-+			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+		/*
-+		 * If the queue was activated in a burst, or
-+		 * too much time has elapsed from the beginning
-+		 * of this weight-raising, then end weight raising.
-+		 */
-+		if (bfq_bfqq_in_large_burst(bfqq) ||
-+		    time_is_before_jiffies(bfqq->last_wr_start_finish +
-+					   bfqq->wr_cur_max_time)) {
-+			bfqq->last_wr_start_finish = jiffies;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "wrais ending at %lu, rais_max_time %u",
-+				     bfqq->last_wr_start_finish,
-+				     jiffies_to_msecs(bfqq->wr_cur_max_time));
-+			bfq_bfqq_end_wr(bfqq);
-+			__bfq_entity_update_weight_prio(
-+				bfq_entity_service_tree(entity),
-+				entity);
-+		}
-+	}
-+}
-+
-+/*
-+ * Dispatch one request from bfqq, moving it to the request queue
-+ * dispatch list.
-+ */
-+static int bfq_dispatch_request(struct bfq_data *bfqd,
-+				struct bfq_queue *bfqq)
-+{
-+	int dispatched = 0;
-+	struct request *rq;
-+	unsigned long service_to_charge;
-+
-+	BUG_ON(RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	/* Follow expired path, else get first next available. */
-+	rq = bfq_check_fifo(bfqq);
-+	if (rq == NULL)
-+		rq = bfqq->next_rq;
-+	service_to_charge = bfq_serv_to_charge(rq, bfqq);
-+
-+	if (service_to_charge > bfq_bfqq_budget_left(bfqq)) {
-+		/*
-+		 * This may happen if the next rq is chosen in fifo order
-+		 * instead of sector order. The budget is properly
-+		 * dimensioned to be always sufficient to serve the next
-+		 * request only if it is chosen in sector order. The reason
-+		 * is that it would be quite inefficient and little useful
-+		 * to always make sure that the budget is large enough to
-+		 * serve even the possible next rq in fifo order.
-+		 * In fact, requests are seldom served in fifo order.
-+		 *
-+		 * Expire the queue for budget exhaustion, and make sure
-+		 * that the next act_budget is enough to serve the next
-+		 * request, even if it comes from the fifo expired path.
-+		 */
-+		bfqq->next_rq = rq;
-+		/*
-+		 * Since this dispatch is failed, make sure that
-+		 * a new one will be performed
-+		 */
-+		if (!bfqd->rq_in_driver)
-+			bfq_schedule_dispatch(bfqd);
-+		goto expire;
-+	}
-+
-+	/* Finally, insert request into driver dispatch list. */
-+	bfq_bfqq_served(bfqq, service_to_charge);
-+	bfq_dispatch_insert(bfqd->queue, rq);
-+
-+	bfq_update_wr_data(bfqd, bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+			"dispatched %u sec req (%llu), budg left %lu",
-+			blk_rq_sectors(rq),
-+			(long long unsigned)blk_rq_pos(rq),
-+			bfq_bfqq_budget_left(bfqq));
-+
-+	dispatched++;
-+
-+	if (bfqd->in_service_bic == NULL) {
-+		atomic_long_inc(&RQ_BIC(rq)->icq.ioc->refcount);
-+		bfqd->in_service_bic = RQ_BIC(rq);
-+	}
-+
-+	if (bfqd->busy_queues > 1 && ((!bfq_bfqq_sync(bfqq) &&
-+	    dispatched >= bfqd->bfq_max_budget_async_rq) ||
-+	    bfq_class_idle(bfqq)))
-+		goto expire;
-+
-+	return dispatched;
-+
-+expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_EXHAUSTED);
-+	return dispatched;
-+}
-+
-+static int __bfq_forced_dispatch_bfqq(struct bfq_queue *bfqq)
-+{
-+	int dispatched = 0;
-+
-+	while (bfqq->next_rq != NULL) {
-+		bfq_dispatch_insert(bfqq->bfqd->queue, bfqq->next_rq);
-+		dispatched++;
-+	}
-+
-+	BUG_ON(!list_empty(&bfqq->fifo));
-+	return dispatched;
-+}
-+
-+/*
-+ * Drain our current requests.
-+ * Used for barriers and when switching io schedulers on-the-fly.
-+ */
-+static int bfq_forced_dispatch(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq, *n;
-+	struct bfq_service_tree *st;
-+	int dispatched = 0;
-+
-+	bfqq = bfqd->in_service_queue;
-+	if (bfqq != NULL)
-+		__bfq_bfqq_expire(bfqd, bfqq);
-+
-+	/*
-+	 * Loop through classes, and be careful to leave the scheduler
-+	 * in a consistent state, as feedback mechanisms and vtime
-+	 * updates cannot be disabled during the process.
-+	 */
-+	list_for_each_entry_safe(bfqq, n, &bfqd->active_list, bfqq_list) {
-+		st = bfq_entity_service_tree(&bfqq->entity);
-+
-+		dispatched += __bfq_forced_dispatch_bfqq(bfqq);
-+		bfqq->max_budget = bfq_max_budget(bfqd);
-+
-+		bfq_forget_idle(st);
-+	}
-+
-+	BUG_ON(bfqd->busy_queues != 0);
-+
-+	return dispatched;
-+}
-+
-+static int bfq_dispatch_requests(struct request_queue *q, int force)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq;
-+	int max_dispatch;
-+
-+	bfq_log(bfqd, "dispatch requests: %d busy queues", bfqd->busy_queues);
-+	if (bfqd->busy_queues == 0)
-+		return 0;
-+
-+	if (unlikely(force))
-+		return bfq_forced_dispatch(bfqd);
-+
-+	bfqq = bfq_select_queue(bfqd);
-+	if (bfqq == NULL)
-+		return 0;
-+
-+	if (bfq_class_idle(bfqq))
-+		max_dispatch = 1;
-+
-+	if (!bfq_bfqq_sync(bfqq))
-+		max_dispatch = bfqd->bfq_max_budget_async_rq;
-+
-+	if (!bfq_bfqq_sync(bfqq) && bfqq->dispatched >= max_dispatch) {
-+		if (bfqd->busy_queues > 1)
-+			return 0;
-+		if (bfqq->dispatched >= 4 * max_dispatch)
-+			return 0;
-+	}
-+
-+	if (bfqd->sync_flight != 0 && !bfq_bfqq_sync(bfqq))
-+		return 0;
-+
-+	bfq_clear_bfqq_wait_request(bfqq);
-+	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
-+
-+	if (!bfq_dispatch_request(bfqd, bfqq))
-+		return 0;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "dispatched %s request",
-+			bfq_bfqq_sync(bfqq) ? "sync" : "async");
-+
-+	return 1;
-+}
-+
-+/*
-+ * Task holds one reference to the queue, dropped when task exits.  Each rq
-+ * in-flight on this queue also holds a reference, dropped when rq is freed.
-+ *
-+ * Queue lock must be held here.
-+ */
-+static void bfq_put_queue(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	BUG_ON(atomic_read(&bfqq->ref) <= 0);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+	if (!atomic_dec_and_test(&bfqq->ref))
-+		return;
-+
-+	BUG_ON(rb_first(&bfqq->sort_list) != NULL);
-+	BUG_ON(bfqq->allocated[READ] + bfqq->allocated[WRITE] != 0);
-+	BUG_ON(bfqq->entity.tree != NULL);
-+	BUG_ON(bfq_bfqq_busy(bfqq));
-+	BUG_ON(bfqd->in_service_queue == bfqq);
-+
-+	if (bfq_bfqq_sync(bfqq))
-+		/*
-+		 * The fact that this queue is being destroyed does not
-+		 * invalidate the fact that this queue may have been
-+		 * activated during the current burst. As a consequence,
-+		 * although the queue does not exist anymore, and hence
-+		 * needs to be removed from the burst list if there,
-+		 * the burst size has not to be decremented.
-+		 */
-+		hlist_del_init(&bfqq->burst_list_node);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p freed", bfqq);
-+
-+	kmem_cache_free(bfq_pool, bfqq);
-+}
-+
-+static void bfq_put_cooperator(struct bfq_queue *bfqq)
-+{
-+	struct bfq_queue *__bfqq, *next;
-+
-+	/*
-+	 * If this queue was scheduled to merge with another queue, be
-+	 * sure to drop the reference taken on that queue (and others in
-+	 * the merge chain). See bfq_setup_merge and bfq_merge_bfqqs.
-+	 */
-+	__bfqq = bfqq->new_bfqq;
-+	while (__bfqq) {
-+		if (__bfqq == bfqq)
-+			break;
-+		next = __bfqq->new_bfqq;
-+		bfq_put_queue(__bfqq);
-+		__bfqq = next;
-+	}
-+}
-+
-+static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	if (bfqq == bfqd->in_service_queue) {
-+		__bfq_bfqq_expire(bfqd, bfqq);
-+		bfq_schedule_dispatch(bfqd);
-+	}
-+
-+	bfq_log_bfqq(bfqd, bfqq, "exit_bfqq: %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_init_icq(struct io_cq *icq)
-+{
-+	struct bfq_io_cq *bic = icq_to_bic(icq);
-+
-+	bic->ttime.last_end_request = jiffies;
-+}
-+
-+static void bfq_exit_icq(struct io_cq *icq)
-+{
-+	struct bfq_io_cq *bic = icq_to_bic(icq);
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+
-+	if (bic->bfqq[BLK_RW_ASYNC]) {
-+		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_ASYNC]);
-+		bic->bfqq[BLK_RW_ASYNC] = NULL;
-+	}
-+
-+	if (bic->bfqq[BLK_RW_SYNC]) {
-+		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
-+		bic->bfqq[BLK_RW_SYNC] = NULL;
-+	}
-+}
-+
-+/*
-+ * Update the entity prio values; note that the new values will not
-+ * be used until the next (re)activation.
-+ */
-+static void bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	struct task_struct *tsk = current;
-+	int ioprio_class;
-+
-+	ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio);
-+	switch (ioprio_class) {
-+	default:
-+		dev_err(bfqq->bfqd->queue->backing_dev_info.dev,
-+			"bfq: bad prio class %d\n", ioprio_class);
-+	case IOPRIO_CLASS_NONE:
-+		/*
-+		 * No prio set, inherit CPU scheduling settings.
-+		 */
-+		bfqq->entity.new_ioprio = task_nice_ioprio(tsk);
-+		bfqq->entity.new_ioprio_class = task_nice_ioclass(tsk);
-+		break;
-+	case IOPRIO_CLASS_RT:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_RT;
-+		break;
-+	case IOPRIO_CLASS_BE:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_BE;
-+		break;
-+	case IOPRIO_CLASS_IDLE:
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_IDLE;
-+		bfqq->entity.new_ioprio = 7;
-+		bfq_clear_bfqq_idle_window(bfqq);
-+		break;
-+	}
-+
-+	if (bfqq->entity.new_ioprio < 0 ||
-+	    bfqq->entity.new_ioprio >= IOPRIO_BE_NR) {
-+		printk(KERN_CRIT "bfq_set_next_ioprio_data: new_ioprio %d\n",
-+				 bfqq->entity.new_ioprio);
-+		BUG();
-+	}
-+
-+	bfqq->entity.new_weight = bfq_ioprio_to_weight(bfqq->entity.new_ioprio);
-+	bfqq->entity.ioprio_changed = 1;
-+}
-+
-+static void bfq_check_ioprio_change(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+	struct bfq_group *bfqg;
-+	unsigned long uninitialized_var(flags);
-+	int ioprio = bic->icq.ioc->ioprio;
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	/*
-+	 * This condition may trigger on a newly created bic, be sure to
-+	 * drop the lock before returning.
-+	 */
-+	if (unlikely(bfqd == NULL) || likely(bic->ioprio == ioprio))
-+		goto out;
-+
-+	bic->ioprio = ioprio;
-+
-+	bfqq = bic->bfqq[BLK_RW_ASYNC];
-+	if (bfqq != NULL) {
-+		bfqg = container_of(bfqq->entity.sched_data, struct bfq_group,
-+				    sched_data);
-+		new_bfqq = bfq_get_queue(bfqd, bfqg, BLK_RW_ASYNC, bic,
-+					 GFP_ATOMIC);
-+		if (new_bfqq != NULL) {
-+			bic->bfqq[BLK_RW_ASYNC] = new_bfqq;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "check_ioprio_change: bfqq %p %d",
-+				     bfqq, atomic_read(&bfqq->ref));
-+			bfq_put_queue(bfqq);
-+		}
-+	}
-+
-+	bfqq = bic->bfqq[BLK_RW_SYNC];
-+	if (bfqq != NULL)
-+		bfq_set_next_ioprio_data(bfqq, bic);
-+
-+out:
-+	bfq_put_bfqd_unlock(bfqd, &flags);
-+}
-+
-+static void bfq_init_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			  struct bfq_io_cq *bic, pid_t pid, int is_sync)
-+{
-+	RB_CLEAR_NODE(&bfqq->entity.rb_node);
-+	INIT_LIST_HEAD(&bfqq->fifo);
-+	INIT_HLIST_NODE(&bfqq->burst_list_node);
-+
-+	atomic_set(&bfqq->ref, 0);
-+	bfqq->bfqd = bfqd;
-+
-+	if (bic)
-+		bfq_set_next_ioprio_data(bfqq, bic);
-+
-+	if (is_sync) {
-+		if (!bfq_class_idle(bfqq))
-+			bfq_mark_bfqq_idle_window(bfqq);
-+		bfq_mark_bfqq_sync(bfqq);
-+	}
-+	bfq_mark_bfqq_IO_bound(bfqq);
-+
-+	/* Tentative initial value to trade off between thr and lat */
-+	bfqq->max_budget = (2 * bfq_max_budget(bfqd)) / 3;
-+	bfqq->pid = pid;
-+
-+	bfqq->wr_coeff = 1;
-+	bfqq->last_wr_start_finish = 0;
-+	/*
-+	 * Set to the value for which bfqq will not be deemed as
-+	 * soft rt when it becomes backlogged.
-+	 */
-+	bfqq->soft_rt_next_start = bfq_infinity_from_now(jiffies);
-+}
-+
-+static struct bfq_queue *bfq_find_alloc_queue(struct bfq_data *bfqd,
-+					      struct bfq_group *bfqg,
-+					      int is_sync,
-+					      struct bfq_io_cq *bic,
-+					      gfp_t gfp_mask)
-+{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+
-+retry:
-+	/* bic always exists here */
-+	bfqq = bic_to_bfqq(bic, is_sync);
-+
-+	/*
-+	 * Always try a new alloc if we fall back to the OOM bfqq
-+	 * originally, since it should just be a temporary situation.
-+	 */
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = NULL;
-+		if (new_bfqq != NULL) {
-+			bfqq = new_bfqq;
-+			new_bfqq = NULL;
-+		} else if (gfp_mask & __GFP_WAIT) {
-+			spin_unlock_irq(bfqd->queue->queue_lock);
-+			new_bfqq = kmem_cache_alloc_node(bfq_pool,
-+					gfp_mask | __GFP_ZERO,
-+					bfqd->queue->node);
-+			spin_lock_irq(bfqd->queue->queue_lock);
-+			if (new_bfqq != NULL)
-+				goto retry;
-+		} else {
-+			bfqq = kmem_cache_alloc_node(bfq_pool,
-+					gfp_mask | __GFP_ZERO,
-+					bfqd->queue->node);
-+		}
-+
-+		if (bfqq != NULL) {
-+			bfq_init_bfqq(bfqd, bfqq, bic, current->pid,
-+                                      is_sync);
-+			bfq_init_entity(&bfqq->entity, bfqg);
-+			bfq_log_bfqq(bfqd, bfqq, "allocated");
-+		} else {
-+			bfqq = &bfqd->oom_bfqq;
-+			bfq_log_bfqq(bfqd, bfqq, "using oom bfqq");
-+		}
-+	}
-+
-+	if (new_bfqq != NULL)
-+		kmem_cache_free(bfq_pool, new_bfqq);
-+
-+	return bfqq;
-+}
-+
-+static struct bfq_queue **bfq_async_queue_prio(struct bfq_data *bfqd,
-+					       struct bfq_group *bfqg,
-+					       int ioprio_class, int ioprio)
-+{
-+	switch (ioprio_class) {
-+	case IOPRIO_CLASS_RT:
-+		return &bfqg->async_bfqq[0][ioprio];
-+	case IOPRIO_CLASS_NONE:
-+		ioprio = IOPRIO_NORM;
-+		/* fall through */
-+	case IOPRIO_CLASS_BE:
-+		return &bfqg->async_bfqq[1][ioprio];
-+	case IOPRIO_CLASS_IDLE:
-+		return &bfqg->async_idle_bfqq;
-+	default:
-+		BUG();
-+	}
-+}
-+
-+static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
-+				       struct bfq_io_cq *bic, gfp_t gfp_mask)
-+{
-+	const int ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+	const int ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio);
-+	struct bfq_queue **async_bfqq = NULL;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	if (!is_sync) {
-+		async_bfqq = bfq_async_queue_prio(bfqd, bfqg, ioprio_class,
-+						  ioprio);
-+		bfqq = *async_bfqq;
-+	}
-+
-+	if (bfqq == NULL)
-+		bfqq = bfq_find_alloc_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
-+
-+	/*
-+	 * Pin the queue now that it's allocated, scheduler exit will
-+	 * prune it.
-+	 */
-+	if (!is_sync && *async_bfqq == NULL) {
-+		atomic_inc(&bfqq->ref);
-+		bfq_log_bfqq(bfqd, bfqq, "get_queue, bfqq not in async: %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		*async_bfqq = bfqq;
-+	}
-+
-+	atomic_inc(&bfqq->ref);
-+	bfq_log_bfqq(bfqd, bfqq, "get_queue, at end: %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+	return bfqq;
-+}
-+
-+static void bfq_update_io_thinktime(struct bfq_data *bfqd,
-+				    struct bfq_io_cq *bic)
-+{
-+	unsigned long elapsed = jiffies - bic->ttime.last_end_request;
-+	unsigned long ttime = min(elapsed, 2UL * bfqd->bfq_slice_idle);
-+
-+	bic->ttime.ttime_samples = (7*bic->ttime.ttime_samples + 256) / 8;
-+	bic->ttime.ttime_total = (7*bic->ttime.ttime_total + 256*ttime) / 8;
-+	bic->ttime.ttime_mean = (bic->ttime.ttime_total + 128) /
-+				bic->ttime.ttime_samples;
-+}
-+
-+static void bfq_update_io_seektime(struct bfq_data *bfqd,
-+				   struct bfq_queue *bfqq,
-+				   struct request *rq)
-+{
-+	sector_t sdist;
-+	u64 total;
-+
-+	if (bfqq->last_request_pos < blk_rq_pos(rq))
-+		sdist = blk_rq_pos(rq) - bfqq->last_request_pos;
-+	else
-+		sdist = bfqq->last_request_pos - blk_rq_pos(rq);
-+
-+	/*
-+	 * Don't allow the seek distance to get too large from the
-+	 * odd fragment, pagein, etc.
-+	 */
-+	if (bfqq->seek_samples == 0) /* first request, not really a seek */
-+		sdist = 0;
-+	else if (bfqq->seek_samples <= 60) /* second & third seek */
-+		sdist = min(sdist, (bfqq->seek_mean * 4) + 2*1024*1024);
-+	else
-+		sdist = min(sdist, (bfqq->seek_mean * 4) + 2*1024*64);
-+
-+	bfqq->seek_samples = (7*bfqq->seek_samples + 256) / 8;
-+	bfqq->seek_total = (7*bfqq->seek_total + (u64)256*sdist) / 8;
-+	total = bfqq->seek_total + (bfqq->seek_samples/2);
-+	do_div(total, bfqq->seek_samples);
-+	bfqq->seek_mean = (sector_t)total;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "dist=%llu mean=%llu", (u64)sdist,
-+			(u64)bfqq->seek_mean);
-+}
-+
-+/*
-+ * Disable idle window if the process thinks too long or seeks so much that
-+ * it doesn't matter.
-+ */
-+static void bfq_update_idle_window(struct bfq_data *bfqd,
-+				   struct bfq_queue *bfqq,
-+				   struct bfq_io_cq *bic)
-+{
-+	int enable_idle;
-+
-+	/* Don't idle for async or idle io prio class. */
-+	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
-+		return;
-+
-+	enable_idle = bfq_bfqq_idle_window(bfqq);
-+
-+	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-+	    bfqd->bfq_slice_idle == 0 ||
-+		(bfqd->hw_tag && BFQQ_SEEKY(bfqq) &&
-+			bfqq->wr_coeff == 1))
-+		enable_idle = 0;
-+	else if (bfq_sample_valid(bic->ttime.ttime_samples)) {
-+		if (bic->ttime.ttime_mean > bfqd->bfq_slice_idle &&
-+			bfqq->wr_coeff == 1)
-+			enable_idle = 0;
-+		else
-+			enable_idle = 1;
-+	}
-+	bfq_log_bfqq(bfqd, bfqq, "update_idle_window: enable_idle %d",
-+		enable_idle);
-+
-+	if (enable_idle)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+}
-+
-+/*
-+ * Called when a new fs request (rq) is added to bfqq.  Check if there's
-+ * something we should do about it.
-+ */
-+static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			    struct request *rq)
-+{
-+	struct bfq_io_cq *bic = RQ_BIC(rq);
-+
-+	if (rq->cmd_flags & REQ_META)
-+		bfqq->meta_pending++;
-+
-+	bfq_update_io_thinktime(bfqd, bic);
-+	bfq_update_io_seektime(bfqd, bfqq, rq);
-+	if (!BFQQ_SEEKY(bfqq) && bfq_bfqq_constantly_seeky(bfqq)) {
-+		bfq_clear_bfqq_constantly_seeky(bfqq);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->const_seeky_busy_in_flight_queues);
-+			bfqd->const_seeky_busy_in_flight_queues--;
-+		}
-+	}
-+	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
-+	    !BFQQ_SEEKY(bfqq))
-+		bfq_update_idle_window(bfqd, bfqq, bic);
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-+		     bfq_bfqq_idle_window(bfqq), BFQQ_SEEKY(bfqq),
-+		     (long long unsigned)bfqq->seek_mean);
-+
-+	bfqq->last_request_pos = blk_rq_pos(rq) + blk_rq_sectors(rq);
-+
-+	if (bfqq == bfqd->in_service_queue && bfq_bfqq_wait_request(bfqq)) {
-+		int small_req = bfqq->queued[rq_is_sync(rq)] == 1 &&
-+				blk_rq_sectors(rq) < 32;
-+		int budget_timeout = bfq_bfqq_budget_timeout(bfqq);
-+
-+		/*
-+		 * There is just this request queued: if the request
-+		 * is small and the queue is not to be expired, then
-+		 * just exit.
-+		 *
-+		 * In this way, if the disk is being idled to wait for
-+		 * a new request from the in-service queue, we avoid
-+		 * unplugging the device and committing the disk to serve
-+		 * just a small request. On the contrary, we wait for
-+		 * the block layer to decide when to unplug the device:
-+		 * hopefully, new requests will be merged to this one
-+		 * quickly, then the device will be unplugged and
-+		 * larger requests will be dispatched.
-+		 */
-+		if (small_req && !budget_timeout)
-+			return;
-+
-+		/*
-+		 * A large enough request arrived, or the queue is to
-+		 * be expired: in both cases disk idling is to be
-+		 * stopped, so clear wait_request flag and reset
-+		 * timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
-+
-+		/*
-+		 * The queue is not empty, because a new request just
-+		 * arrived. Hence we can safely expire the queue, in
-+		 * case of budget timeout, without risking that the
-+		 * timestamps of the queue are not updated correctly.
-+		 * See [1] for more details.
-+		 */
-+		if (budget_timeout)
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
-+
-+		/*
-+		 * Let the request rip immediately, or let a new queue be
-+		 * selected if bfqq has just been expired.
-+		 */
-+		__blk_run_queue(bfqd->queue);
-+	}
-+}
-+
-+static void bfq_insert_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	assert_spin_locked(bfqd->queue->queue_lock);
-+
-+	bfq_add_request(rq);
-+
-+	rq->fifo_time = jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
-+	list_add_tail(&rq->queuelist, &bfqq->fifo);
-+
-+	bfq_rq_enqueued(bfqd, bfqq, rq);
-+}
-+
-+static void bfq_update_hw_tag(struct bfq_data *bfqd)
-+{
-+	bfqd->max_rq_in_driver = max(bfqd->max_rq_in_driver,
-+				     bfqd->rq_in_driver);
-+
-+	if (bfqd->hw_tag == 1)
-+		return;
-+
-+	/*
-+	 * This sample is valid if the number of outstanding requests
-+	 * is large enough to allow a queueing behavior.  Note that the
-+	 * sum is not exact, as it's not taking into account deactivated
-+	 * requests.
-+	 */
-+	if (bfqd->rq_in_driver + bfqd->queued < BFQ_HW_QUEUE_THRESHOLD)
-+		return;
-+
-+	if (bfqd->hw_tag_samples++ < BFQ_HW_QUEUE_SAMPLES)
-+		return;
-+
-+	bfqd->hw_tag = bfqd->max_rq_in_driver > BFQ_HW_QUEUE_THRESHOLD;
-+	bfqd->max_rq_in_driver = 0;
-+	bfqd->hw_tag_samples = 0;
-+}
-+
-+static void bfq_completed_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	bool sync = bfq_bfqq_sync(bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "completed one req with %u sects left (%d)",
-+		     blk_rq_sectors(rq), sync);
-+
-+	bfq_update_hw_tag(bfqd);
-+
-+	BUG_ON(!bfqd->rq_in_driver);
-+	BUG_ON(!bfqq->dispatched);
-+	bfqd->rq_in_driver--;
-+	bfqq->dispatched--;
-+
-+	if (!bfqq->dispatched && !bfq_bfqq_busy(bfqq)) {
-+		bfq_weights_tree_remove(bfqd, &bfqq->entity,
-+					&bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->busy_in_flight_queues);
-+			bfqd->busy_in_flight_queues--;
-+			if (bfq_bfqq_constantly_seeky(bfqq)) {
-+				BUG_ON(!bfqd->
-+					const_seeky_busy_in_flight_queues);
-+				bfqd->const_seeky_busy_in_flight_queues--;
-+			}
-+		}
-+	}
-+
-+	if (sync) {
-+		bfqd->sync_flight--;
-+		RQ_BIC(rq)->ttime.last_end_request = jiffies;
-+	}
-+
-+	/*
-+	 * If we are waiting to discover whether the request pattern of the
-+	 * task associated with the queue is actually isochronous, and
-+	 * both requisites for this condition to hold are satisfied, then
-+	 * compute soft_rt_next_start (see the comments to the function
-+	 * bfq_bfqq_softrt_next_start()).
-+	 */
-+	if (bfq_bfqq_softrt_update(bfqq) && bfqq->dispatched == 0 &&
-+	    RB_EMPTY_ROOT(&bfqq->sort_list))
-+		bfqq->soft_rt_next_start =
-+			bfq_bfqq_softrt_next_start(bfqd, bfqq);
-+
-+	/*
-+	 * If this is the in-service queue, check if it needs to be expired,
-+	 * or if we want to idle in case it has no pending requests.
-+	 */
-+	if (bfqd->in_service_queue == bfqq) {
-+		if (bfq_bfqq_budget_new(bfqq))
-+			bfq_set_budget_timeout(bfqd);
-+
-+		if (bfq_bfqq_must_idle(bfqq)) {
-+			bfq_arm_slice_timer(bfqd);
-+			goto out;
-+		} else if (bfq_may_expire_for_budg_timeout(bfqq))
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
-+		else if (RB_EMPTY_ROOT(&bfqq->sort_list) &&
-+			 (bfqq->dispatched == 0 ||
-+			  !bfq_bfqq_must_not_expire(bfqq)))
-+			bfq_bfqq_expire(bfqd, bfqq, 0,
-+					BFQ_BFQQ_NO_MORE_REQUESTS);
-+	}
-+
-+	if (!bfqd->rq_in_driver)
-+		bfq_schedule_dispatch(bfqd);
-+
-+out:
-+	return;
-+}
-+
-+static inline int __bfq_may_queue(struct bfq_queue *bfqq)
-+{
-+	if (bfq_bfqq_wait_request(bfqq) && bfq_bfqq_must_alloc(bfqq)) {
-+		bfq_clear_bfqq_must_alloc(bfqq);
-+		return ELV_MQUEUE_MUST;
-+	}
-+
-+	return ELV_MQUEUE_MAY;
-+}
-+
-+static int bfq_may_queue(struct request_queue *q, int rw)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct task_struct *tsk = current;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	/*
-+	 * Don't force setup of a queue from here, as a call to may_queue
-+	 * does not necessarily imply that a request actually will be
-+	 * queued. So just lookup a possibly existing queue, or return
-+	 * 'may queue' if that fails.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
-+		return ELV_MQUEUE_MAY;
-+
-+	bfqq = bic_to_bfqq(bic, rw_is_sync(rw));
-+	if (bfqq != NULL)
-+		return __bfq_may_queue(bfqq);
-+
-+	return ELV_MQUEUE_MAY;
-+}
-+
-+/*
-+ * Queue lock held here.
-+ */
-+static void bfq_put_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	if (bfqq != NULL) {
-+		const int rw = rq_data_dir(rq);
-+
-+		BUG_ON(!bfqq->allocated[rw]);
-+		bfqq->allocated[rw]--;
-+
-+		rq->elv.priv[0] = NULL;
-+		rq->elv.priv[1] = NULL;
-+
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "put_request %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+	}
-+}
-+
-+static struct bfq_queue *
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)bfqq->new_bfqq->pid);
-+	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
-+	bfq_mark_bfqq_coop(bfqq->new_bfqq);
-+	bfq_put_queue(bfqq);
-+	return bic_to_bfqq(bic, 1);
-+}
-+
-+/*
-+ * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-+ * was the last process referring to said bfqq.
-+ */
-+static struct bfq_queue *
-+bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+	if (bfqq_process_refs(bfqq) == 1) {
-+		bfqq->pid = current->pid;
-+		bfq_clear_bfqq_coop(bfqq);
-+		bfq_clear_bfqq_split_coop(bfqq);
-+		return bfqq;
-+	}
-+
-+	bic_set_bfqq(bic, NULL, 1);
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+	return NULL;
-+}
-+
-+/*
-+ * Allocate bfq data structures associated with this request.
-+ */
-+static int bfq_set_request(struct request_queue *q, struct request *rq,
-+			   struct bio *bio, gfp_t gfp_mask)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic = icq_to_bic(rq->elv.icq);
-+	const int rw = rq_data_dir(rq);
-+	const int is_sync = rq_is_sync(rq);
-+	struct bfq_queue *bfqq;
-+	struct bfq_group *bfqg;
-+	unsigned long flags;
-+
-+	might_sleep_if(gfp_mask & __GFP_WAIT);
-+
-+	bfq_check_ioprio_change(bic);
-+
-+	spin_lock_irqsave(q->queue_lock, flags);
-+
-+	if (bic == NULL)
-+		goto queue_fail;
-+
-+	bfqg = bfq_bic_update_cgroup(bic);
-+
-+new_queue:
-+	bfqq = bic_to_bfqq(bic, is_sync);
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
-+		bic_set_bfqq(bic, bfqq, is_sync);
-+	} else {
-+		/*
-+		 * If the queue was seeky for too long, break it apart.
-+		 */
-+		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
-+			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
-+			bfqq = bfq_split_bfqq(bic, bfqq);
-+			if (!bfqq)
-+				goto new_queue;
-+		}
-+
-+		/*
-+		 * Check to see if this queue is scheduled to merge with
-+		 * another closely cooperating queue. The merging of queues
-+		 * happens here as it must be done in process context.
-+		 * The reference on new_bfqq was taken in merge_bfqqs.
-+		 */
-+		if (bfqq->new_bfqq != NULL)
-+			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
-+	}
-+
-+	bfqq->allocated[rw]++;
-+	atomic_inc(&bfqq->ref);
-+	bfq_log_bfqq(bfqd, bfqq, "set_request: bfqq %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+
-+	rq->elv.priv[0] = bic;
-+	rq->elv.priv[1] = bfqq;
-+
-+	spin_unlock_irqrestore(q->queue_lock, flags);
-+
-+	return 0;
-+
-+queue_fail:
-+	bfq_schedule_dispatch(bfqd);
-+	spin_unlock_irqrestore(q->queue_lock, flags);
-+
-+	return 1;
-+}
-+
-+static void bfq_kick_queue(struct work_struct *work)
-+{
-+	struct bfq_data *bfqd =
-+		container_of(work, struct bfq_data, unplug_work);
-+	struct request_queue *q = bfqd->queue;
-+
-+	spin_lock_irq(q->queue_lock);
-+	__blk_run_queue(q);
-+	spin_unlock_irq(q->queue_lock);
-+}
-+
-+/*
-+ * Handler of the expiration of the timer running if the in-service queue
-+ * is idling inside its time slice.
-+ */
-+static void bfq_idle_slice_timer(unsigned long data)
-+{
-+	struct bfq_data *bfqd = (struct bfq_data *)data;
-+	struct bfq_queue *bfqq;
-+	unsigned long flags;
-+	enum bfqq_expiration reason;
-+
-+	spin_lock_irqsave(bfqd->queue->queue_lock, flags);
-+
-+	bfqq = bfqd->in_service_queue;
-+	/*
-+	 * Theoretical race here: the in-service queue can be NULL or
-+	 * different from the queue that was idling if the timer handler
-+	 * spins on the queue_lock and a new request arrives for the
-+	 * current queue and there is a full dispatch cycle that changes
-+	 * the in-service queue.  This can hardly happen, but in the worst
-+	 * case we just expire a queue too early.
-+	 */
-+	if (bfqq != NULL) {
-+		bfq_log_bfqq(bfqd, bfqq, "slice_timer expired");
-+		if (bfq_bfqq_budget_timeout(bfqq))
-+			/*
-+			 * Also here the queue can be safely expired
-+			 * for budget timeout without wasting
-+			 * guarantees
-+			 */
-+			reason = BFQ_BFQQ_BUDGET_TIMEOUT;
-+		else if (bfqq->queued[0] == 0 && bfqq->queued[1] == 0)
-+			/*
-+			 * The queue may not be empty upon timer expiration,
-+			 * because we may not disable the timer when the
-+			 * first request of the in-service queue arrives
-+			 * during disk idling.
-+			 */
-+			reason = BFQ_BFQQ_TOO_IDLE;
-+		else
-+			goto schedule_dispatch;
-+
-+		bfq_bfqq_expire(bfqd, bfqq, 1, reason);
-+	}
-+
-+schedule_dispatch:
-+	bfq_schedule_dispatch(bfqd);
-+
-+	spin_unlock_irqrestore(bfqd->queue->queue_lock, flags);
-+}
-+
-+static void bfq_shutdown_timer_wq(struct bfq_data *bfqd)
-+{
-+	del_timer_sync(&bfqd->idle_slice_timer);
-+	cancel_work_sync(&bfqd->unplug_work);
-+}
-+
-+static inline void __bfq_put_async_bfqq(struct bfq_data *bfqd,
-+					struct bfq_queue **bfqq_ptr)
-+{
-+	struct bfq_group *root_group = bfqd->root_group;
-+	struct bfq_queue *bfqq = *bfqq_ptr;
-+
-+	bfq_log(bfqd, "put_async_bfqq: %p", bfqq);
-+	if (bfqq != NULL) {
-+		bfq_bfqq_move(bfqd, bfqq, &bfqq->entity, root_group);
-+		bfq_log_bfqq(bfqd, bfqq, "put_async_bfqq: putting %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+		*bfqq_ptr = NULL;
-+	}
-+}
-+
-+/*
-+ * Release all the bfqg references to its async queues.  If we are
-+ * deallocating the group these queues may still contain requests, so
-+ * we reparent them to the root cgroup (i.e., the only one that will
-+ * exist for sure until all the requests on a device are gone).
-+ */
-+static void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg)
-+{
-+	int i, j;
-+
-+	for (i = 0; i < 2; i++)
-+		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			__bfq_put_async_bfqq(bfqd, &bfqg->async_bfqq[i][j]);
-+
-+	__bfq_put_async_bfqq(bfqd, &bfqg->async_idle_bfqq);
-+}
-+
-+static void bfq_exit_queue(struct elevator_queue *e)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	struct request_queue *q = bfqd->queue;
-+	struct bfq_queue *bfqq, *n;
-+
-+	bfq_shutdown_timer_wq(bfqd);
-+
-+	spin_lock_irq(q->queue_lock);
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+	list_for_each_entry_safe(bfqq, n, &bfqd->idle_list, bfqq_list)
-+		bfq_deactivate_bfqq(bfqd, bfqq, 0);
-+
-+	bfq_disconnect_groups(bfqd);
-+	spin_unlock_irq(q->queue_lock);
-+
-+	bfq_shutdown_timer_wq(bfqd);
-+
-+	synchronize_rcu();
-+
-+	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
-+
-+	bfq_free_root_group(bfqd);
-+	kfree(bfqd);
-+}
-+
-+static int bfq_init_queue(struct request_queue *q, struct elevator_type *e)
-+{
-+	struct bfq_group *bfqg;
-+	struct bfq_data *bfqd;
-+	struct elevator_queue *eq;
-+
-+	eq = elevator_alloc(q, e);
-+	if (eq == NULL)
-+		return -ENOMEM;
-+
-+	bfqd = kzalloc_node(sizeof(*bfqd), GFP_KERNEL, q->node);
-+	if (bfqd == NULL) {
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+	eq->elevator_data = bfqd;
-+
-+	/*
-+	 * Our fallback bfqq if bfq_find_alloc_queue() runs into OOM issues.
-+	 * Grab a permanent reference to it, so that the normal code flow
-+	 * will not attempt to free it.
-+	 */
-+	bfq_init_bfqq(bfqd, &bfqd->oom_bfqq, NULL, 1, 0);
-+	atomic_inc(&bfqd->oom_bfqq.ref);
-+	bfqd->oom_bfqq.entity.new_ioprio = BFQ_DEFAULT_QUEUE_IOPRIO;
-+	bfqd->oom_bfqq.entity.new_ioprio_class = IOPRIO_CLASS_BE;
-+	bfqd->oom_bfqq.entity.new_weight =
-+		bfq_ioprio_to_weight(bfqd->oom_bfqq.entity.new_ioprio);
-+	/*
-+	 * Trigger weight initialization, according to ioprio, at the
-+	 * oom_bfqq's first activation. The oom_bfqq's ioprio and ioprio
-+	 * class won't be changed any more.
-+	 */
-+	bfqd->oom_bfqq.entity.ioprio_changed = 1;
-+
-+	bfqd->queue = q;
-+
-+	spin_lock_irq(q->queue_lock);
-+	q->elevator = eq;
-+	spin_unlock_irq(q->queue_lock);
-+
-+	bfqg = bfq_alloc_root_group(bfqd, q->node);
-+	if (bfqg == NULL) {
-+		kfree(bfqd);
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+
-+	bfqd->root_group = bfqg;
-+	bfq_init_entity(&bfqd->oom_bfqq.entity, bfqd->root_group);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	bfqd->active_numerous_groups = 0;
-+#endif
-+
-+	init_timer(&bfqd->idle_slice_timer);
-+	bfqd->idle_slice_timer.function = bfq_idle_slice_timer;
-+	bfqd->idle_slice_timer.data = (unsigned long)bfqd;
-+
-+	bfqd->rq_pos_tree = RB_ROOT;
-+	bfqd->queue_weights_tree = RB_ROOT;
-+	bfqd->group_weights_tree = RB_ROOT;
-+
-+	INIT_WORK(&bfqd->unplug_work, bfq_kick_queue);
-+
-+	INIT_LIST_HEAD(&bfqd->active_list);
-+	INIT_LIST_HEAD(&bfqd->idle_list);
-+	INIT_HLIST_HEAD(&bfqd->burst_list);
-+
-+	bfqd->hw_tag = -1;
-+
-+	bfqd->bfq_max_budget = bfq_default_max_budget;
-+
-+	bfqd->bfq_fifo_expire[0] = bfq_fifo_expire[0];
-+	bfqd->bfq_fifo_expire[1] = bfq_fifo_expire[1];
-+	bfqd->bfq_back_max = bfq_back_max;
-+	bfqd->bfq_back_penalty = bfq_back_penalty;
-+	bfqd->bfq_slice_idle = bfq_slice_idle;
-+	bfqd->bfq_class_idle_last_service = 0;
-+	bfqd->bfq_max_budget_async_rq = bfq_max_budget_async_rq;
-+	bfqd->bfq_timeout[BLK_RW_ASYNC] = bfq_timeout_async;
-+	bfqd->bfq_timeout[BLK_RW_SYNC] = bfq_timeout_sync;
-+
-+	bfqd->bfq_coop_thresh = 2;
-+	bfqd->bfq_failed_cooperations = 7000;
-+	bfqd->bfq_requests_within_timer = 120;
-+
-+	bfqd->bfq_large_burst_thresh = 11;
-+	bfqd->bfq_burst_interval = msecs_to_jiffies(500);
-+
-+	bfqd->low_latency = true;
-+
-+	bfqd->bfq_wr_coeff = 20;
-+	bfqd->bfq_wr_rt_max_time = msecs_to_jiffies(300);
-+	bfqd->bfq_wr_max_time = 0;
-+	bfqd->bfq_wr_min_idle_time = msecs_to_jiffies(2000);
-+	bfqd->bfq_wr_min_inter_arr_async = msecs_to_jiffies(500);
-+	bfqd->bfq_wr_max_softrt_rate = 7000; /*
-+					      * Approximate rate required
-+					      * to playback or record a
-+					      * high-definition compressed
-+					      * video.
-+					      */
-+	bfqd->wr_busy_queues = 0;
-+	bfqd->busy_in_flight_queues = 0;
-+	bfqd->const_seeky_busy_in_flight_queues = 0;
-+
-+	/*
-+	 * Begin by assuming, optimistically, that the device peak rate is
-+	 * equal to the highest reference rate.
-+	 */
-+	bfqd->RT_prod = R_fast[blk_queue_nonrot(bfqd->queue)] *
-+			T_fast[blk_queue_nonrot(bfqd->queue)];
-+	bfqd->peak_rate = R_fast[blk_queue_nonrot(bfqd->queue)];
-+	bfqd->device_speed = BFQ_BFQD_FAST;
-+
-+	return 0;
-+}
-+
-+static void bfq_slab_kill(void)
-+{
-+	if (bfq_pool != NULL)
-+		kmem_cache_destroy(bfq_pool);
-+}
-+
-+static int __init bfq_slab_setup(void)
-+{
-+	bfq_pool = KMEM_CACHE(bfq_queue, 0);
-+	if (bfq_pool == NULL)
-+		return -ENOMEM;
-+	return 0;
-+}
-+
-+static ssize_t bfq_var_show(unsigned int var, char *page)
-+{
-+	return sprintf(page, "%d\n", var);
-+}
-+
-+static ssize_t bfq_var_store(unsigned long *var, const char *page,
-+			     size_t count)
-+{
-+	unsigned long new_val;
-+	int ret = kstrtoul(page, 10, &new_val);
-+
-+	if (ret == 0)
-+		*var = new_val;
-+
-+	return count;
-+}
-+
-+static ssize_t bfq_wr_max_time_show(struct elevator_queue *e, char *page)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	return sprintf(page, "%d\n", bfqd->bfq_wr_max_time > 0 ?
-+		       jiffies_to_msecs(bfqd->bfq_wr_max_time) :
-+		       jiffies_to_msecs(bfq_wr_duration(bfqd)));
-+}
-+
-+static ssize_t bfq_weights_show(struct elevator_queue *e, char *page)
-+{
-+	struct bfq_queue *bfqq;
-+	struct bfq_data *bfqd = e->elevator_data;
-+	ssize_t num_char = 0;
-+
-+	num_char += sprintf(page + num_char, "Tot reqs queued %d\n\n",
-+			    bfqd->queued);
-+
-+	spin_lock_irq(bfqd->queue->queue_lock);
-+
-+	num_char += sprintf(page + num_char, "Active:\n");
-+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list) {
-+	  num_char += sprintf(page + num_char,
-+			      "pid%d: weight %hu, nr_queued %d %d, dur %d/%u\n",
-+			      bfqq->pid,
-+			      bfqq->entity.weight,
-+			      bfqq->queued[0],
-+			      bfqq->queued[1],
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(bfqq->wr_cur_max_time));
-+	}
-+
-+	num_char += sprintf(page + num_char, "Idle:\n");
-+	list_for_each_entry(bfqq, &bfqd->idle_list, bfqq_list) {
-+			num_char += sprintf(page + num_char,
-+				"pid%d: weight %hu, dur %d/%u\n",
-+				bfqq->pid,
-+				bfqq->entity.weight,
-+				jiffies_to_msecs(jiffies -
-+					bfqq->last_wr_start_finish),
-+				jiffies_to_msecs(bfqq->wr_cur_max_time));
-+	}
-+
-+	spin_unlock_irq(bfqd->queue->queue_lock);
-+
-+	return num_char;
-+}
-+
-+#define SHOW_FUNCTION(__FUNC, __VAR, __CONV)				\
-+static ssize_t __FUNC(struct elevator_queue *e, char *page)		\
-+{									\
-+	struct bfq_data *bfqd = e->elevator_data;			\
-+	unsigned int __data = __VAR;					\
-+	if (__CONV)							\
-+		__data = jiffies_to_msecs(__data);			\
-+	return bfq_var_show(__data, (page));				\
-+}
-+SHOW_FUNCTION(bfq_fifo_expire_sync_show, bfqd->bfq_fifo_expire[1], 1);
-+SHOW_FUNCTION(bfq_fifo_expire_async_show, bfqd->bfq_fifo_expire[0], 1);
-+SHOW_FUNCTION(bfq_back_seek_max_show, bfqd->bfq_back_max, 0);
-+SHOW_FUNCTION(bfq_back_seek_penalty_show, bfqd->bfq_back_penalty, 0);
-+SHOW_FUNCTION(bfq_slice_idle_show, bfqd->bfq_slice_idle, 1);
-+SHOW_FUNCTION(bfq_max_budget_show, bfqd->bfq_user_max_budget, 0);
-+SHOW_FUNCTION(bfq_max_budget_async_rq_show,
-+	      bfqd->bfq_max_budget_async_rq, 0);
-+SHOW_FUNCTION(bfq_timeout_sync_show, bfqd->bfq_timeout[BLK_RW_SYNC], 1);
-+SHOW_FUNCTION(bfq_timeout_async_show, bfqd->bfq_timeout[BLK_RW_ASYNC], 1);
-+SHOW_FUNCTION(bfq_low_latency_show, bfqd->low_latency, 0);
-+SHOW_FUNCTION(bfq_wr_coeff_show, bfqd->bfq_wr_coeff, 0);
-+SHOW_FUNCTION(bfq_wr_rt_max_time_show, bfqd->bfq_wr_rt_max_time, 1);
-+SHOW_FUNCTION(bfq_wr_min_idle_time_show, bfqd->bfq_wr_min_idle_time, 1);
-+SHOW_FUNCTION(bfq_wr_min_inter_arr_async_show, bfqd->bfq_wr_min_inter_arr_async,
-+	1);
-+SHOW_FUNCTION(bfq_wr_max_softrt_rate_show, bfqd->bfq_wr_max_softrt_rate, 0);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__FUNC, __PTR, MIN, MAX, __CONV)			\
-+static ssize_t								\
-+__FUNC(struct elevator_queue *e, const char *page, size_t count)	\
-+{									\
-+	struct bfq_data *bfqd = e->elevator_data;			\
-+	unsigned long uninitialized_var(__data);			\
-+	int ret = bfq_var_store(&__data, (page), count);		\
-+	if (__data < (MIN))						\
-+		__data = (MIN);						\
-+	else if (__data > (MAX))					\
-+		__data = (MAX);						\
-+	if (__CONV)							\
-+		*(__PTR) = msecs_to_jiffies(__data);			\
-+	else								\
-+		*(__PTR) = __data;					\
-+	return ret;							\
-+}
-+STORE_FUNCTION(bfq_fifo_expire_sync_store, &bfqd->bfq_fifo_expire[1], 1,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_fifo_expire_async_store, &bfqd->bfq_fifo_expire[0], 1,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_back_seek_max_store, &bfqd->bfq_back_max, 0, INT_MAX, 0);
-+STORE_FUNCTION(bfq_back_seek_penalty_store, &bfqd->bfq_back_penalty, 1,
-+		INT_MAX, 0);
-+STORE_FUNCTION(bfq_slice_idle_store, &bfqd->bfq_slice_idle, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_max_budget_async_rq_store, &bfqd->bfq_max_budget_async_rq,
-+		1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_timeout_async_store, &bfqd->bfq_timeout[BLK_RW_ASYNC], 0,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_coeff_store, &bfqd->bfq_wr_coeff, 1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_wr_max_time_store, &bfqd->bfq_wr_max_time, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_rt_max_time_store, &bfqd->bfq_wr_rt_max_time, 0, INT_MAX,
-+		1);
-+STORE_FUNCTION(bfq_wr_min_idle_time_store, &bfqd->bfq_wr_min_idle_time, 0,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_min_inter_arr_async_store,
-+		&bfqd->bfq_wr_min_inter_arr_async, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_max_softrt_rate_store, &bfqd->bfq_wr_max_softrt_rate, 0,
-+		INT_MAX, 0);
-+#undef STORE_FUNCTION
-+
-+/* do nothing for the moment */
-+static ssize_t bfq_weights_store(struct elevator_queue *e,
-+				    const char *page, size_t count)
-+{
-+	return count;
-+}
-+
-+static inline unsigned long bfq_estimated_max_budget(struct bfq_data *bfqd)
-+{
-+	u64 timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
-+
-+	if (bfqd->peak_rate_samples >= BFQ_PEAK_RATE_SAMPLES)
-+		return bfq_calc_max_budget(bfqd->peak_rate, timeout);
-+	else
-+		return bfq_default_max_budget;
-+}
-+
-+static ssize_t bfq_max_budget_store(struct elevator_queue *e,
-+				    const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data == 0)
-+		bfqd->bfq_max_budget = bfq_estimated_max_budget(bfqd);
-+	else {
-+		if (__data > INT_MAX)
-+			__data = INT_MAX;
-+		bfqd->bfq_max_budget = __data;
-+	}
-+
-+	bfqd->bfq_user_max_budget = __data;
-+
-+	return ret;
-+}
-+
-+static ssize_t bfq_timeout_sync_store(struct elevator_queue *e,
-+				      const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data < 1)
-+		__data = 1;
-+	else if (__data > INT_MAX)
-+		__data = INT_MAX;
-+
-+	bfqd->bfq_timeout[BLK_RW_SYNC] = msecs_to_jiffies(__data);
-+	if (bfqd->bfq_user_max_budget == 0)
-+		bfqd->bfq_max_budget = bfq_estimated_max_budget(bfqd);
-+
-+	return ret;
-+}
-+
-+static ssize_t bfq_low_latency_store(struct elevator_queue *e,
-+				     const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data > 1)
-+		__data = 1;
-+	if (__data == 0 && bfqd->low_latency != 0)
-+		bfq_end_wr(bfqd);
-+	bfqd->low_latency = __data;
-+
-+	return ret;
-+}
-+
-+#define BFQ_ATTR(name) \
-+	__ATTR(name, S_IRUGO|S_IWUSR, bfq_##name##_show, bfq_##name##_store)
-+
-+static struct elv_fs_entry bfq_attrs[] = {
-+	BFQ_ATTR(fifo_expire_sync),
-+	BFQ_ATTR(fifo_expire_async),
-+	BFQ_ATTR(back_seek_max),
-+	BFQ_ATTR(back_seek_penalty),
-+	BFQ_ATTR(slice_idle),
-+	BFQ_ATTR(max_budget),
-+	BFQ_ATTR(max_budget_async_rq),
-+	BFQ_ATTR(timeout_sync),
-+	BFQ_ATTR(timeout_async),
-+	BFQ_ATTR(low_latency),
-+	BFQ_ATTR(wr_coeff),
-+	BFQ_ATTR(wr_max_time),
-+	BFQ_ATTR(wr_rt_max_time),
-+	BFQ_ATTR(wr_min_idle_time),
-+	BFQ_ATTR(wr_min_inter_arr_async),
-+	BFQ_ATTR(wr_max_softrt_rate),
-+	BFQ_ATTR(weights),
-+	__ATTR_NULL
-+};
-+
-+static struct elevator_type iosched_bfq = {
-+	.ops = {
-+		.elevator_merge_fn =		bfq_merge,
-+		.elevator_merged_fn =		bfq_merged_request,
-+		.elevator_merge_req_fn =	bfq_merged_requests,
-+		.elevator_allow_merge_fn =	bfq_allow_merge,
-+		.elevator_dispatch_fn =		bfq_dispatch_requests,
-+		.elevator_add_req_fn =		bfq_insert_request,
-+		.elevator_activate_req_fn =	bfq_activate_request,
-+		.elevator_deactivate_req_fn =	bfq_deactivate_request,
-+		.elevator_completed_req_fn =	bfq_completed_request,
-+		.elevator_former_req_fn =	elv_rb_former_request,
-+		.elevator_latter_req_fn =	elv_rb_latter_request,
-+		.elevator_init_icq_fn =		bfq_init_icq,
-+		.elevator_exit_icq_fn =		bfq_exit_icq,
-+		.elevator_set_req_fn =		bfq_set_request,
-+		.elevator_put_req_fn =		bfq_put_request,
-+		.elevator_may_queue_fn =	bfq_may_queue,
-+		.elevator_init_fn =		bfq_init_queue,
-+		.elevator_exit_fn =		bfq_exit_queue,
-+	},
-+	.icq_size =		sizeof(struct bfq_io_cq),
-+	.icq_align =		__alignof__(struct bfq_io_cq),
-+	.elevator_attrs =	bfq_attrs,
-+	.elevator_name =	"bfq",
-+	.elevator_owner =	THIS_MODULE,
-+};
-+
-+static int __init bfq_init(void)
-+{
-+	/*
-+	 * Can be 0 on HZ < 1000 setups.
-+	 */
-+	if (bfq_slice_idle == 0)
-+		bfq_slice_idle = 1;
-+
-+	if (bfq_timeout_async == 0)
-+		bfq_timeout_async = 1;
-+
-+	if (bfq_slab_setup())
-+		return -ENOMEM;
-+
-+	/*
-+	 * Times to load large popular applications for the typical systems
-+	 * installed on the reference devices (see the comments before the
-+	 * definitions of the two arrays).
-+	 */
-+	T_slow[0] = msecs_to_jiffies(2600);
-+	T_slow[1] = msecs_to_jiffies(1000);
-+	T_fast[0] = msecs_to_jiffies(5500);
-+	T_fast[1] = msecs_to_jiffies(2000);
-+
-+	/*
-+	 * Thresholds that determine the switch between speed classes (see
-+	 * the comments before the definition of the array).
-+	 */
-+	device_speed_thresh[0] = (R_fast[0] + R_slow[0]) / 2;
-+	device_speed_thresh[1] = (R_fast[1] + R_slow[1]) / 2;
-+
-+	elv_register(&iosched_bfq);
-+	pr_info("BFQ I/O-scheduler: v7r8");
-+
-+	return 0;
-+}
-+
-+static void __exit bfq_exit(void)
-+{
-+	elv_unregister(&iosched_bfq);
-+	bfq_slab_kill();
-+}
-+
-+module_init(bfq_init);
-+module_exit(bfq_exit);
-+
-+MODULE_AUTHOR("Fabio Checconi, Paolo Valente");
-+MODULE_LICENSE("GPL");
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-new file mode 100644
-index 0000000..c343099
---- /dev/null
-+++ b/block/bfq-sched.c
-@@ -0,0 +1,1208 @@
-+/*
-+ * BFQ: Hierarchical B-WF2Q+ scheduler.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = entity->parent)
-+
-+#define for_each_entity_safe(entity, parent) \
-+	for (; entity && ({ parent = entity->parent; 1; }); entity = parent)
-+
-+static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
-+						 int extract,
-+						 struct bfq_data *bfqd);
-+
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
-+{
-+	struct bfq_entity *bfqg_entity;
-+	struct bfq_group *bfqg;
-+	struct bfq_sched_data *group_sd;
-+
-+	BUG_ON(next_in_service == NULL);
-+
-+	group_sd = next_in_service->sched_data;
-+
-+	bfqg = container_of(group_sd, struct bfq_group, sched_data);
-+	/*
-+	 * bfq_group's my_entity field is not NULL only if the group
-+	 * is not the root group. We must not touch the root entity
-+	 * as it must never become an in-service entity.
-+	 */
-+	bfqg_entity = bfqg->my_entity;
-+	if (bfqg_entity != NULL)
-+		bfqg_entity->budget = next_in_service->budget;
-+}
-+
-+static int bfq_update_next_in_service(struct bfq_sched_data *sd)
-+{
-+	struct bfq_entity *next_in_service;
-+
-+	if (sd->in_service_entity != NULL)
-+		/* will update/requeue at the end of service */
-+		return 0;
-+
-+	/*
-+	 * NOTE: this can be improved in many ways, such as returning
-+	 * 1 (and thus propagating upwards the update) only when the
-+	 * budget changes, or caching the bfqq that will be scheduled
-+	 * next from this subtree.  By now we worry more about
-+	 * correctness than about performance...
-+	 */
-+	next_in_service = bfq_lookup_next_entity(sd, 0, NULL);
-+	sd->next_in_service = next_in_service;
-+
-+	if (next_in_service != NULL)
-+		bfq_update_budget(next_in_service);
-+
-+	return 1;
-+}
-+
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
-+{
-+	BUG_ON(sd->next_in_service != entity);
-+}
-+#else
-+#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = NULL)
-+
-+#define for_each_entity_safe(entity, parent) \
-+	for (parent = NULL; entity != NULL; entity = parent)
-+
-+static inline int bfq_update_next_in_service(struct bfq_sched_data *sd)
-+{
-+	return 0;
-+}
-+
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
-+{
-+}
-+
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
-+{
-+}
-+#endif
-+
-+/*
-+ * Shift for timestamp calculations.  This actually limits the maximum
-+ * service allowed in one timestamp delta (small shift values increase it),
-+ * the maximum total weight that can be used for the queues in the system
-+ * (big shift values increase it), and the period of virtual time
-+ * wraparounds.
-+ */
-+#define WFQ_SERVICE_SHIFT	22
-+
-+/**
-+ * bfq_gt - compare two timestamps.
-+ * @a: first ts.
-+ * @b: second ts.
-+ *
-+ * Return @a > @b, dealing with wrapping correctly.
-+ */
-+static inline int bfq_gt(u64 a, u64 b)
-+{
-+	return (s64)(a - b) > 0;
-+}
-+
-+static inline struct bfq_queue *bfq_entity_to_bfqq(struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = NULL;
-+
-+	BUG_ON(entity == NULL);
-+
-+	if (entity->my_sched_data == NULL)
-+		bfqq = container_of(entity, struct bfq_queue, entity);
-+
-+	return bfqq;
-+}
-+
-+
-+/**
-+ * bfq_delta - map service into the virtual time domain.
-+ * @service: amount of service.
-+ * @weight: scale factor (weight of an entity or weight sum).
-+ */
-+static inline u64 bfq_delta(unsigned long service,
-+					unsigned long weight)
-+{
-+	u64 d = (u64)service << WFQ_SERVICE_SHIFT;
-+
-+	do_div(d, weight);
-+	return d;
-+}
-+
-+/**
-+ * bfq_calc_finish - assign the finish time to an entity.
-+ * @entity: the entity to act upon.
-+ * @service: the service to be charged to the entity.
-+ */
-+static inline void bfq_calc_finish(struct bfq_entity *entity,
-+				   unsigned long service)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	BUG_ON(entity->weight == 0);
-+
-+	entity->finish = entity->start +
-+		bfq_delta(service, entity->weight);
-+
-+	if (bfqq != NULL) {
-+		bfq_log_bfqq(bfqq->bfqd, bfqq,
-+			"calc_finish: serv %lu, w %d",
-+			service, entity->weight);
-+		bfq_log_bfqq(bfqq->bfqd, bfqq,
-+			"calc_finish: start %llu, finish %llu, delta %llu",
-+			entity->start, entity->finish,
-+			bfq_delta(service, entity->weight));
-+	}
-+}
-+
-+/**
-+ * bfq_entity_of - get an entity from a node.
-+ * @node: the node field of the entity.
-+ *
-+ * Convert a node pointer to the relative entity.  This is used only
-+ * to simplify the logic of some functions and not as the generic
-+ * conversion mechanism because, e.g., in the tree walking functions,
-+ * the check for a %NULL value would be redundant.
-+ */
-+static inline struct bfq_entity *bfq_entity_of(struct rb_node *node)
-+{
-+	struct bfq_entity *entity = NULL;
-+
-+	if (node != NULL)
-+		entity = rb_entry(node, struct bfq_entity, rb_node);
-+
-+	return entity;
-+}
-+
-+/**
-+ * bfq_extract - remove an entity from a tree.
-+ * @root: the tree root.
-+ * @entity: the entity to remove.
-+ */
-+static inline void bfq_extract(struct rb_root *root,
-+			       struct bfq_entity *entity)
-+{
-+	BUG_ON(entity->tree != root);
-+
-+	entity->tree = NULL;
-+	rb_erase(&entity->rb_node, root);
-+}
-+
-+/**
-+ * bfq_idle_extract - extract an entity from the idle tree.
-+ * @st: the service tree of the owning @entity.
-+ * @entity: the entity being removed.
-+ */
-+static void bfq_idle_extract(struct bfq_service_tree *st,
-+			     struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *next;
-+
-+	BUG_ON(entity->tree != &st->idle);
-+
-+	if (entity == st->first_idle) {
-+		next = rb_next(&entity->rb_node);
-+		st->first_idle = bfq_entity_of(next);
-+	}
-+
-+	if (entity == st->last_idle) {
-+		next = rb_prev(&entity->rb_node);
-+		st->last_idle = bfq_entity_of(next);
-+	}
-+
-+	bfq_extract(&st->idle, entity);
-+
-+	if (bfqq != NULL)
-+		list_del(&bfqq->bfqq_list);
-+}
-+
-+/**
-+ * bfq_insert - generic tree insertion.
-+ * @root: tree root.
-+ * @entity: entity to insert.
-+ *
-+ * This is used for the idle and the active tree, since they are both
-+ * ordered by finish time.
-+ */
-+static void bfq_insert(struct rb_root *root, struct bfq_entity *entity)
-+{
-+	struct bfq_entity *entry;
-+	struct rb_node **node = &root->rb_node;
-+	struct rb_node *parent = NULL;
-+
-+	BUG_ON(entity->tree != NULL);
-+
-+	while (*node != NULL) {
-+		parent = *node;
-+		entry = rb_entry(parent, struct bfq_entity, rb_node);
-+
-+		if (bfq_gt(entry->finish, entity->finish))
-+			node = &parent->rb_left;
-+		else
-+			node = &parent->rb_right;
-+	}
-+
-+	rb_link_node(&entity->rb_node, parent, node);
-+	rb_insert_color(&entity->rb_node, root);
-+
-+	entity->tree = root;
-+}
-+
-+/**
-+ * bfq_update_min - update the min_start field of a entity.
-+ * @entity: the entity to update.
-+ * @node: one of its children.
-+ *
-+ * This function is called when @entity may store an invalid value for
-+ * min_start due to updates to the active tree.  The function  assumes
-+ * that the subtree rooted at @node (which may be its left or its right
-+ * child) has a valid min_start value.
-+ */
-+static inline void bfq_update_min(struct bfq_entity *entity,
-+				  struct rb_node *node)
-+{
-+	struct bfq_entity *child;
-+
-+	if (node != NULL) {
-+		child = rb_entry(node, struct bfq_entity, rb_node);
-+		if (bfq_gt(entity->min_start, child->min_start))
-+			entity->min_start = child->min_start;
-+	}
-+}
-+
-+/**
-+ * bfq_update_active_node - recalculate min_start.
-+ * @node: the node to update.
-+ *
-+ * @node may have changed position or one of its children may have moved,
-+ * this function updates its min_start value.  The left and right subtrees
-+ * are assumed to hold a correct min_start value.
-+ */
-+static inline void bfq_update_active_node(struct rb_node *node)
-+{
-+	struct bfq_entity *entity = rb_entry(node, struct bfq_entity, rb_node);
-+
-+	entity->min_start = entity->start;
-+	bfq_update_min(entity, node->rb_right);
-+	bfq_update_min(entity, node->rb_left);
-+}
-+
-+/**
-+ * bfq_update_active_tree - update min_start for the whole active tree.
-+ * @node: the starting node.
-+ *
-+ * @node must be the deepest modified node after an update.  This function
-+ * updates its min_start using the values held by its children, assuming
-+ * that they did not change, and then updates all the nodes that may have
-+ * changed in the path to the root.  The only nodes that may have changed
-+ * are the ones in the path or their siblings.
-+ */
-+static void bfq_update_active_tree(struct rb_node *node)
-+{
-+	struct rb_node *parent;
-+
-+up:
-+	bfq_update_active_node(node);
-+
-+	parent = rb_parent(node);
-+	if (parent == NULL)
-+		return;
-+
-+	if (node == parent->rb_left && parent->rb_right != NULL)
-+		bfq_update_active_node(parent->rb_right);
-+	else if (parent->rb_left != NULL)
-+		bfq_update_active_node(parent->rb_left);
-+
-+	node = parent;
-+	goto up;
-+}
-+
-+static void bfq_weights_tree_add(struct bfq_data *bfqd,
-+				 struct bfq_entity *entity,
-+				 struct rb_root *root);
-+
-+static void bfq_weights_tree_remove(struct bfq_data *bfqd,
-+				    struct bfq_entity *entity,
-+				    struct rb_root *root);
-+
-+
-+/**
-+ * bfq_active_insert - insert an entity in the active tree of its
-+ *                     group/device.
-+ * @st: the service tree of the entity.
-+ * @entity: the entity being inserted.
-+ *
-+ * The active tree is ordered by finish time, but an extra key is kept
-+ * per each node, containing the minimum value for the start times of
-+ * its children (and the node itself), so it's possible to search for
-+ * the eligible node with the lowest finish time in logarithmic time.
-+ */
-+static void bfq_active_insert(struct bfq_service_tree *st,
-+			      struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *node = &entity->rb_node;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	struct bfq_sched_data *sd = NULL;
-+	struct bfq_group *bfqg = NULL;
-+	struct bfq_data *bfqd = NULL;
-+#endif
-+
-+	bfq_insert(&st->active, entity);
-+
-+	if (node->rb_left != NULL)
-+		node = node->rb_left;
-+	else if (node->rb_right != NULL)
-+		node = node->rb_right;
-+
-+	bfq_update_active_tree(node);
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	sd = entity->sched_data;
-+	bfqg = container_of(sd, struct bfq_group, sched_data);
-+	BUG_ON(!bfqg);
-+	bfqd = (struct bfq_data *)bfqg->bfqd;
-+#endif
-+	if (bfqq != NULL)
-+		list_add(&bfqq->bfqq_list, &bfqq->bfqd->active_list);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	else { /* bfq_group */
-+		BUG_ON(!bfqd);
-+		bfq_weights_tree_add(bfqd, entity, &bfqd->group_weights_tree);
-+	}
-+	if (bfqg != bfqd->root_group) {
-+		BUG_ON(!bfqg);
-+		BUG_ON(!bfqd);
-+		bfqg->active_entities++;
-+		if (bfqg->active_entities == 2)
-+			bfqd->active_numerous_groups++;
-+	}
-+#endif
-+}
-+
-+/**
-+ * bfq_ioprio_to_weight - calc a weight from an ioprio.
-+ * @ioprio: the ioprio value to convert.
-+ */
-+static inline unsigned short bfq_ioprio_to_weight(int ioprio)
-+{
-+	BUG_ON(ioprio < 0 || ioprio >= IOPRIO_BE_NR);
-+	return IOPRIO_BE_NR - ioprio;
-+}
-+
-+/**
-+ * bfq_weight_to_ioprio - calc an ioprio from a weight.
-+ * @weight: the weight value to convert.
-+ *
-+ * To preserve as mush as possible the old only-ioprio user interface,
-+ * 0 is used as an escape ioprio value for weights (numerically) equal or
-+ * larger than IOPRIO_BE_NR
-+ */
-+static inline unsigned short bfq_weight_to_ioprio(int weight)
-+{
-+	BUG_ON(weight < BFQ_MIN_WEIGHT || weight > BFQ_MAX_WEIGHT);
-+	return IOPRIO_BE_NR - weight < 0 ? 0 : IOPRIO_BE_NR - weight;
-+}
-+
-+static inline void bfq_get_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	if (bfqq != NULL) {
-+		atomic_inc(&bfqq->ref);
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "get_entity: %p %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+	}
-+}
-+
-+/**
-+ * bfq_find_deepest - find the deepest node that an extraction can modify.
-+ * @node: the node being removed.
-+ *
-+ * Do the first step of an extraction in an rb tree, looking for the
-+ * node that will replace @node, and returning the deepest node that
-+ * the following modifications to the tree can touch.  If @node is the
-+ * last node in the tree return %NULL.
-+ */
-+static struct rb_node *bfq_find_deepest(struct rb_node *node)
-+{
-+	struct rb_node *deepest;
-+
-+	if (node->rb_right == NULL && node->rb_left == NULL)
-+		deepest = rb_parent(node);
-+	else if (node->rb_right == NULL)
-+		deepest = node->rb_left;
-+	else if (node->rb_left == NULL)
-+		deepest = node->rb_right;
-+	else {
-+		deepest = rb_next(node);
-+		if (deepest->rb_right != NULL)
-+			deepest = deepest->rb_right;
-+		else if (rb_parent(deepest) != node)
-+			deepest = rb_parent(deepest);
-+	}
-+
-+	return deepest;
-+}
-+
-+/**
-+ * bfq_active_extract - remove an entity from the active tree.
-+ * @st: the service_tree containing the tree.
-+ * @entity: the entity being removed.
-+ */
-+static void bfq_active_extract(struct bfq_service_tree *st,
-+			       struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *node;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	struct bfq_sched_data *sd = NULL;
-+	struct bfq_group *bfqg = NULL;
-+	struct bfq_data *bfqd = NULL;
-+#endif
-+
-+	node = bfq_find_deepest(&entity->rb_node);
-+	bfq_extract(&st->active, entity);
-+
-+	if (node != NULL)
-+		bfq_update_active_tree(node);
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	sd = entity->sched_data;
-+	bfqg = container_of(sd, struct bfq_group, sched_data);
-+	BUG_ON(!bfqg);
-+	bfqd = (struct bfq_data *)bfqg->bfqd;
-+#endif
-+	if (bfqq != NULL)
-+		list_del(&bfqq->bfqq_list);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	else { /* bfq_group */
-+		BUG_ON(!bfqd);
-+		bfq_weights_tree_remove(bfqd, entity,
-+					&bfqd->group_weights_tree);
-+	}
-+	if (bfqg != bfqd->root_group) {
-+		BUG_ON(!bfqg);
-+		BUG_ON(!bfqd);
-+		BUG_ON(!bfqg->active_entities);
-+		bfqg->active_entities--;
-+		if (bfqg->active_entities == 1) {
-+			BUG_ON(!bfqd->active_numerous_groups);
-+			bfqd->active_numerous_groups--;
-+		}
-+	}
-+#endif
-+}
-+
-+/**
-+ * bfq_idle_insert - insert an entity into the idle tree.
-+ * @st: the service tree containing the tree.
-+ * @entity: the entity to insert.
-+ */
-+static void bfq_idle_insert(struct bfq_service_tree *st,
-+			    struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct bfq_entity *first_idle = st->first_idle;
-+	struct bfq_entity *last_idle = st->last_idle;
-+
-+	if (first_idle == NULL || bfq_gt(first_idle->finish, entity->finish))
-+		st->first_idle = entity;
-+	if (last_idle == NULL || bfq_gt(entity->finish, last_idle->finish))
-+		st->last_idle = entity;
-+
-+	bfq_insert(&st->idle, entity);
-+
-+	if (bfqq != NULL)
-+		list_add(&bfqq->bfqq_list, &bfqq->bfqd->idle_list);
-+}
-+
-+/**
-+ * bfq_forget_entity - remove an entity from the wfq trees.
-+ * @st: the service tree.
-+ * @entity: the entity being removed.
-+ *
-+ * Update the device status and forget everything about @entity, putting
-+ * the device reference to it, if it is a queue.  Entities belonging to
-+ * groups are not refcounted.
-+ */
-+static void bfq_forget_entity(struct bfq_service_tree *st,
-+			      struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(!entity->on_st);
-+
-+	entity->on_st = 0;
-+	st->wsum -= entity->weight;
-+	if (bfqq != NULL) {
-+		sd = entity->sched_data;
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "forget_entity: %p %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+	}
-+}
-+
-+/**
-+ * bfq_put_idle_entity - release the idle tree ref of an entity.
-+ * @st: service tree for the entity.
-+ * @entity: the entity being released.
-+ */
-+static void bfq_put_idle_entity(struct bfq_service_tree *st,
-+				struct bfq_entity *entity)
-+{
-+	bfq_idle_extract(st, entity);
-+	bfq_forget_entity(st, entity);
-+}
-+
-+/**
-+ * bfq_forget_idle - update the idle tree if necessary.
-+ * @st: the service tree to act upon.
-+ *
-+ * To preserve the global O(log N) complexity we only remove one entry here;
-+ * as the idle tree will not grow indefinitely this can be done safely.
-+ */
-+static void bfq_forget_idle(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *first_idle = st->first_idle;
-+	struct bfq_entity *last_idle = st->last_idle;
-+
-+	if (RB_EMPTY_ROOT(&st->active) && last_idle != NULL &&
-+	    !bfq_gt(last_idle->finish, st->vtime)) {
-+		/*
-+		 * Forget the whole idle tree, increasing the vtime past
-+		 * the last finish time of idle entities.
-+		 */
-+		st->vtime = last_idle->finish;
-+	}
-+
-+	if (first_idle != NULL && !bfq_gt(first_idle->finish, st->vtime))
-+		bfq_put_idle_entity(st, first_idle);
-+}
-+
-+static struct bfq_service_tree *
-+__bfq_entity_update_weight_prio(struct bfq_service_tree *old_st,
-+			 struct bfq_entity *entity)
-+{
-+	struct bfq_service_tree *new_st = old_st;
-+
-+	if (entity->ioprio_changed) {
-+		struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+		unsigned short prev_weight, new_weight;
-+		struct bfq_data *bfqd = NULL;
-+		struct rb_root *root;
-+#ifdef CONFIG_CGROUP_BFQIO
-+		struct bfq_sched_data *sd;
-+		struct bfq_group *bfqg;
-+#endif
-+
-+		if (bfqq != NULL)
-+			bfqd = bfqq->bfqd;
-+#ifdef CONFIG_CGROUP_BFQIO
-+		else {
-+			sd = entity->my_sched_data;
-+			bfqg = container_of(sd, struct bfq_group, sched_data);
-+			BUG_ON(!bfqg);
-+			bfqd = (struct bfq_data *)bfqg->bfqd;
-+			BUG_ON(!bfqd);
-+		}
-+#endif
-+
-+		BUG_ON(old_st->wsum < entity->weight);
-+		old_st->wsum -= entity->weight;
-+
-+		if (entity->new_weight != entity->orig_weight) {
-+			if (entity->new_weight < BFQ_MIN_WEIGHT ||
-+			    entity->new_weight > BFQ_MAX_WEIGHT) {
-+				printk(KERN_CRIT "update_weight_prio: "
-+						 "new_weight %d\n",
-+					entity->new_weight);
-+				BUG();
-+			}
-+			entity->orig_weight = entity->new_weight;
-+			entity->ioprio =
-+				bfq_weight_to_ioprio(entity->orig_weight);
-+		}
-+
-+		entity->ioprio_class = entity->new_ioprio_class;
-+		entity->ioprio_changed = 0;
-+
-+		/*
-+		 * NOTE: here we may be changing the weight too early,
-+		 * this will cause unfairness.  The correct approach
-+		 * would have required additional complexity to defer
-+		 * weight changes to the proper time instants (i.e.,
-+		 * when entity->finish <= old_st->vtime).
-+		 */
-+		new_st = bfq_entity_service_tree(entity);
-+
-+		prev_weight = entity->weight;
-+		new_weight = entity->orig_weight *
-+			     (bfqq != NULL ? bfqq->wr_coeff : 1);
-+		/*
-+		 * If the weight of the entity changes, remove the entity
-+		 * from its old weight counter (if there is a counter
-+		 * associated with the entity), and add it to the counter
-+		 * associated with its new weight.
-+		 */
-+		if (prev_weight != new_weight) {
-+			root = bfqq ? &bfqd->queue_weights_tree :
-+				      &bfqd->group_weights_tree;
-+			bfq_weights_tree_remove(bfqd, entity, root);
-+		}
-+		entity->weight = new_weight;
-+		/*
-+		 * Add the entity to its weights tree only if it is
-+		 * not associated with a weight-raised queue.
-+		 */
-+		if (prev_weight != new_weight &&
-+		    (bfqq ? bfqq->wr_coeff == 1 : 1))
-+			/* If we get here, root has been initialized. */
-+			bfq_weights_tree_add(bfqd, entity, root);
-+
-+		new_st->wsum += entity->weight;
-+
-+		if (new_st != old_st)
-+			entity->start = new_st->vtime;
-+	}
-+
-+	return new_st;
-+}
-+
-+/**
-+ * bfq_bfqq_served - update the scheduler status after selection for
-+ *                   service.
-+ * @bfqq: the queue being served.
-+ * @served: bytes to transfer.
-+ *
-+ * NOTE: this can be optimized, as the timestamps of upper level entities
-+ * are synchronized every time a new bfqq is selected for service.  By now,
-+ * we keep it to better check consistency.
-+ */
-+static void bfq_bfqq_served(struct bfq_queue *bfqq, unsigned long served)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_service_tree *st;
-+
-+	for_each_entity(entity) {
-+		st = bfq_entity_service_tree(entity);
-+
-+		entity->service += served;
-+		BUG_ON(entity->service > entity->budget);
-+		BUG_ON(st->wsum == 0);
-+
-+		st->vtime += bfq_delta(served, st->wsum);
-+		bfq_forget_idle(st);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "bfqq_served %lu secs", served);
-+}
-+
-+/**
-+ * bfq_bfqq_charge_full_budget - set the service to the entity budget.
-+ * @bfqq: the queue that needs a service update.
-+ *
-+ * When it's not possible to be fair in the service domain, because
-+ * a queue is not consuming its budget fast enough (the meaning of
-+ * fast depends on the timeout parameter), we charge it a full
-+ * budget.  In this way we should obtain a sort of time-domain
-+ * fairness among all the seeky/slow queues.
-+ */
-+static inline void bfq_bfqq_charge_full_budget(struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "charge_full_budget");
-+
-+	bfq_bfqq_served(bfqq, entity->budget - entity->service);
-+}
-+
-+/**
-+ * __bfq_activate_entity - activate an entity.
-+ * @entity: the entity being activated.
-+ *
-+ * Called whenever an entity is activated, i.e., it is not active and one
-+ * of its children receives a new request, or has to be reactivated due to
-+ * budget exhaustion.  It uses the current budget of the entity (and the
-+ * service received if @entity is active) of the queue to calculate its
-+ * timestamps.
-+ */
-+static void __bfq_activate_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+
-+	if (entity == sd->in_service_entity) {
-+		BUG_ON(entity->tree != NULL);
-+		/*
-+		 * If we are requeueing the current entity we have
-+		 * to take care of not charging to it service it has
-+		 * not received.
-+		 */
-+		bfq_calc_finish(entity, entity->service);
-+		entity->start = entity->finish;
-+		sd->in_service_entity = NULL;
-+	} else if (entity->tree == &st->active) {
-+		/*
-+		 * Requeueing an entity due to a change of some
-+		 * next_in_service entity below it.  We reuse the
-+		 * old start time.
-+		 */
-+		bfq_active_extract(st, entity);
-+	} else if (entity->tree == &st->idle) {
-+		/*
-+		 * Must be on the idle tree, bfq_idle_extract() will
-+		 * check for that.
-+		 */
-+		bfq_idle_extract(st, entity);
-+		entity->start = bfq_gt(st->vtime, entity->finish) ?
-+				       st->vtime : entity->finish;
-+	} else {
-+		/*
-+		 * The finish time of the entity may be invalid, and
-+		 * it is in the past for sure, otherwise the queue
-+		 * would have been on the idle tree.
-+		 */
-+		entity->start = st->vtime;
-+		st->wsum += entity->weight;
-+		bfq_get_entity(entity);
-+
-+		BUG_ON(entity->on_st);
-+		entity->on_st = 1;
-+	}
-+
-+	st = __bfq_entity_update_weight_prio(st, entity);
-+	bfq_calc_finish(entity, entity->budget);
-+	bfq_active_insert(st, entity);
-+}
-+
-+/**
-+ * bfq_activate_entity - activate an entity and its ancestors if necessary.
-+ * @entity: the entity to activate.
-+ *
-+ * Activate @entity and all the entities on the path from it to the root.
-+ */
-+static void bfq_activate_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sd;
-+
-+	for_each_entity(entity) {
-+		__bfq_activate_entity(entity);
-+
-+		sd = entity->sched_data;
-+		if (!bfq_update_next_in_service(sd))
-+			/*
-+			 * No need to propagate the activation to the
-+			 * upper entities, as they will be updated when
-+			 * the in-service entity is rescheduled.
-+			 */
-+			break;
-+	}
-+}
-+
-+/**
-+ * __bfq_deactivate_entity - deactivate an entity from its service tree.
-+ * @entity: the entity to deactivate.
-+ * @requeue: if false, the entity will not be put into the idle tree.
-+ *
-+ * Deactivate an entity, independently from its previous state.  If the
-+ * entity was not on a service tree just return, otherwise if it is on
-+ * any scheduler tree, extract it from that tree, and if necessary
-+ * and if the caller did not specify @requeue, put it on the idle tree.
-+ *
-+ * Return %1 if the caller should update the entity hierarchy, i.e.,
-+ * if the entity was in service or if it was the next_in_service for
-+ * its sched_data; return %0 otherwise.
-+ */
-+static int __bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
-+{
-+	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	int was_in_service = entity == sd->in_service_entity;
-+	int ret = 0;
-+
-+	if (!entity->on_st)
-+		return 0;
-+
-+	BUG_ON(was_in_service && entity->tree != NULL);
-+
-+	if (was_in_service) {
-+		bfq_calc_finish(entity, entity->service);
-+		sd->in_service_entity = NULL;
-+	} else if (entity->tree == &st->active)
-+		bfq_active_extract(st, entity);
-+	else if (entity->tree == &st->idle)
-+		bfq_idle_extract(st, entity);
-+	else if (entity->tree != NULL)
-+		BUG();
-+
-+	if (was_in_service || sd->next_in_service == entity)
-+		ret = bfq_update_next_in_service(sd);
-+
-+	if (!requeue || !bfq_gt(entity->finish, st->vtime))
-+		bfq_forget_entity(st, entity);
-+	else
-+		bfq_idle_insert(st, entity);
-+
-+	BUG_ON(sd->in_service_entity == entity);
-+	BUG_ON(sd->next_in_service == entity);
-+
-+	return ret;
-+}
-+
-+/**
-+ * bfq_deactivate_entity - deactivate an entity.
-+ * @entity: the entity to deactivate.
-+ * @requeue: true if the entity can be put on the idle tree
-+ */
-+static void bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
-+{
-+	struct bfq_sched_data *sd;
-+	struct bfq_entity *parent;
-+
-+	for_each_entity_safe(entity, parent) {
-+		sd = entity->sched_data;
-+
-+		if (!__bfq_deactivate_entity(entity, requeue))
-+			/*
-+			 * The parent entity is still backlogged, and
-+			 * we don't need to update it as it is still
-+			 * in service.
-+			 */
-+			break;
-+
-+		if (sd->next_in_service != NULL)
-+			/*
-+			 * The parent entity is still backlogged and
-+			 * the budgets on the path towards the root
-+			 * need to be updated.
-+			 */
-+			goto update;
-+
-+		/*
-+		 * If we reach there the parent is no more backlogged and
-+		 * we want to propagate the dequeue upwards.
-+		 */
-+		requeue = 1;
-+	}
-+
-+	return;
-+
-+update:
-+	entity = parent;
-+	for_each_entity(entity) {
-+		__bfq_activate_entity(entity);
-+
-+		sd = entity->sched_data;
-+		if (!bfq_update_next_in_service(sd))
-+			break;
-+	}
-+}
-+
-+/**
-+ * bfq_update_vtime - update vtime if necessary.
-+ * @st: the service tree to act upon.
-+ *
-+ * If necessary update the service tree vtime to have at least one
-+ * eligible entity, skipping to its start time.  Assumes that the
-+ * active tree of the device is not empty.
-+ *
-+ * NOTE: this hierarchical implementation updates vtimes quite often,
-+ * we may end up with reactivated processes getting timestamps after a
-+ * vtime skip done because we needed a ->first_active entity on some
-+ * intermediate node.
-+ */
-+static void bfq_update_vtime(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entry;
-+	struct rb_node *node = st->active.rb_node;
-+
-+	entry = rb_entry(node, struct bfq_entity, rb_node);
-+	if (bfq_gt(entry->min_start, st->vtime)) {
-+		st->vtime = entry->min_start;
-+		bfq_forget_idle(st);
-+	}
-+}
-+
-+/**
-+ * bfq_first_active_entity - find the eligible entity with
-+ *                           the smallest finish time
-+ * @st: the service tree to select from.
-+ *
-+ * This function searches the first schedulable entity, starting from the
-+ * root of the tree and going on the left every time on this side there is
-+ * a subtree with at least one eligible (start >= vtime) entity. The path on
-+ * the right is followed only if a) the left subtree contains no eligible
-+ * entities and b) no eligible entity has been found yet.
-+ */
-+static struct bfq_entity *bfq_first_active_entity(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entry, *first = NULL;
-+	struct rb_node *node = st->active.rb_node;
-+
-+	while (node != NULL) {
-+		entry = rb_entry(node, struct bfq_entity, rb_node);
-+left:
-+		if (!bfq_gt(entry->start, st->vtime))
-+			first = entry;
-+
-+		BUG_ON(bfq_gt(entry->min_start, st->vtime));
-+
-+		if (node->rb_left != NULL) {
-+			entry = rb_entry(node->rb_left,
-+					 struct bfq_entity, rb_node);
-+			if (!bfq_gt(entry->min_start, st->vtime)) {
-+				node = node->rb_left;
-+				goto left;
-+			}
-+		}
-+		if (first != NULL)
-+			break;
-+		node = node->rb_right;
-+	}
-+
-+	BUG_ON(first == NULL && !RB_EMPTY_ROOT(&st->active));
-+	return first;
-+}
-+
-+/**
-+ * __bfq_lookup_next_entity - return the first eligible entity in @st.
-+ * @st: the service tree.
-+ *
-+ * Update the virtual time in @st and return the first eligible entity
-+ * it contains.
-+ */
-+static struct bfq_entity *__bfq_lookup_next_entity(struct bfq_service_tree *st,
-+						   bool force)
-+{
-+	struct bfq_entity *entity, *new_next_in_service = NULL;
-+
-+	if (RB_EMPTY_ROOT(&st->active))
-+		return NULL;
-+
-+	bfq_update_vtime(st);
-+	entity = bfq_first_active_entity(st);
-+	BUG_ON(bfq_gt(entity->start, st->vtime));
-+
-+	/*
-+	 * If the chosen entity does not match with the sched_data's
-+	 * next_in_service and we are forcedly serving the IDLE priority
-+	 * class tree, bubble up budget update.
-+	 */
-+	if (unlikely(force && entity != entity->sched_data->next_in_service)) {
-+		new_next_in_service = entity;
-+		for_each_entity(new_next_in_service)
-+			bfq_update_budget(new_next_in_service);
-+	}
-+
-+	return entity;
-+}
-+
-+/**
-+ * bfq_lookup_next_entity - return the first eligible entity in @sd.
-+ * @sd: the sched_data.
-+ * @extract: if true the returned entity will be also extracted from @sd.
-+ *
-+ * NOTE: since we cache the next_in_service entity at each level of the
-+ * hierarchy, the complexity of the lookup can be decreased with
-+ * absolutely no effort just returning the cached next_in_service value;
-+ * we prefer to do full lookups to test the consistency of * the data
-+ * structures.
-+ */
-+static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
-+						 int extract,
-+						 struct bfq_data *bfqd)
-+{
-+	struct bfq_service_tree *st = sd->service_tree;
-+	struct bfq_entity *entity;
-+	int i = 0;
-+
-+	BUG_ON(sd->in_service_entity != NULL);
-+
-+	if (bfqd != NULL &&
-+	    jiffies - bfqd->bfq_class_idle_last_service > BFQ_CL_IDLE_TIMEOUT) {
-+		entity = __bfq_lookup_next_entity(st + BFQ_IOPRIO_CLASSES - 1,
-+						  true);
-+		if (entity != NULL) {
-+			i = BFQ_IOPRIO_CLASSES - 1;
-+			bfqd->bfq_class_idle_last_service = jiffies;
-+			sd->next_in_service = entity;
-+		}
-+	}
-+	for (; i < BFQ_IOPRIO_CLASSES; i++) {
-+		entity = __bfq_lookup_next_entity(st + i, false);
-+		if (entity != NULL) {
-+			if (extract) {
-+				bfq_check_next_in_service(sd, entity);
-+				bfq_active_extract(st + i, entity);
-+				sd->in_service_entity = entity;
-+				sd->next_in_service = NULL;
-+			}
-+			break;
-+		}
-+	}
-+
-+	return entity;
-+}
-+
-+/*
-+ * Get next queue for service.
-+ */
-+static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_entity *entity = NULL;
-+	struct bfq_sched_data *sd;
-+	struct bfq_queue *bfqq;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	if (bfqd->busy_queues == 0)
-+		return NULL;
-+
-+	sd = &bfqd->root_group->sched_data;
-+	for (; sd != NULL; sd = entity->my_sched_data) {
-+		entity = bfq_lookup_next_entity(sd, 1, bfqd);
-+		BUG_ON(entity == NULL);
-+		entity->service = 0;
-+	}
-+
-+	bfqq = bfq_entity_to_bfqq(entity);
-+	BUG_ON(bfqq == NULL);
-+
-+	return bfqq;
-+}
-+
-+/*
-+ * Forced extraction of the given queue.
-+ */
-+static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
-+				      struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity;
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	entity = &bfqq->entity;
-+	/*
-+	 * Bubble up extraction/update from the leaf to the root.
-+	*/
-+	for_each_entity(entity) {
-+		sd = entity->sched_data;
-+		bfq_update_budget(entity);
-+		bfq_update_vtime(bfq_entity_service_tree(entity));
-+		bfq_active_extract(bfq_entity_service_tree(entity), entity);
-+		sd->in_service_entity = entity;
-+		sd->next_in_service = NULL;
-+		entity->service = 0;
-+	}
-+
-+	return;
-+}
-+
-+static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
-+{
-+	if (bfqd->in_service_bic != NULL) {
-+		put_io_context(bfqd->in_service_bic->icq.ioc);
-+		bfqd->in_service_bic = NULL;
-+	}
-+
-+	bfqd->in_service_queue = NULL;
-+	del_timer(&bfqd->idle_slice_timer);
-+}
-+
-+static void bfq_deactivate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int requeue)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	if (bfqq == bfqd->in_service_queue)
-+		__bfq_bfqd_reset_in_service(bfqd);
-+
-+	bfq_deactivate_entity(entity, requeue);
-+}
-+
-+static void bfq_activate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	bfq_activate_entity(entity);
-+}
-+
-+/*
-+ * Called when the bfqq no longer has requests pending, remove it from
-+ * the service tree.
-+ */
-+static void bfq_del_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			      int requeue)
-+{
-+	BUG_ON(!bfq_bfqq_busy(bfqq));
-+	BUG_ON(!RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	bfq_log_bfqq(bfqd, bfqq, "del from busy");
-+
-+	bfq_clear_bfqq_busy(bfqq);
-+
-+	BUG_ON(bfqd->busy_queues == 0);
-+	bfqd->busy_queues--;
-+
-+	if (!bfqq->dispatched) {
-+		bfq_weights_tree_remove(bfqd, &bfqq->entity,
-+					&bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->busy_in_flight_queues);
-+			bfqd->busy_in_flight_queues--;
-+			if (bfq_bfqq_constantly_seeky(bfqq)) {
-+				BUG_ON(!bfqd->
-+					const_seeky_busy_in_flight_queues);
-+				bfqd->const_seeky_busy_in_flight_queues--;
-+			}
-+		}
-+	}
-+	if (bfqq->wr_coeff > 1)
-+		bfqd->wr_busy_queues--;
-+
-+	bfq_deactivate_bfqq(bfqd, bfqq, requeue);
-+}
-+
-+/*
-+ * Called when an inactive queue receives a new request.
-+ */
-+static void bfq_add_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfq_bfqq_busy(bfqq));
-+	BUG_ON(bfqq == bfqd->in_service_queue);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "add to busy");
-+
-+	bfq_activate_bfqq(bfqd, bfqq);
-+
-+	bfq_mark_bfqq_busy(bfqq);
-+	bfqd->busy_queues++;
-+
-+	if (!bfqq->dispatched) {
-+		if (bfqq->wr_coeff == 1)
-+			bfq_weights_tree_add(bfqd, &bfqq->entity,
-+					     &bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			bfqd->busy_in_flight_queues++;
-+			if (bfq_bfqq_constantly_seeky(bfqq))
-+				bfqd->const_seeky_busy_in_flight_queues++;
-+		}
-+	}
-+	if (bfqq->wr_coeff > 1)
-+		bfqd->wr_busy_queues++;
-+}
-diff --git a/block/bfq.h b/block/bfq.h
-new file mode 100644
-index 0000000..dd1a5b1
---- /dev/null
-+++ b/block/bfq.h
-@@ -0,0 +1,771 @@
-+/*
-+ * BFQ-v7r8 for 3.19.0: data structures and common functions prototypes.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+#ifndef _BFQ_H
-+#define _BFQ_H
-+
-+#include <linux/blktrace_api.h>
-+#include <linux/hrtimer.h>
-+#include <linux/ioprio.h>
-+#include <linux/rbtree.h>
-+
-+#define BFQ_IOPRIO_CLASSES	3
-+#define BFQ_CL_IDLE_TIMEOUT	(HZ/5)
-+
-+#define BFQ_MIN_WEIGHT	1
-+#define BFQ_MAX_WEIGHT	1000
-+
-+#define BFQ_DEFAULT_QUEUE_IOPRIO	4
-+
-+#define BFQ_DEFAULT_GRP_WEIGHT	10
-+#define BFQ_DEFAULT_GRP_IOPRIO	0
-+#define BFQ_DEFAULT_GRP_CLASS	IOPRIO_CLASS_BE
-+
-+struct bfq_entity;
-+
-+/**
-+ * struct bfq_service_tree - per ioprio_class service tree.
-+ * @active: tree for active entities (i.e., those backlogged).
-+ * @idle: tree for idle entities (i.e., those not backlogged, with V <= F_i).
-+ * @first_idle: idle entity with minimum F_i.
-+ * @last_idle: idle entity with maximum F_i.
-+ * @vtime: scheduler virtual time.
-+ * @wsum: scheduler weight sum; active and idle entities contribute to it.
-+ *
-+ * Each service tree represents a B-WF2Q+ scheduler on its own.  Each
-+ * ioprio_class has its own independent scheduler, and so its own
-+ * bfq_service_tree.  All the fields are protected by the queue lock
-+ * of the containing bfqd.
-+ */
-+struct bfq_service_tree {
-+	struct rb_root active;
-+	struct rb_root idle;
-+
-+	struct bfq_entity *first_idle;
-+	struct bfq_entity *last_idle;
-+
-+	u64 vtime;
-+	unsigned long wsum;
-+};
-+
-+/**
-+ * struct bfq_sched_data - multi-class scheduler.
-+ * @in_service_entity: entity in service.
-+ * @next_in_service: head-of-the-line entity in the scheduler.
-+ * @service_tree: array of service trees, one per ioprio_class.
-+ *
-+ * bfq_sched_data is the basic scheduler queue.  It supports three
-+ * ioprio_classes, and can be used either as a toplevel queue or as
-+ * an intermediate queue on a hierarchical setup.
-+ * @next_in_service points to the active entity of the sched_data
-+ * service trees that will be scheduled next.
-+ *
-+ * The supported ioprio_classes are the same as in CFQ, in descending
-+ * priority order, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE.
-+ * Requests from higher priority queues are served before all the
-+ * requests from lower priority queues; among requests of the same
-+ * queue requests are served according to B-WF2Q+.
-+ * All the fields are protected by the queue lock of the containing bfqd.
-+ */
-+struct bfq_sched_data {
-+	struct bfq_entity *in_service_entity;
-+	struct bfq_entity *next_in_service;
-+	struct bfq_service_tree service_tree[BFQ_IOPRIO_CLASSES];
-+};
-+
-+/**
-+ * struct bfq_weight_counter - counter of the number of all active entities
-+ *                             with a given weight.
-+ * @weight: weight of the entities that this counter refers to.
-+ * @num_active: number of active entities with this weight.
-+ * @weights_node: weights tree member (see bfq_data's @queue_weights_tree
-+ *                and @group_weights_tree).
-+ */
-+struct bfq_weight_counter {
-+	short int weight;
-+	unsigned int num_active;
-+	struct rb_node weights_node;
-+};
-+
-+/**
-+ * struct bfq_entity - schedulable entity.
-+ * @rb_node: service_tree member.
-+ * @weight_counter: pointer to the weight counter associated with this entity.
-+ * @on_st: flag, true if the entity is on a tree (either the active or
-+ *         the idle one of its service_tree).
-+ * @finish: B-WF2Q+ finish timestamp (aka F_i).
-+ * @start: B-WF2Q+ start timestamp (aka S_i).
-+ * @tree: tree the entity is enqueued into; %NULL if not on a tree.
-+ * @min_start: minimum start time of the (active) subtree rooted at
-+ *             this entity; used for O(log N) lookups into active trees.
-+ * @service: service received during the last round of service.
-+ * @budget: budget used to calculate F_i; F_i = S_i + @budget / @weight.
-+ * @weight: weight of the queue
-+ * @parent: parent entity, for hierarchical scheduling.
-+ * @my_sched_data: for non-leaf nodes in the cgroup hierarchy, the
-+ *                 associated scheduler queue, %NULL on leaf nodes.
-+ * @sched_data: the scheduler queue this entity belongs to.
-+ * @ioprio: the ioprio in use.
-+ * @new_weight: when a weight change is requested, the new weight value.
-+ * @orig_weight: original weight, used to implement weight boosting
-+ * @new_ioprio: when an ioprio change is requested, the new ioprio value.
-+ * @ioprio_class: the ioprio_class in use.
-+ * @new_ioprio_class: when an ioprio_class change is requested, the new
-+ *                    ioprio_class value.
-+ * @ioprio_changed: flag, true when the user requested a weight, ioprio or
-+ *                  ioprio_class change.
-+ *
-+ * A bfq_entity is used to represent either a bfq_queue (leaf node in the
-+ * cgroup hierarchy) or a bfq_group into the upper level scheduler.  Each
-+ * entity belongs to the sched_data of the parent group in the cgroup
-+ * hierarchy.  Non-leaf entities have also their own sched_data, stored
-+ * in @my_sched_data.
-+ *
-+ * Each entity stores independently its priority values; this would
-+ * allow different weights on different devices, but this
-+ * functionality is not exported to userspace by now.  Priorities and
-+ * weights are updated lazily, first storing the new values into the
-+ * new_* fields, then setting the @ioprio_changed flag.  As soon as
-+ * there is a transition in the entity state that allows the priority
-+ * update to take place the effective and the requested priority
-+ * values are synchronized.
-+ *
-+ * Unless cgroups are used, the weight value is calculated from the
-+ * ioprio to export the same interface as CFQ.  When dealing with
-+ * ``well-behaved'' queues (i.e., queues that do not spend too much
-+ * time to consume their budget and have true sequential behavior, and
-+ * when there are no external factors breaking anticipation) the
-+ * relative weights at each level of the cgroups hierarchy should be
-+ * guaranteed.  All the fields are protected by the queue lock of the
-+ * containing bfqd.
-+ */
-+struct bfq_entity {
-+	struct rb_node rb_node;
-+	struct bfq_weight_counter *weight_counter;
-+
-+	int on_st;
-+
-+	u64 finish;
-+	u64 start;
-+
-+	struct rb_root *tree;
-+
-+	u64 min_start;
-+
-+	unsigned long service, budget;
-+	unsigned short weight, new_weight;
-+	unsigned short orig_weight;
-+
-+	struct bfq_entity *parent;
-+
-+	struct bfq_sched_data *my_sched_data;
-+	struct bfq_sched_data *sched_data;
-+
-+	unsigned short ioprio, new_ioprio;
-+	unsigned short ioprio_class, new_ioprio_class;
-+
-+	int ioprio_changed;
-+};
-+
-+struct bfq_group;
-+
-+/**
-+ * struct bfq_queue - leaf schedulable entity.
-+ * @ref: reference counter.
-+ * @bfqd: parent bfq_data.
-+ * @new_bfqq: shared bfq_queue if queue is cooperating with
-+ *           one or more other queues.
-+ * @pos_node: request-position tree member (see bfq_data's @rq_pos_tree).
-+ * @pos_root: request-position tree root (see bfq_data's @rq_pos_tree).
-+ * @sort_list: sorted list of pending requests.
-+ * @next_rq: if fifo isn't expired, next request to serve.
-+ * @queued: nr of requests queued in @sort_list.
-+ * @allocated: currently allocated requests.
-+ * @meta_pending: pending metadata requests.
-+ * @fifo: fifo list of requests in sort_list.
-+ * @entity: entity representing this queue in the scheduler.
-+ * @max_budget: maximum budget allowed from the feedback mechanism.
-+ * @budget_timeout: budget expiration (in jiffies).
-+ * @dispatched: number of requests on the dispatch list or inside driver.
-+ * @flags: status flags.
-+ * @bfqq_list: node for active/idle bfqq list inside our bfqd.
-+ * @burst_list_node: node for the device's burst list.
-+ * @seek_samples: number of seeks sampled
-+ * @seek_total: sum of the distances of the seeks sampled
-+ * @seek_mean: mean seek distance
-+ * @last_request_pos: position of the last request enqueued
-+ * @requests_within_timer: number of consecutive pairs of request completion
-+ *                         and arrival, such that the queue becomes idle
-+ *                         after the completion, but the next request arrives
-+ *                         within an idle time slice; used only if the queue's
-+ *                         IO_bound has been cleared.
-+ * @pid: pid of the process owning the queue, used for logging purposes.
-+ * @last_wr_start_finish: start time of the current weight-raising period if
-+ *                        the @bfq-queue is being weight-raised, otherwise
-+ *                        finish time of the last weight-raising period
-+ * @wr_cur_max_time: current max raising time for this queue
-+ * @soft_rt_next_start: minimum time instant such that, only if a new
-+ *                      request is enqueued after this time instant in an
-+ *                      idle @bfq_queue with no outstanding requests, then
-+ *                      the task associated with the queue it is deemed as
-+ *                      soft real-time (see the comments to the function
-+ *                      bfq_bfqq_softrt_next_start()).
-+ * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-+ *                      idle to backlogged
-+ * @service_from_backlogged: cumulative service received from the @bfq_queue
-+ *                           since the last transition from idle to
-+ *                           backlogged
-+ *
-+ * A bfq_queue is a leaf request queue; it can be associated with an io_context
-+ * or more, if it is async or shared between cooperating processes. @cgroup
-+ * holds a reference to the cgroup, to be sure that it does not disappear while
-+ * a bfqq still references it (mostly to avoid races between request issuing and
-+ * task migration followed by cgroup destruction).
-+ * All the fields are protected by the queue lock of the containing bfqd.
-+ */
-+struct bfq_queue {
-+	atomic_t ref;
-+	struct bfq_data *bfqd;
-+
-+	/* fields for cooperating queues handling */
-+	struct bfq_queue *new_bfqq;
-+	struct rb_node pos_node;
-+	struct rb_root *pos_root;
-+
-+	struct rb_root sort_list;
-+	struct request *next_rq;
-+	int queued[2];
-+	int allocated[2];
-+	int meta_pending;
-+	struct list_head fifo;
-+
-+	struct bfq_entity entity;
-+
-+	unsigned long max_budget;
-+	unsigned long budget_timeout;
-+
-+	int dispatched;
-+
-+	unsigned int flags;
-+
-+	struct list_head bfqq_list;
-+
-+	struct hlist_node burst_list_node;
-+
-+	unsigned int seek_samples;
-+	u64 seek_total;
-+	sector_t seek_mean;
-+	sector_t last_request_pos;
-+
-+	unsigned int requests_within_timer;
-+
-+	pid_t pid;
-+
-+	/* weight-raising fields */
-+	unsigned long wr_cur_max_time;
-+	unsigned long soft_rt_next_start;
-+	unsigned long last_wr_start_finish;
-+	unsigned int wr_coeff;
-+	unsigned long last_idle_bklogged;
-+	unsigned long service_from_backlogged;
-+};
-+
-+/**
-+ * struct bfq_ttime - per process thinktime stats.
-+ * @ttime_total: total process thinktime
-+ * @ttime_samples: number of thinktime samples
-+ * @ttime_mean: average process thinktime
-+ */
-+struct bfq_ttime {
-+	unsigned long last_end_request;
-+
-+	unsigned long ttime_total;
-+	unsigned long ttime_samples;
-+	unsigned long ttime_mean;
-+};
-+
-+/**
-+ * struct bfq_io_cq - per (request_queue, io_context) structure.
-+ * @icq: associated io_cq structure
-+ * @bfqq: array of two process queues, the sync and the async
-+ * @ttime: associated @bfq_ttime struct
-+ */
-+struct bfq_io_cq {
-+	struct io_cq icq; /* must be the first member */
-+	struct bfq_queue *bfqq[2];
-+	struct bfq_ttime ttime;
-+	int ioprio;
-+};
-+
-+enum bfq_device_speed {
-+	BFQ_BFQD_FAST,
-+	BFQ_BFQD_SLOW,
-+};
-+
-+/**
-+ * struct bfq_data - per device data structure.
-+ * @queue: request queue for the managed device.
-+ * @root_group: root bfq_group for the device.
-+ * @rq_pos_tree: rbtree sorted by next_request position, used when
-+ *               determining if two or more queues have interleaving
-+ *               requests (see bfq_close_cooperator()).
-+ * @active_numerous_groups: number of bfq_groups containing more than one
-+ *                          active @bfq_entity.
-+ * @queue_weights_tree: rbtree of weight counters of @bfq_queues, sorted by
-+ *                      weight. Used to keep track of whether all @bfq_queues
-+ *                     have the same weight. The tree contains one counter
-+ *                     for each distinct weight associated to some active
-+ *                     and not weight-raised @bfq_queue (see the comments to
-+ *                      the functions bfq_weights_tree_[add|remove] for
-+ *                     further details).
-+ * @group_weights_tree: rbtree of non-queue @bfq_entity weight counters, sorted
-+ *                      by weight. Used to keep track of whether all
-+ *                     @bfq_groups have the same weight. The tree contains
-+ *                     one counter for each distinct weight associated to
-+ *                     some active @bfq_group (see the comments to the
-+ *                     functions bfq_weights_tree_[add|remove] for further
-+ *                     details).
-+ * @busy_queues: number of bfq_queues containing requests (including the
-+ *		 queue in service, even if it is idling).
-+ * @busy_in_flight_queues: number of @bfq_queues containing pending or
-+ *                         in-flight requests, plus the @bfq_queue in
-+ *                         service, even if idle but waiting for the
-+ *                         possible arrival of its next sync request. This
-+ *                         field is updated only if the device is rotational,
-+ *                         but used only if the device is also NCQ-capable.
-+ *                         The reason why the field is updated also for non-
-+ *                         NCQ-capable rotational devices is related to the
-+ *                         fact that the value of @hw_tag may be set also
-+ *                         later than when busy_in_flight_queues may need to
-+ *                         be incremented for the first time(s). Taking also
-+ *                         this possibility into account, to avoid unbalanced
-+ *                         increments/decrements, would imply more overhead
-+ *                         than just updating busy_in_flight_queues
-+ *                         regardless of the value of @hw_tag.
-+ * @const_seeky_busy_in_flight_queues: number of constantly-seeky @bfq_queues
-+ *                                     (that is, seeky queues that expired
-+ *                                     for budget timeout at least once)
-+ *                                     containing pending or in-flight
-+ *                                     requests, including the in-service
-+ *                                     @bfq_queue if constantly seeky. This
-+ *                                     field is updated only if the device
-+ *                                     is rotational, but used only if the
-+ *                                     device is also NCQ-capable (see the
-+ *                                     comments to @busy_in_flight_queues).
-+ * @wr_busy_queues: number of weight-raised busy @bfq_queues.
-+ * @queued: number of queued requests.
-+ * @rq_in_driver: number of requests dispatched and waiting for completion.
-+ * @sync_flight: number of sync requests in the driver.
-+ * @max_rq_in_driver: max number of reqs in driver in the last
-+ *                    @hw_tag_samples completed requests.
-+ * @hw_tag_samples: nr of samples used to calculate hw_tag.
-+ * @hw_tag: flag set to one if the driver is showing a queueing behavior.
-+ * @budgets_assigned: number of budgets assigned.
-+ * @idle_slice_timer: timer set when idling for the next sequential request
-+ *                    from the queue in service.
-+ * @unplug_work: delayed work to restart dispatching on the request queue.
-+ * @in_service_queue: bfq_queue in service.
-+ * @in_service_bic: bfq_io_cq (bic) associated with the @in_service_queue.
-+ * @last_position: on-disk position of the last served request.
-+ * @last_budget_start: beginning of the last budget.
-+ * @last_idling_start: beginning of the last idle slice.
-+ * @peak_rate: peak transfer rate observed for a budget.
-+ * @peak_rate_samples: number of samples used to calculate @peak_rate.
-+ * @bfq_max_budget: maximum budget allotted to a bfq_queue before
-+ *                  rescheduling.
-+ * @group_list: list of all the bfq_groups active on the device.
-+ * @active_list: list of all the bfq_queues active on the device.
-+ * @idle_list: list of all the bfq_queues idle on the device.
-+ * @bfq_fifo_expire: timeout for async/sync requests; when it expires
-+ *                   requests are served in fifo order.
-+ * @bfq_back_penalty: weight of backward seeks wrt forward ones.
-+ * @bfq_back_max: maximum allowed backward seek.
-+ * @bfq_slice_idle: maximum idling time.
-+ * @bfq_user_max_budget: user-configured max budget value
-+ *                       (0 for auto-tuning).
-+ * @bfq_max_budget_async_rq: maximum budget (in nr of requests) allotted to
-+ *                           async queues.
-+ * @bfq_timeout: timeout for bfq_queues to consume their budget; used to
-+ *               to prevent seeky queues to impose long latencies to well
-+ *               behaved ones (this also implies that seeky queues cannot
-+ *               receive guarantees in the service domain; after a timeout
-+ *               they are charged for the whole allocated budget, to try
-+ *               to preserve a behavior reasonably fair among them, but
-+ *               without service-domain guarantees).
-+ * @bfq_coop_thresh: number of queue merges after which a @bfq_queue is
-+ *                   no more granted any weight-raising.
-+ * @bfq_failed_cooperations: number of consecutive failed cooperation
-+ *                           chances after which weight-raising is restored
-+ *                           to a queue subject to more than bfq_coop_thresh
-+ *                           queue merges.
-+ * @bfq_requests_within_timer: number of consecutive requests that must be
-+ *                             issued within the idle time slice to set
-+ *                             again idling to a queue which was marked as
-+ *                             non-I/O-bound (see the definition of the
-+ *                             IO_bound flag for further details).
-+ * @last_ins_in_burst: last time at which a queue entered the current
-+ *                     burst of queues being activated shortly after
-+ *                     each other; for more details about this and the
-+ *                     following parameters related to a burst of
-+ *                     activations, see the comments to the function
-+ *                     @bfq_handle_burst.
-+ * @bfq_burst_interval: reference time interval used to decide whether a
-+ *                      queue has been activated shortly after
-+ *                      @last_ins_in_burst.
-+ * @burst_size: number of queues in the current burst of queue activations.
-+ * @bfq_large_burst_thresh: maximum burst size above which the current
-+ * 			    queue-activation burst is deemed as 'large'.
-+ * @large_burst: true if a large queue-activation burst is in progress.
-+ * @burst_list: head of the burst list (as for the above fields, more details
-+ * 		in the comments to the function bfq_handle_burst).
-+ * @low_latency: if set to true, low-latency heuristics are enabled.
-+ * @bfq_wr_coeff: maximum factor by which the weight of a weight-raised
-+ *                queue is multiplied.
-+ * @bfq_wr_max_time: maximum duration of a weight-raising period (jiffies).
-+ * @bfq_wr_rt_max_time: maximum duration for soft real-time processes.
-+ * @bfq_wr_min_idle_time: minimum idle period after which weight-raising
-+ *			  may be reactivated for a queue (in jiffies).
-+ * @bfq_wr_min_inter_arr_async: minimum period between request arrivals
-+ *				after which weight-raising may be
-+ *				reactivated for an already busy queue
-+ *				(in jiffies).
-+ * @bfq_wr_max_softrt_rate: max service-rate for a soft real-time queue,
-+ *			    sectors per seconds.
-+ * @RT_prod: cached value of the product R*T used for computing the maximum
-+ *	     duration of the weight raising automatically.
-+ * @device_speed: device-speed class for the low-latency heuristic.
-+ * @oom_bfqq: fallback dummy bfqq for extreme OOM conditions.
-+ *
-+ * All the fields are protected by the @queue lock.
-+ */
-+struct bfq_data {
-+	struct request_queue *queue;
-+
-+	struct bfq_group *root_group;
-+	struct rb_root rq_pos_tree;
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	int active_numerous_groups;
-+#endif
-+
-+	struct rb_root queue_weights_tree;
-+	struct rb_root group_weights_tree;
-+
-+	int busy_queues;
-+	int busy_in_flight_queues;
-+	int const_seeky_busy_in_flight_queues;
-+	int wr_busy_queues;
-+	int queued;
-+	int rq_in_driver;
-+	int sync_flight;
-+
-+	int max_rq_in_driver;
-+	int hw_tag_samples;
-+	int hw_tag;
-+
-+	int budgets_assigned;
-+
-+	struct timer_list idle_slice_timer;
-+	struct work_struct unplug_work;
-+
-+	struct bfq_queue *in_service_queue;
-+	struct bfq_io_cq *in_service_bic;
-+
-+	sector_t last_position;
-+
-+	ktime_t last_budget_start;
-+	ktime_t last_idling_start;
-+	int peak_rate_samples;
-+	u64 peak_rate;
-+	unsigned long bfq_max_budget;
-+
-+	struct hlist_head group_list;
-+	struct list_head active_list;
-+	struct list_head idle_list;
-+
-+	unsigned int bfq_fifo_expire[2];
-+	unsigned int bfq_back_penalty;
-+	unsigned int bfq_back_max;
-+	unsigned int bfq_slice_idle;
-+	u64 bfq_class_idle_last_service;
-+
-+	unsigned int bfq_user_max_budget;
-+	unsigned int bfq_max_budget_async_rq;
-+	unsigned int bfq_timeout[2];
-+
-+	unsigned int bfq_coop_thresh;
-+	unsigned int bfq_failed_cooperations;
-+	unsigned int bfq_requests_within_timer;
-+
-+	unsigned long last_ins_in_burst;
-+	unsigned long bfq_burst_interval;
-+	int burst_size;
-+	unsigned long bfq_large_burst_thresh;
-+	bool large_burst;
-+	struct hlist_head burst_list;
-+
-+	bool low_latency;
-+
-+	/* parameters of the low_latency heuristics */
-+	unsigned int bfq_wr_coeff;
-+	unsigned int bfq_wr_max_time;
-+	unsigned int bfq_wr_rt_max_time;
-+	unsigned int bfq_wr_min_idle_time;
-+	unsigned long bfq_wr_min_inter_arr_async;
-+	unsigned int bfq_wr_max_softrt_rate;
-+	u64 RT_prod;
-+	enum bfq_device_speed device_speed;
-+
-+	struct bfq_queue oom_bfqq;
-+};
-+
-+enum bfqq_state_flags {
-+	BFQ_BFQQ_FLAG_busy = 0,		/* has requests or is in service */
-+	BFQ_BFQQ_FLAG_wait_request,	/* waiting for a request */
-+	BFQ_BFQQ_FLAG_must_alloc,	/* must be allowed rq alloc */
-+	BFQ_BFQQ_FLAG_fifo_expire,	/* FIFO checked in this slice */
-+	BFQ_BFQQ_FLAG_idle_window,	/* slice idling enabled */
-+	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
-+	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
-+	BFQ_BFQQ_FLAG_IO_bound,         /*
-+					 * bfqq has timed-out at least once
-+					 * having consumed at most 2/10 of
-+					 * its budget
-+					 */
-+	BFQ_BFQQ_FLAG_in_large_burst,	/*
-+					 * bfqq activated in a large burst,
-+					 * see comments to bfq_handle_burst.
-+					 */
-+	BFQ_BFQQ_FLAG_constantly_seeky,	/*
-+					 * bfqq has proved to be slow and
-+					 * seeky until budget timeout
-+					 */
-+	BFQ_BFQQ_FLAG_softrt_update,    /*
-+					 * may need softrt-next-start
-+					 * update
-+					 */
-+	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+};
-+
-+#define BFQ_BFQQ_FNS(name)						\
-+static inline void bfq_mark_bfqq_##name(struct bfq_queue *bfqq)		\
-+{									\
-+	(bfqq)->flags |= (1 << BFQ_BFQQ_FLAG_##name);			\
-+}									\
-+static inline void bfq_clear_bfqq_##name(struct bfq_queue *bfqq)	\
-+{									\
-+	(bfqq)->flags &= ~(1 << BFQ_BFQQ_FLAG_##name);			\
-+}									\
-+static inline int bfq_bfqq_##name(const struct bfq_queue *bfqq)		\
-+{									\
-+	return ((bfqq)->flags & (1 << BFQ_BFQQ_FLAG_##name)) != 0;	\
-+}
-+
-+BFQ_BFQQ_FNS(busy);
-+BFQ_BFQQ_FNS(wait_request);
-+BFQ_BFQQ_FNS(must_alloc);
-+BFQ_BFQQ_FNS(fifo_expire);
-+BFQ_BFQQ_FNS(idle_window);
-+BFQ_BFQQ_FNS(sync);
-+BFQ_BFQQ_FNS(budget_new);
-+BFQ_BFQQ_FNS(IO_bound);
-+BFQ_BFQQ_FNS(in_large_burst);
-+BFQ_BFQQ_FNS(constantly_seeky);
-+BFQ_BFQQ_FNS(coop);
-+BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(softrt_update);
-+#undef BFQ_BFQQ_FNS
-+
-+/* Logging facilities. */
-+#define bfq_log_bfqq(bfqd, bfqq, fmt, args...) \
-+	blk_add_trace_msg((bfqd)->queue, "bfq%d " fmt, (bfqq)->pid, ##args)
-+
-+#define bfq_log(bfqd, fmt, args...) \
-+	blk_add_trace_msg((bfqd)->queue, "bfq " fmt, ##args)
-+
-+/* Expiration reasons. */
-+enum bfqq_expiration {
-+	BFQ_BFQQ_TOO_IDLE = 0,		/*
-+					 * queue has been idling for
-+					 * too long
-+					 */
-+	BFQ_BFQQ_BUDGET_TIMEOUT,	/* budget took too long to be used */
-+	BFQ_BFQQ_BUDGET_EXHAUSTED,	/* budget consumed */
-+	BFQ_BFQQ_NO_MORE_REQUESTS,	/* the queue has no more requests */
-+};
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+/**
-+ * struct bfq_group - per (device, cgroup) data structure.
-+ * @entity: schedulable entity to insert into the parent group sched_data.
-+ * @sched_data: own sched_data, to contain child entities (they may be
-+ *              both bfq_queues and bfq_groups).
-+ * @group_node: node to be inserted into the bfqio_cgroup->group_data
-+ *              list of the containing cgroup's bfqio_cgroup.
-+ * @bfqd_node: node to be inserted into the @bfqd->group_list list
-+ *             of the groups active on the same device; used for cleanup.
-+ * @bfqd: the bfq_data for the device this group acts upon.
-+ * @async_bfqq: array of async queues for all the tasks belonging to
-+ *              the group, one queue per ioprio value per ioprio_class,
-+ *              except for the idle class that has only one queue.
-+ * @async_idle_bfqq: async queue for the idle class (ioprio is ignored).
-+ * @my_entity: pointer to @entity, %NULL for the toplevel group; used
-+ *             to avoid too many special cases during group creation/
-+ *             migration.
-+ * @active_entities: number of active entities belonging to the group;
-+ *                   unused for the root group. Used to know whether there
-+ *                   are groups with more than one active @bfq_entity
-+ *                   (see the comments to the function
-+ *                   bfq_bfqq_must_not_expire()).
-+ *
-+ * Each (device, cgroup) pair has its own bfq_group, i.e., for each cgroup
-+ * there is a set of bfq_groups, each one collecting the lower-level
-+ * entities belonging to the group that are acting on the same device.
-+ *
-+ * Locking works as follows:
-+ *    o @group_node is protected by the bfqio_cgroup lock, and is accessed
-+ *      via RCU from its readers.
-+ *    o @bfqd is protected by the queue lock, RCU is used to access it
-+ *      from the readers.
-+ *    o All the other fields are protected by the @bfqd queue lock.
-+ */
-+struct bfq_group {
-+	struct bfq_entity entity;
-+	struct bfq_sched_data sched_data;
-+
-+	struct hlist_node group_node;
-+	struct hlist_node bfqd_node;
-+
-+	void *bfqd;
-+
-+	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
-+	struct bfq_queue *async_idle_bfqq;
-+
-+	struct bfq_entity *my_entity;
-+
-+	int active_entities;
-+};
-+
-+/**
-+ * struct bfqio_cgroup - bfq cgroup data structure.
-+ * @css: subsystem state for bfq in the containing cgroup.
-+ * @online: flag marked when the subsystem is inserted.
-+ * @weight: cgroup weight.
-+ * @ioprio: cgroup ioprio.
-+ * @ioprio_class: cgroup ioprio_class.
-+ * @lock: spinlock that protects @ioprio, @ioprio_class and @group_data.
-+ * @group_data: list containing the bfq_group belonging to this cgroup.
-+ *
-+ * @group_data is accessed using RCU, with @lock protecting the updates,
-+ * @ioprio and @ioprio_class are protected by @lock.
-+ */
-+struct bfqio_cgroup {
-+	struct cgroup_subsys_state css;
-+	bool online;
-+
-+	unsigned short weight, ioprio, ioprio_class;
-+
-+	spinlock_t lock;
-+	struct hlist_head group_data;
-+};
-+#else
-+struct bfq_group {
-+	struct bfq_sched_data sched_data;
-+
-+	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
-+	struct bfq_queue *async_idle_bfqq;
-+};
-+#endif
-+
-+static inline struct bfq_service_tree *
-+bfq_entity_service_tree(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sched_data = entity->sched_data;
-+	unsigned int idx = entity->ioprio_class - 1;
-+
-+	BUG_ON(idx >= BFQ_IOPRIO_CLASSES);
-+	BUG_ON(sched_data == NULL);
-+
-+	return sched_data->service_tree + idx;
-+}
-+
-+static inline struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic,
-+					    bool is_sync)
-+{
-+	return bic->bfqq[is_sync];
-+}
-+
-+static inline void bic_set_bfqq(struct bfq_io_cq *bic,
-+				struct bfq_queue *bfqq, bool is_sync)
-+{
-+	bic->bfqq[is_sync] = bfqq;
-+}
-+
-+static inline struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic)
-+{
-+	return bic->icq.q->elevator->elevator_data;
-+}
-+
-+/**
-+ * bfq_get_bfqd_locked - get a lock to a bfqd using a RCU protected pointer.
-+ * @ptr: a pointer to a bfqd.
-+ * @flags: storage for the flags to be saved.
-+ *
-+ * This function allows bfqg->bfqd to be protected by the
-+ * queue lock of the bfqd they reference; the pointer is dereferenced
-+ * under RCU, so the storage for bfqd is assured to be safe as long
-+ * as the RCU read side critical section does not end.  After the
-+ * bfqd->queue->queue_lock is taken the pointer is rechecked, to be
-+ * sure that no other writer accessed it.  If we raced with a writer,
-+ * the function returns NULL, with the queue unlocked, otherwise it
-+ * returns the dereferenced pointer, with the queue locked.
-+ */
-+static inline struct bfq_data *bfq_get_bfqd_locked(void **ptr,
-+						   unsigned long *flags)
-+{
-+	struct bfq_data *bfqd;
-+
-+	rcu_read_lock();
-+	bfqd = rcu_dereference(*(struct bfq_data **)ptr);
-+
-+	if (bfqd != NULL) {
-+		spin_lock_irqsave(bfqd->queue->queue_lock, *flags);
-+		if (*ptr == bfqd)
-+			goto out;
-+		spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
-+	}
-+
-+	bfqd = NULL;
-+out:
-+	rcu_read_unlock();
-+	return bfqd;
-+}
-+
-+static inline void bfq_put_bfqd_unlock(struct bfq_data *bfqd,
-+				       unsigned long *flags)
-+{
-+	spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
-+}
-+
-+static void bfq_check_ioprio_change(struct bfq_io_cq *bic);
-+static void bfq_put_queue(struct bfq_queue *bfqq);
-+static void bfq_dispatch_insert(struct request_queue *q, struct request *rq);
-+static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
-+				       struct bfq_io_cq *bic, gfp_t gfp_mask);
-+static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
-+				    struct bfq_group *bfqg);
-+static void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg);
-+static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq);
-+
-+#endif /* _BFQ_H */
--- 
-2.1.4
-
diff --git a/helpers/DATA/linux-lts-vivid/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch b/helpers/DATA/linux-lts-vivid/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch
deleted file mode 100644
index 0b06e092a..000000000
--- a/helpers/DATA/linux-lts-vivid/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch
+++ /dev/null
@@ -1,1220 +0,0 @@
-From 22fc9f99fad0088bd21ca943e0c5e5a87aa1ef65 Mon Sep 17 00:00:00 2001
-From: Mauro Andreolini <mauro.andreolini@unimore.it>
-Date: Fri, 5 Jun 2015 17:45:40 +0200
-Subject: [PATCH 3/3] block, bfq: add Early Queue Merge (EQM) to BFQ-v7r8 for
- 3.19.0
-
-A set of processes may happen  to  perform interleaved reads, i.e.,requests
-whose union would give rise to a  sequential read  pattern.  There are two
-typical  cases: in the first  case,   processes  read  fixed-size chunks of
-data at a fixed distance from each other, while in the second case processes
-may read variable-size chunks at  variable distances. The latter case occurs
-for  example with  QEMU, which  splits the  I/O generated  by the  guest into
-multiple chunks,  and lets these chunks  be served by a  pool of cooperating
-processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
-available  process. CFQ  uses actual  queue merging  for the  first type of
-rocesses, whereas it  uses preemption to get a sequential  read pattern out
-of the read requests  performed by the second type of  processes. In the end
-it uses  two different  mechanisms to  achieve the  same goal: boosting the
-throughput with interleaved I/O.
-
-This patch introduces  Early Queue Merge (EQM), a unified mechanism to get a
-sequential  read pattern  with both  types of  processes. The  main idea is
-checking newly arrived requests against the next request of the active queue
-both in case of actual request insert and in case of request merge. By doing
-so, both the types of processes can be handled by just merging their queues.
-EQM is  then simpler and  more compact than the  pair of mechanisms used in
-CFQ.
-
-Finally, EQM  also preserves the  typical low-latency properties of BFQ, by
-properly restoring the weight-raising state of a queue when it gets back to
-a non-merged state.
-
-Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
----
- block/bfq-iosched.c | 750 +++++++++++++++++++++++++++++++++++++---------------
- block/bfq-sched.c   |  28 --
- block/bfq.h         |  54 +++-
- 3 files changed, 580 insertions(+), 252 deletions(-)
-
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-index 773b2ee..71b51c1 100644
---- a/block/bfq-iosched.c
-+++ b/block/bfq-iosched.c
-@@ -573,6 +573,57 @@ static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
- 	return dur;
- }
- 
-+static inline unsigned
-+bfq_bfqq_cooperations(struct bfq_queue *bfqq)
-+{
-+	return bfqq->bic ? bfqq->bic->cooperations : 0;
-+}
-+
-+static inline void
-+bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	if (bic->saved_idle_window)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+	if (bic->saved_IO_bound)
-+		bfq_mark_bfqq_IO_bound(bfqq);
-+	else
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+	/* Assuming that the flag in_large_burst is already correctly set */
-+	if (bic->wr_time_left && bfqq->bfqd->low_latency &&
-+	    !bfq_bfqq_in_large_burst(bfqq) &&
-+	    bic->cooperations < bfqq->bfqd->bfq_coop_thresh) {
-+		/*
-+		 * Start a weight raising period with the duration given by
-+		 * the raising_time_left snapshot.
-+		 */
-+		if (bfq_bfqq_busy(bfqq))
-+			bfqq->bfqd->wr_busy_queues++;
-+		bfqq->wr_coeff = bfqq->bfqd->bfq_wr_coeff;
-+		bfqq->wr_cur_max_time = bic->wr_time_left;
-+		bfqq->last_wr_start_finish = jiffies;
-+		bfqq->entity.ioprio_changed = 1;
-+	}
-+	/*
-+	 * Clear wr_time_left to prevent bfq_bfqq_save_state() from
-+	 * getting confused about the queue's need of a weight-raising
-+	 * period.
-+	 */
-+	bic->wr_time_left = 0;
-+}
-+
-+/* Must be called with the queue_lock held. */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
- /* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
- static inline void bfq_reset_burst_list(struct bfq_data *bfqd,
- 					struct bfq_queue *bfqq)
-@@ -817,7 +868,7 @@ static void bfq_add_request(struct request *rq)
- 		bfq_rq_pos_tree_add(bfqd, bfqq);
- 
- 	if (!bfq_bfqq_busy(bfqq)) {
--		bool soft_rt,
-+		bool soft_rt, coop_or_in_burst,
- 		     idle_for_long_time = time_is_before_jiffies(
- 						bfqq->budget_timeout +
- 						bfqd->bfq_wr_min_idle_time);
-@@ -841,11 +892,12 @@ static void bfq_add_request(struct request *rq)
- 				bfqd->last_ins_in_burst = jiffies;
- 		}
- 
-+		coop_or_in_burst = bfq_bfqq_in_large_burst(bfqq) ||
-+			bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh;
- 		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
--			!bfq_bfqq_in_large_burst(bfqq) &&
-+			!coop_or_in_burst &&
- 			time_is_before_jiffies(bfqq->soft_rt_next_start);
--		interactive = !bfq_bfqq_in_large_burst(bfqq) &&
--			      idle_for_long_time;
-+		interactive = !coop_or_in_burst && idle_for_long_time;
- 		entity->budget = max_t(unsigned long, bfqq->max_budget,
- 				       bfq_serv_to_charge(next_rq, bfqq));
- 
-@@ -864,11 +916,20 @@ static void bfq_add_request(struct request *rq)
- 		if (!bfqd->low_latency)
- 			goto add_bfqq_busy;
- 
-+		if (bfq_bfqq_just_split(bfqq))
-+			goto set_ioprio_changed;
-+
- 		/*
--		 * If the queue is not being boosted and has been idle
--		 * for enough time, start a weight-raising period
-+		 * If the queue:
-+		 * - is not being boosted,
-+		 * - has been idle for enough time,
-+		 * - is not a sync queue or is linked to a bfq_io_cq (it is
-+		 *   shared "for its nature" or it is not shared and its
-+		 *   requests have not been redirected to a shared queue)
-+		 * start a weight-raising period.
- 		 */
--		if (old_wr_coeff == 1 && (interactive || soft_rt)) {
-+		if (old_wr_coeff == 1 && (interactive || soft_rt) &&
-+		    (!bfq_bfqq_sync(bfqq) || bfqq->bic != NULL)) {
- 			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
- 			if (interactive)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-@@ -882,7 +943,7 @@ static void bfq_add_request(struct request *rq)
- 		} else if (old_wr_coeff > 1) {
- 			if (interactive)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
--			else if (bfq_bfqq_in_large_burst(bfqq) ||
-+			else if (coop_or_in_burst ||
- 				 (bfqq->wr_cur_max_time ==
- 				  bfqd->bfq_wr_rt_max_time &&
- 				  !soft_rt)) {
-@@ -901,18 +962,18 @@ static void bfq_add_request(struct request *rq)
- 				/*
- 				 *
- 				 * The remaining weight-raising time is lower
--				 * than bfqd->bfq_wr_rt_max_time, which
--				 * means that the application is enjoying
--				 * weight raising either because deemed soft-
--				 * rt in the near past, or because deemed
--				 * interactive a long ago. In both cases,
--				 * resetting now the current remaining weight-
--				 * raising time for the application to the
--				 * weight-raising duration for soft rt
--				 * applications would not cause any latency
--				 * increase for the application (as the new
--				 * duration would be higher than the remaining
--				 * time).
-+				 * than bfqd->bfq_wr_rt_max_time, which means
-+				 * that the application is enjoying weight
-+				 * raising either because deemed soft-rt in
-+				 * the near past, or because deemed interactive
-+				 * a long ago.
-+				 * In both cases, resetting now the current
-+				 * remaining weight-raising time for the
-+				 * application to the weight-raising duration
-+				 * for soft rt applications would not cause any
-+				 * latency increase for the application (as the
-+				 * new duration would be higher than the
-+				 * remaining time).
- 				 *
- 				 * In addition, the application is now meeting
- 				 * the requirements for being deemed soft rt.
-@@ -947,6 +1008,7 @@ static void bfq_add_request(struct request *rq)
- 					bfqd->bfq_wr_rt_max_time;
- 			}
- 		}
-+set_ioprio_changed:
- 		if (old_wr_coeff != bfqq->wr_coeff)
- 			entity->ioprio_changed = 1;
- add_bfqq_busy:
-@@ -1167,90 +1229,35 @@ static void bfq_end_wr(struct bfq_data *bfqd)
- 	spin_unlock_irq(bfqd->queue->queue_lock);
- }
- 
--static int bfq_allow_merge(struct request_queue *q, struct request *rq,
--			   struct bio *bio)
-+static inline sector_t bfq_io_struct_pos(void *io_struct, bool request)
- {
--	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_io_cq *bic;
--	struct bfq_queue *bfqq;
--
--	/*
--	 * Disallow merge of a sync bio into an async request.
--	 */
--	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
--		return 0;
--
--	/*
--	 * Lookup the bfqq that this bio will be queued with. Allow
--	 * merge only if rq is queued there.
--	 * Queue lock is held here.
--	 */
--	bic = bfq_bic_lookup(bfqd, current->io_context);
--	if (bic == NULL)
--		return 0;
--
--	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
--	return bfqq == RQ_BFQQ(rq);
--}
--
--static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
--				       struct bfq_queue *bfqq)
--{
--	if (bfqq != NULL) {
--		bfq_mark_bfqq_must_alloc(bfqq);
--		bfq_mark_bfqq_budget_new(bfqq);
--		bfq_clear_bfqq_fifo_expire(bfqq);
--
--		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
--
--		bfq_log_bfqq(bfqd, bfqq,
--			     "set_in_service_queue, cur-budget = %lu",
--			     bfqq->entity.budget);
--	}
--
--	bfqd->in_service_queue = bfqq;
--}
--
--/*
-- * Get and set a new queue for service.
-- */
--static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
--						  struct bfq_queue *bfqq)
--{
--	if (!bfqq)
--		bfqq = bfq_get_next_queue(bfqd);
-+	if (request)
-+		return blk_rq_pos(io_struct);
- 	else
--		bfq_get_next_queue_forced(bfqd, bfqq);
--
--	__bfq_set_in_service_queue(bfqd, bfqq);
--	return bfqq;
-+		return ((struct bio *)io_struct)->bi_iter.bi_sector;
- }
- 
--static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
--					  struct request *rq)
-+static inline sector_t bfq_dist_from(sector_t pos1,
-+				     sector_t pos2)
- {
--	if (blk_rq_pos(rq) >= bfqd->last_position)
--		return blk_rq_pos(rq) - bfqd->last_position;
-+	if (pos1 >= pos2)
-+		return pos1 - pos2;
- 	else
--		return bfqd->last_position - blk_rq_pos(rq);
-+		return pos2 - pos1;
- }
- 
--/*
-- * Return true if bfqq has no request pending and rq is close enough to
-- * bfqd->last_position, or if rq is closer to bfqd->last_position than
-- * bfqq->next_rq
-- */
--static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+static inline int bfq_rq_close_to_sector(void *io_struct, bool request,
-+					 sector_t sector)
- {
--	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+	return bfq_dist_from(bfq_io_struct_pos(io_struct, request), sector) <=
-+	       BFQQ_SEEK_THR;
- }
- 
--static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd, sector_t sector)
- {
- 	struct rb_root *root = &bfqd->rq_pos_tree;
- 	struct rb_node *parent, *node;
- 	struct bfq_queue *__bfqq;
--	sector_t sector = bfqd->last_position;
- 
- 	if (RB_EMPTY_ROOT(root))
- 		return NULL;
-@@ -1269,7 +1276,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 	 * next_request position).
- 	 */
- 	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	if (blk_rq_pos(__bfqq->next_rq) < sector)
-@@ -1280,7 +1287,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 		return NULL;
- 
- 	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	return NULL;
-@@ -1289,14 +1296,12 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- /*
-  * bfqd - obvious
-  * cur_bfqq - passed in so that we don't decide that the current queue
-- *            is closely cooperating with itself.
-- *
-- * We are assuming that cur_bfqq has dispatched at least one request,
-- * and that bfqd->last_position reflects a position on the disk associated
-- * with the I/O issued by cur_bfqq.
-+ *            is closely cooperating with itself
-+ * sector - used as a reference point to search for a close queue
-  */
- static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
--					      struct bfq_queue *cur_bfqq)
-+					      struct bfq_queue *cur_bfqq,
-+					      sector_t sector)
- {
- 	struct bfq_queue *bfqq;
- 
-@@ -1316,7 +1321,7 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	 * working closely on the same area of the disk. In that case,
- 	 * we can group them together and don't waste time idling.
- 	 */
--	bfqq = bfqq_close(bfqd);
-+	bfqq = bfqq_close(bfqd, sector);
- 	if (bfqq == NULL || bfqq == cur_bfqq)
- 		return NULL;
- 
-@@ -1343,6 +1348,315 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	return bfqq;
- }
- 
-+static struct bfq_queue *
-+bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return NULL;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return NULL;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return NULL;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+
-+	/*
-+	 * Merging is just a redirection: the requests of the process
-+	 * owning one of the two queues are redirected to the other queue.
-+	 * The latter queue, in its turn, is set as shared if this is the
-+	 * first time that the requests of some process are redirected to
-+	 * it.
-+	 *
-+	 * We redirect bfqq to new_bfqq and not the opposite, because we
-+	 * are in the context of the process owning bfqq, hence we have
-+	 * the io_cq of this process. So we can immediately configure this
-+	 * io_cq to redirect the requests of the process to new_bfqq.
-+	 *
-+	 * NOTE, even if new_bfqq coincides with the in-service queue, the
-+	 * io_cq of new_bfqq is not available, because, if the in-service
-+	 * queue is shared, bfqd->in_service_bic may not point to the
-+	 * io_cq of the in-service queue.
-+	 * Redirecting the requests of the process owning bfqq to the
-+	 * currently in-service queue is in any case the best option, as
-+	 * we feed the in-service queue with new requests close to the
-+	 * last request served and, by doing so, hopefully increase the
-+	 * throughput.
-+	 */
-+	bfqq->new_bfqq = new_bfqq;
-+	atomic_add(process_refs, &new_bfqq->ref);
-+	return new_bfqq;
-+}
-+
-+/*
-+ * Attempt to schedule a merge of bfqq with the currently in-service queue
-+ * or with a close queue among the scheduled queues.
-+ * Return NULL if no merge was scheduled, a pointer to the shared bfq_queue
-+ * structure otherwise.
-+ *
-+ * The OOM queue is not allowed to participate to cooperation: in fact, since
-+ * the requests temporarily redirected to the OOM queue could be redirected
-+ * again to dedicated queues at any time, the state needed to correctly
-+ * handle merging with the OOM queue would be quite complex and expensive
-+ * to maintain. Besides, in such a critical condition as an out of memory,
-+ * the benefits of queue merging may be little relevant, or even negligible.
-+ */
-+static struct bfq_queue *
-+bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+		     void *io_struct, bool request)
-+{
-+	struct bfq_queue *in_service_bfqq, *new_bfqq;
-+
-+	if (bfqq->new_bfqq)
-+		return bfqq->new_bfqq;
-+
-+	if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
-+		return NULL;
-+
-+	in_service_bfqq = bfqd->in_service_queue;
-+
-+	if (in_service_bfqq == NULL || in_service_bfqq == bfqq ||
-+	    !bfqd->in_service_bic ||
-+	    unlikely(in_service_bfqq == &bfqd->oom_bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_idle(in_service_bfqq) || bfq_class_idle(bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_rt(in_service_bfqq) != bfq_class_rt(bfqq))
-+		goto check_scheduled;
-+
-+	if (in_service_bfqq->entity.parent != bfqq->entity.parent)
-+		goto check_scheduled;
-+
-+	if (bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
-+	    bfq_bfqq_sync(in_service_bfqq) && bfq_bfqq_sync(bfqq)) {
-+		new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
-+		if (new_bfqq != NULL)
-+			return new_bfqq; /* Merge with in-service queue */
-+	}
-+
-+	/*
-+	 * Check whether there is a cooperator among currently scheduled
-+	 * queues. The only thing we need is that the bio/request is not
-+	 * NULL, as we need it to establish whether a cooperator exists.
-+	 */
-+check_scheduled:
-+	new_bfqq = bfq_close_cooperator(bfqd, bfqq,
-+					bfq_io_struct_pos(io_struct, request));
-+	if (new_bfqq && likely(new_bfqq != &bfqd->oom_bfqq))
-+		return bfq_setup_merge(bfqq, new_bfqq);
-+
-+	return NULL;
-+}
-+
-+static inline void
-+bfq_bfqq_save_state(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic == NULL, the queue is already shared or its requests
-+	 * have already been redirected to a shared queue; both idle window
-+	 * and weight raising state have already been saved. Do nothing.
-+	 */
-+	if (bfqq->bic == NULL)
-+		return;
-+	if (bfqq->bic->wr_time_left)
-+		/*
-+		 * This is the queue of a just-started process, and would
-+		 * deserve weight raising: we set wr_time_left to the full
-+		 * weight-raising duration to trigger weight-raising when
-+		 * and if the queue is split and the first request of the
-+		 * queue is enqueued.
-+		 */
-+		bfqq->bic->wr_time_left = bfq_wr_duration(bfqq->bfqd);
-+	else if (bfqq->wr_coeff > 1) {
-+		unsigned long wr_duration =
-+			jiffies - bfqq->last_wr_start_finish;
-+		/*
-+		 * It may happen that a queue's weight raising period lasts
-+		 * longer than its wr_cur_max_time, as weight raising is
-+		 * handled only when a request is enqueued or dispatched (it
-+		 * does not use any timer). If the weight raising period is
-+		 * about to end, don't save it.
-+		 */
-+		if (bfqq->wr_cur_max_time <= wr_duration)
-+			bfqq->bic->wr_time_left = 0;
-+		else
-+			bfqq->bic->wr_time_left =
-+				bfqq->wr_cur_max_time - wr_duration;
-+		/*
-+		 * The bfq_queue is becoming shared or the requests of the
-+		 * process owning the queue are being redirected to a shared
-+		 * queue. Stop the weight raising period of the queue, as in
-+		 * both cases it should not be owned by an interactive or
-+		 * soft real-time application.
-+		 */
-+		bfq_bfqq_end_wr(bfqq);
-+	} else
-+		bfqq->bic->wr_time_left = 0;
-+	bfqq->bic->saved_idle_window = bfq_bfqq_idle_window(bfqq);
-+	bfqq->bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq);
-+	bfqq->bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq);
-+	bfqq->bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node);
-+	bfqq->bic->cooperations++;
-+	bfqq->bic->failed_cooperations = 0;
-+}
-+
-+static inline void
-+bfq_get_bic_reference(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic has a non-NULL value, the bic to which it belongs
-+	 * is about to begin using a shared bfq_queue.
-+	 */
-+	if (bfqq->bic)
-+		atomic_long_inc(&bfqq->bic->icq.ioc->refcount);
-+}
-+
-+static void
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)new_bfqq->pid);
-+	/* Save weight raising and idle window of the merged queues */
-+	bfq_bfqq_save_state(bfqq);
-+	bfq_bfqq_save_state(new_bfqq);
-+	if (bfq_bfqq_IO_bound(bfqq))
-+		bfq_mark_bfqq_IO_bound(new_bfqq);
-+	bfq_clear_bfqq_IO_bound(bfqq);
-+	/*
-+	 * Grab a reference to the bic, to prevent it from being destroyed
-+	 * before being possibly touched by a bfq_split_bfqq().
-+	 */
-+	bfq_get_bic_reference(bfqq);
-+	bfq_get_bic_reference(new_bfqq);
-+	/*
-+	 * Merge queues (that is, let bic redirect its requests to new_bfqq)
-+	 */
-+	bic_set_bfqq(bic, new_bfqq, 1);
-+	bfq_mark_bfqq_coop(new_bfqq);
-+	/*
-+	 * new_bfqq now belongs to at least two bics (it is a shared queue):
-+	 * set new_bfqq->bic to NULL. bfqq either:
-+	 * - does not belong to any bic any more, and hence bfqq->bic must
-+	 *   be set to NULL, or
-+	 * - is a queue whose owning bics have already been redirected to a
-+	 *   different queue, hence the queue is destined to not belong to
-+	 *   any bic soon and bfqq->bic is already NULL (therefore the next
-+	 *   assignment causes no harm).
-+	 */
-+	new_bfqq->bic = NULL;
-+	bfqq->bic = NULL;
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_bfqq_increase_failed_cooperations(struct bfq_queue *bfqq)
-+{
-+	struct bfq_io_cq *bic = bfqq->bic;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	if (bic && bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh) {
-+		bic->failed_cooperations++;
-+		if (bic->failed_cooperations >= bfqd->bfq_failed_cooperations)
-+			bic->cooperations = 0;
-+	}
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	/*
-+	 * We take advantage of this function to perform an early merge
-+	 * of the queues of possible cooperating processes.
-+	 */
-+	if (bfqq != NULL) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, bio, false);
-+		if (new_bfqq != NULL) {
-+			bfq_merge_bfqqs(bfqd, bic, bfqq, new_bfqq);
-+			/*
-+			 * If we get here, the bio will be queued in the
-+			 * shared queue, i.e., new_bfqq, so use new_bfqq
-+			 * to decide whether bio and rq can be merged.
-+			 */
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfq_get_next_queue(bfqd);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
- /*
-  * If enough samples have been computed, return the current max budget
-  * stored in bfqd, which is dynamically updated according to the
-@@ -1488,61 +1802,6 @@ static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
- 	return rq;
- }
- 
--/* Must be called with the queue_lock held. */
--static int bfqq_process_refs(struct bfq_queue *bfqq)
--{
--	int process_refs, io_refs;
--
--	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
--	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
--	BUG_ON(process_refs < 0);
--	return process_refs;
--}
--
--static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
--{
--	int process_refs, new_process_refs;
--	struct bfq_queue *__bfqq;
--
--	/*
--	 * If there are no process references on the new_bfqq, then it is
--	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
--	 * may have dropped their last reference (not just their last process
--	 * reference).
--	 */
--	if (!bfqq_process_refs(new_bfqq))
--		return;
--
--	/* Avoid a circular list and skip interim queue merges. */
--	while ((__bfqq = new_bfqq->new_bfqq)) {
--		if (__bfqq == bfqq)
--			return;
--		new_bfqq = __bfqq;
--	}
--
--	process_refs = bfqq_process_refs(bfqq);
--	new_process_refs = bfqq_process_refs(new_bfqq);
--	/*
--	 * If the process for the bfqq has gone away, there is no
--	 * sense in merging the queues.
--	 */
--	if (process_refs == 0 || new_process_refs == 0)
--		return;
--
--	/*
--	 * Merge in the direction of the lesser amount of work.
--	 */
--	if (new_process_refs >= process_refs) {
--		bfqq->new_bfqq = new_bfqq;
--		atomic_add(process_refs, &new_bfqq->ref);
--	} else {
--		new_bfqq->new_bfqq = bfqq;
--		atomic_add(new_process_refs, &bfqq->ref);
--	}
--	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
--		new_bfqq->pid);
--}
--
- static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
- {
- 	struct bfq_entity *entity = &bfqq->entity;
-@@ -2269,7 +2528,7 @@ static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-  */
- static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- {
--	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct bfq_queue *bfqq;
- 	struct request *next_rq;
- 	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
- 
-@@ -2279,17 +2538,6 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 
- 	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
- 
--	/*
--         * If another queue has a request waiting within our mean seek
--         * distance, let it run. The expire code will check for close
--         * cooperators and put the close queue at the front of the
--         * service tree. If possible, merge the expiring queue with the
--         * new bfqq.
--         */
--        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
--        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
--                bfq_setup_merge(bfqq, new_bfqq);
--
- 	if (bfq_may_expire_for_budg_timeout(bfqq) &&
- 	    !timer_pending(&bfqd->idle_slice_timer) &&
- 	    !bfq_bfqq_must_idle(bfqq))
-@@ -2328,10 +2576,7 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 				bfq_clear_bfqq_wait_request(bfqq);
- 				del_timer(&bfqd->idle_slice_timer);
- 			}
--			if (new_bfqq == NULL)
--				goto keep_queue;
--			else
--				goto expire;
-+			goto keep_queue;
- 		}
- 	}
- 
-@@ -2340,40 +2585,30 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 	 * for a new request, or has requests waiting for a completion and
- 	 * may idle after their completion, then keep it anyway.
- 	 */
--	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
--	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+	if (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq))) {
- 		bfqq = NULL;
- 		goto keep_queue;
--	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
--		/*
--		 * Expiring the queue because there is a close cooperator,
--		 * cancel timer.
--		 */
--		bfq_clear_bfqq_wait_request(bfqq);
--		del_timer(&bfqd->idle_slice_timer);
- 	}
- 
- 	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
- expire:
- 	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
- new_queue:
--	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfqq = bfq_set_in_service_queue(bfqd);
- 	bfq_log(bfqd, "select_queue: new queue %d returned",
- 		bfqq != NULL ? bfqq->pid : 0);
- keep_queue:
- 	return bfqq;
- }
- 
--static void bfq_update_wr_data(struct bfq_data *bfqd,
--			       struct bfq_queue *bfqq)
-+static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
- {
--	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
--		struct bfq_entity *entity = &bfqq->entity;
--
-+	struct bfq_entity *entity = &bfqq->entity;
-+	if (bfqq->wr_coeff > 1) { /* queue is being weight-raised */
- 		bfq_log_bfqq(bfqd, bfqq,
- 			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
--			jiffies_to_msecs(jiffies -
--				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
- 			jiffies_to_msecs(bfqq->wr_cur_max_time),
- 			bfqq->wr_coeff,
- 			bfqq->entity.weight, bfqq->entity.orig_weight);
-@@ -2382,12 +2617,16 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 		       entity->orig_weight * bfqq->wr_coeff);
- 		if (entity->ioprio_changed)
- 			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+
- 		/*
- 		 * If the queue was activated in a burst, or
- 		 * too much time has elapsed from the beginning
--		 * of this weight-raising, then end weight raising.
-+		 * of this weight-raising period, or the queue has
-+		 * exceeded the acceptable number of cooperations,
-+		 * then end weight raising.
- 		 */
- 		if (bfq_bfqq_in_large_burst(bfqq) ||
-+		    bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh ||
- 		    time_is_before_jiffies(bfqq->last_wr_start_finish +
- 					   bfqq->wr_cur_max_time)) {
- 			bfqq->last_wr_start_finish = jiffies;
-@@ -2396,11 +2635,13 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 				     bfqq->last_wr_start_finish,
- 				     jiffies_to_msecs(bfqq->wr_cur_max_time));
- 			bfq_bfqq_end_wr(bfqq);
--			__bfq_entity_update_weight_prio(
--				bfq_entity_service_tree(entity),
--				entity);
- 		}
- 	}
-+	/* Update weight both if it must be raised and if it must be lowered */
-+	if ((entity->weight > entity->orig_weight) != (bfqq->wr_coeff > 1))
-+		__bfq_entity_update_weight_prio(
-+			bfq_entity_service_tree(entity),
-+			entity);
- }
- 
- /*
-@@ -2647,6 +2888,25 @@ static inline void bfq_init_icq(struct io_cq *icq)
- 	struct bfq_io_cq *bic = icq_to_bic(icq);
- 
- 	bic->ttime.last_end_request = jiffies;
-+	/*
-+	 * A newly created bic indicates that the process has just
-+	 * started doing I/O, and is probably mapping into memory its
-+	 * executable and libraries: it definitely needs weight raising.
-+	 * There is however the possibility that the process performs,
-+	 * for a while, I/O close to some other process. EQM intercepts
-+	 * this behavior and may merge the queue corresponding to the
-+	 * process  with some other queue, BEFORE the weight of the queue
-+	 * is raised. Merged queues are not weight-raised (they are assumed
-+	 * to belong to processes that benefit only from high throughput).
-+	 * If the merge is basically the consequence of an accident, then
-+	 * the queue will be split soon and will get back its old weight.
-+	 * It is then important to write down somewhere that this queue
-+	 * does need weight raising, even if it did not make it to get its
-+	 * weight raised before being merged. To this purpose, we overload
-+	 * the field raising_time_left and assign 1 to it, to mark the queue
-+	 * as needing weight raising.
-+	 */
-+	bic->wr_time_left = 1;
- }
- 
- static void bfq_exit_icq(struct io_cq *icq)
-@@ -2660,6 +2920,13 @@ static void bfq_exit_icq(struct io_cq *icq)
- 	}
- 
- 	if (bic->bfqq[BLK_RW_SYNC]) {
-+		/*
-+		 * If the bic is using a shared queue, put the reference
-+		 * taken on the io_context when the bic started using a
-+		 * shared bfq_queue.
-+		 */
-+		if (bfq_bfqq_coop(bic->bfqq[BLK_RW_SYNC]))
-+			put_io_context(icq->ioc);
- 		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
- 		bic->bfqq[BLK_RW_SYNC] = NULL;
- 	}
-@@ -2952,6 +3219,10 @@ static void bfq_update_idle_window(struct bfq_data *bfqd,
- 	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
- 		return;
- 
-+	/* Idle window just restored, statistics are meaningless. */
-+	if (bfq_bfqq_just_split(bfqq))
-+		return;
-+
- 	enable_idle = bfq_bfqq_idle_window(bfqq);
- 
- 	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-@@ -2999,6 +3270,7 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- 	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
- 	    !BFQQ_SEEKY(bfqq))
- 		bfq_update_idle_window(bfqd, bfqq, bic);
-+	bfq_clear_bfqq_just_split(bfqq);
- 
- 	bfq_log_bfqq(bfqd, bfqq,
- 		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-@@ -3059,12 +3331,47 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- static void bfq_insert_request(struct request_queue *q, struct request *rq)
- {
- 	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq), *new_bfqq;
- 
- 	assert_spin_locked(bfqd->queue->queue_lock);
- 
-+	/*
-+	 * An unplug may trigger a requeue of a request from the device
-+	 * driver: make sure we are in process context while trying to
-+	 * merge two bfq_queues.
-+	 */
-+	if (!in_interrupt()) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
-+		if (new_bfqq != NULL) {
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) != bfqq)
-+				new_bfqq = bic_to_bfqq(RQ_BIC(rq), 1);
-+			/*
-+			 * Release the request's reference to the old bfqq
-+			 * and make sure one is taken to the shared queue.
-+			 */
-+			new_bfqq->allocated[rq_data_dir(rq)]++;
-+			bfqq->allocated[rq_data_dir(rq)]--;
-+			atomic_inc(&new_bfqq->ref);
-+			bfq_put_queue(bfqq);
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) == bfqq)
-+				bfq_merge_bfqqs(bfqd, RQ_BIC(rq),
-+						bfqq, new_bfqq);
-+			rq->elv.priv[1] = new_bfqq;
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
- 	bfq_add_request(rq);
- 
-+	/*
-+	 * Here a newly-created bfq_queue has already started a weight-raising
-+	 * period: clear raising_time_left to prevent bfq_bfqq_save_state()
-+	 * from assigning it a full weight-raising period. See the detailed
-+	 * comments about this field in bfq_init_icq().
-+	 */
-+	if (bfqq->bic != NULL)
-+		bfqq->bic->wr_time_left = 0;
- 	rq->fifo_time = jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
- 	list_add_tail(&rq->queuelist, &bfqq->fifo);
- 
-@@ -3226,18 +3533,6 @@ static void bfq_put_request(struct request *rq)
- 	}
- }
- 
--static struct bfq_queue *
--bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
--		struct bfq_queue *bfqq)
--{
--	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
--		(long unsigned)bfqq->new_bfqq->pid);
--	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
--	bfq_mark_bfqq_coop(bfqq->new_bfqq);
--	bfq_put_queue(bfqq);
--	return bic_to_bfqq(bic, 1);
--}
--
- /*
-  * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-  * was the last process referring to said bfqq.
-@@ -3246,6 +3541,9 @@ static struct bfq_queue *
- bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
- {
- 	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+
-+	put_io_context(bic->icq.ioc);
-+
- 	if (bfqq_process_refs(bfqq) == 1) {
- 		bfqq->pid = current->pid;
- 		bfq_clear_bfqq_coop(bfqq);
-@@ -3274,6 +3572,7 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
- 	struct bfq_queue *bfqq;
- 	struct bfq_group *bfqg;
- 	unsigned long flags;
-+	bool split = false;
- 
- 	might_sleep_if(gfp_mask & __GFP_WAIT);
- 
-@@ -3291,25 +3590,26 @@ new_queue:
- 	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
- 		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
- 		bic_set_bfqq(bic, bfqq, is_sync);
-+		if (split && is_sync) {
-+			if ((bic->was_in_burst_list && bfqd->large_burst) ||
-+			    bic->saved_in_large_burst)
-+				bfq_mark_bfqq_in_large_burst(bfqq);
-+			else {
-+			    bfq_clear_bfqq_in_large_burst(bfqq);
-+			    if (bic->was_in_burst_list)
-+			       hlist_add_head(&bfqq->burst_list_node,
-+				              &bfqd->burst_list);
-+			}
-+		}
- 	} else {
--		/*
--		 * If the queue was seeky for too long, break it apart.
--		 */
-+		/* If the queue was seeky for too long, break it apart. */
- 		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
- 			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
- 			bfqq = bfq_split_bfqq(bic, bfqq);
-+			split = true;
- 			if (!bfqq)
- 				goto new_queue;
- 		}
--
--		/*
--		 * Check to see if this queue is scheduled to merge with
--		 * another closely cooperating queue. The merging of queues
--		 * happens here as it must be done in process context.
--		 * The reference on new_bfqq was taken in merge_bfqqs.
--		 */
--		if (bfqq->new_bfqq != NULL)
--			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
- 	}
- 
- 	bfqq->allocated[rw]++;
-@@ -3320,6 +3620,26 @@ new_queue:
- 	rq->elv.priv[0] = bic;
- 	rq->elv.priv[1] = bfqq;
- 
-+	/*
-+	 * If a bfq_queue has only one process reference, it is owned
-+	 * by only one bfq_io_cq: we can set the bic field of the
-+	 * bfq_queue to the address of that structure. Also, if the
-+	 * queue has just been split, mark a flag so that the
-+	 * information is available to the other scheduler hooks.
-+	 */
-+	if (likely(bfqq != &bfqd->oom_bfqq) && bfqq_process_refs(bfqq) == 1) {
-+		bfqq->bic = bic;
-+		if (split) {
-+			bfq_mark_bfqq_just_split(bfqq);
-+			/*
-+			 * If the queue has just been split from a shared
-+			 * queue, restore the idle window and the possible
-+			 * weight raising period.
-+			 */
-+			bfq_bfqq_resume_state(bfqq, bic);
-+		}
-+	}
-+
- 	spin_unlock_irqrestore(q->queue_lock, flags);
- 
- 	return 0;
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-index c343099..d0890c6 100644
---- a/block/bfq-sched.c
-+++ b/block/bfq-sched.c
-@@ -1085,34 +1085,6 @@ static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
- 	return bfqq;
- }
- 
--/*
-- * Forced extraction of the given queue.
-- */
--static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
--				      struct bfq_queue *bfqq)
--{
--	struct bfq_entity *entity;
--	struct bfq_sched_data *sd;
--
--	BUG_ON(bfqd->in_service_queue != NULL);
--
--	entity = &bfqq->entity;
--	/*
--	 * Bubble up extraction/update from the leaf to the root.
--	*/
--	for_each_entity(entity) {
--		sd = entity->sched_data;
--		bfq_update_budget(entity);
--		bfq_update_vtime(bfq_entity_service_tree(entity));
--		bfq_active_extract(bfq_entity_service_tree(entity), entity);
--		sd->in_service_entity = entity;
--		sd->next_in_service = NULL;
--		entity->service = 0;
--	}
--
--	return;
--}
--
- static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
- {
- 	if (bfqd->in_service_bic != NULL) {
-diff --git a/block/bfq.h b/block/bfq.h
-index dd1a5b1..3970ec8 100644
---- a/block/bfq.h
-+++ b/block/bfq.h
-@@ -218,18 +218,21 @@ struct bfq_group;
-  *                      idle @bfq_queue with no outstanding requests, then
-  *                      the task associated with the queue it is deemed as
-  *                      soft real-time (see the comments to the function
-- *                      bfq_bfqq_softrt_next_start()).
-+ *                      bfq_bfqq_softrt_next_start())
-  * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-  *                      idle to backlogged
-  * @service_from_backlogged: cumulative service received from the @bfq_queue
-  *                           since the last transition from idle to
-  *                           backlogged
-+ * @bic: pointer to the bfq_io_cq owning the bfq_queue, set to %NULL if the
-+ *	 queue is shared
-  *
-- * A bfq_queue is a leaf request queue; it can be associated with an io_context
-- * or more, if it is async or shared between cooperating processes. @cgroup
-- * holds a reference to the cgroup, to be sure that it does not disappear while
-- * a bfqq still references it (mostly to avoid races between request issuing and
-- * task migration followed by cgroup destruction).
-+ * A bfq_queue is a leaf request queue; it can be associated with an
-+ * io_context or more, if it  is  async or shared  between  cooperating
-+ * processes. @cgroup holds a reference to the cgroup, to be sure that it
-+ * does not disappear while a bfqq still references it (mostly to avoid
-+ * races between request issuing and task migration followed by cgroup
-+ * destruction).
-  * All the fields are protected by the queue lock of the containing bfqd.
-  */
- struct bfq_queue {
-@@ -269,6 +272,7 @@ struct bfq_queue {
- 	unsigned int requests_within_timer;
- 
- 	pid_t pid;
-+	struct bfq_io_cq *bic;
- 
- 	/* weight-raising fields */
- 	unsigned long wr_cur_max_time;
-@@ -298,12 +302,42 @@ struct bfq_ttime {
-  * @icq: associated io_cq structure
-  * @bfqq: array of two process queues, the sync and the async
-  * @ttime: associated @bfq_ttime struct
-+ * @wr_time_left: snapshot of the time left before weight raising ends
-+ *                for the sync queue associated to this process; this
-+ *		  snapshot is taken to remember this value while the weight
-+ *		  raising is suspended because the queue is merged with a
-+ *		  shared queue, and is used to set @raising_cur_max_time
-+ *		  when the queue is split from the shared queue and its
-+ *		  weight is raised again
-+ * @saved_idle_window: same purpose as the previous field for the idle
-+ *                     window
-+ * @saved_IO_bound: same purpose as the previous two fields for the I/O
-+ *                  bound classification of a queue
-+ * @saved_in_large_burst: same purpose as the previous fields for the
-+ *                        value of the field keeping the queue's belonging
-+ *                        to a large burst
-+ * @was_in_burst_list: true if the queue belonged to a burst list
-+ *                     before its merge with another cooperating queue
-+ * @cooperations: counter of consecutive successful queue merges underwent
-+ *                by any of the process' @bfq_queues
-+ * @failed_cooperations: counter of consecutive failed queue merges of any
-+ *                       of the process' @bfq_queues
-  */
- struct bfq_io_cq {
- 	struct io_cq icq; /* must be the first member */
- 	struct bfq_queue *bfqq[2];
- 	struct bfq_ttime ttime;
- 	int ioprio;
-+
-+	unsigned int wr_time_left;
-+	bool saved_idle_window;
-+	bool saved_IO_bound;
-+
-+	bool saved_in_large_burst;
-+	bool was_in_burst_list;
-+
-+	unsigned int cooperations;
-+	unsigned int failed_cooperations;
- };
- 
- enum bfq_device_speed {
-@@ -536,7 +570,7 @@ enum bfqq_state_flags {
- 	BFQ_BFQQ_FLAG_idle_window,	/* slice idling enabled */
- 	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
- 	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
--	BFQ_BFQQ_FLAG_IO_bound,         /*
-+	BFQ_BFQQ_FLAG_IO_bound,		/*
- 					 * bfqq has timed-out at least once
- 					 * having consumed at most 2/10 of
- 					 * its budget
-@@ -549,12 +583,13 @@ enum bfqq_state_flags {
- 					 * bfqq has proved to be slow and
- 					 * seeky until budget timeout
- 					 */
--	BFQ_BFQQ_FLAG_softrt_update,    /*
-+	BFQ_BFQQ_FLAG_softrt_update,	/*
- 					 * may need softrt-next-start
- 					 * update
- 					 */
- 	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
--	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be split */
-+	BFQ_BFQQ_FLAG_just_split,	/* queue has just been split */
- };
- 
- #define BFQ_BFQQ_FNS(name)						\
-@@ -583,6 +618,7 @@ BFQ_BFQQ_FNS(in_large_burst);
- BFQ_BFQQ_FNS(constantly_seeky);
- BFQ_BFQQ_FNS(coop);
- BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(just_split);
- BFQ_BFQQ_FNS(softrt_update);
- #undef BFQ_BFQQ_FNS
- 
--- 
-2.1.4
-
diff --git a/helpers/DATA/linux-lts-vivid/deblob-3.19 b/helpers/DATA/linux-lts-vivid/deblob-3.19
deleted file mode 100644
index 7b7f30846..000000000
--- a/helpers/DATA/linux-lts-vivid/deblob-3.19
+++ /dev/null
@@ -1,3007 +0,0 @@
-#! /bin/sh
-
-#    Copyright (C) 2008-2015 Alexandre Oliva <lxoliva@fsfla.org>
-#    Copyright (C) 2008 Jeff Moe
-#    Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
-#
-#    This program is part of GNU Linux-libre, a GNU project that
-#    publishes scripts to clean up Linux so as to make it suitable for
-#    use in the GNU Project and in Free System Distributions.
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-
-# deblob - remove non-free blobs from the vanilla linux kernel
-
-# http://www.fsfla.org/svn/fsfla/software/linux-libre
-
-
-# This script, suited for the kernel version named below, in kver,
-# attempts to remove only non-Free Software bits, without removing
-# Free Software that happens to be in the same file.
-
-# Drivers that currently require non-Free firmware are retained, but
-# firmware included in GPLed sources is replaced with /*(DEBLOBBED)*/
-# if the deblob-check script, that knows how to do this, is present.
-# -lxoliva
-
-
-# See also:
-# http://wiki.debian.org/KernelFirmwareLicensing
-# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
-# http://wiki.gnewsense.org/Builder gen-kernel
-
-# Thanks to Brian Brazil @ gnewsense
-
-
-# For each kver release, start extra with an empty string, then count
-# from 1 if changes are needed that require rebuilding the tarball.
-kver=3.19 extra=
-
-case $1 in
---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
-if [ ! -f $check ] ; then
-  if $forced; then
-    die deblob-check script missing, will remove entire files
-  else
-    die deblob-check script missing
-  fi
-  have_check=false
-else
-  have_check=:
-  [ -x $check ] || check="/bin/sh $check"
-fi
-
-filetest () {
-  if [ ! -f $1 ]; then
-    die $1 does not exist, something is wrong && return 1
-  fi
-}
-
-announce () {
-  echo
-  echo "$@"
-}
-
-clean_file () {
-  #$1 = filename
-  filetest $1 || return
-  rm $1
-  echo $1: removed
-}
-
-check_changed () {
-  #$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
-  filetest $1 || return
-  if $have_check; then
-    name=$1
-    set fnord "$@" -d
-    shift 2
-    if $check "$@" -i linux-$kver $name > $name.deblob; then
-      if [ ! -s $name.deblob ]; then
-	die got an empty file after removing blobs from $name
-      fi
-    else
-      die failed removing blobs from $name
-    fi
-    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 && 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
-  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
-  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
-      filetest $1 || return
-      if sed -n "/^\(menu\)\?config $2$/p" $1 | grep . > /dev/null; then
-	:
-      else
-	die $1 does not contain matches for $2
-      fi      
-      return
-    fi
-    ;;
-  esac
-  filetest $1 || return
-  sed "/^config \\($2\\)\$/{p;i\
-	depends on NONFREE
-d;}" $1 > $1.deblob
-  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
-  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
-  filetest $2 || return
-  sed -e "$1" "$2" > "$2".deblob || {
-    die $2: failed: ${3-applied sed script $1} && return 1; }
-  check_changed $2 && echo $2: ${3-applied sed script $1}
-}
-
-reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,\(^\|[^>.0-9a-zA-Z_$]\)request\(_ihex\)\?_firmware\(_nowait\|_direct\)\?\($\|[^-.0-9a-zA-Z_$),; ]\),\1reject_firmware\3\4,g
-' "$1" 'disabled non-Free firmware-loading machinery'
-}
-
-maybe_reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,\(^\|[^>.0-9a-zA-Z_$]\)request_\(ihex_\)\?firmware\(_nowait\|_direct\)\?\($\|[^-.0-9a-zA-Z_$),; ]\),\1maybe_reject_\2firmware\3\4,g
-' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
-}
-
-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
-  undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
-    "disabled non-Free firmware" "$@"
-}
-
-# First, check that files that contain firmwares and their
-# corresponding sources are present.
-
-for f in \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/com.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpc.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5 \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5 \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5 \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5 \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc \
-  drivers/net/wan/wanxlfw.inc_shipped \
-    drivers/net/wan/wanxlfw.S \
-  drivers/net/wireless/atmel.c \
-    drivers/net/wireless/atmel.c \
-  drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic79xx.seq \
-  drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic7xxx.seq \
-  drivers/scsi/53c700_d.h_shipped \
-    drivers/scsi/53c700.scr \
-  drivers/scsi/sym53c8xx_2/sym_fw1.h \
-    drivers/scsi/sym53c8xx_2/sym_fw1.h \
-  drivers/scsi/sym53c8xx_2/sym_fw2.h \
-    drivers/scsi/sym53c8xx_2/sym_fw2.h \
-  firmware/dsp56k/bootstrap.bin.ihex \
-    firmware/dsp56k/bootstrap.asm \
-  firmware/keyspan_pda/keyspan_pda.HEX \
-    firmware/keyspan_pda/keyspan_pda.S \
-  firmware/keyspan_pda/xircom_pgs.HEX \
-    firmware/keyspan_pda/xircom_pgs.S \
-; do
-  filetest $f
-done
-
-# Identify the tarball.
-grep -q 'EXTRAVERSION.*-gnu' Makefile ||
-clean_sed "/^EXTRAVERSION *=/ { s,=$,& ,; s,$,&-gnu$extra,; }
-" Makefile 'added -gnu to EXTRAVERSION'
-
-grep -q Linux-libre README ||
-clean_sed '
-1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>,
-2,5 s,Linux version [0-9.]*,GNU Linux-libre,
-1,20 s,\(operating system \)\?Unix,Unix kernel,
-/WHAT IS LINUX/i\
-WHAT IS GNU Linux-libre?\
-\
-  GNU Linux-libre is a Free version of the kernel Linux (see below),\
-  suitable for use with the GNU Operating System in 100% Free\
-  GNU/Linux-libre System Distributions.\
-  http://www.gnu.org/distros/\
-\
-  It removes non-Free components from Linux, that are disguised as\
-  source code or distributed in separate files.  It also disables\
-  run-time requests for non-Free components, shipped separately or as\
-  part of Linux, and documentation pointing to them, so as to avoid\
-  (Free-)baiting users into the trap of non-Free Software.\
-  http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\
-\
-  Linux-libre started within the gNewSense GNU/Linux distribution.\
-  It was later adopted by Jeff Moe, who coined its name, and in 2008\
-  it became a project maintained by FSF Latin America.  In 2012, it\
-  became part of the GNU Project.\
-\
-  The GNU Linux-libre project takes a minimal-changes approach to\
-  cleaning up Linux, making no effort to substitute components that\
-  need to be removed with functionally equivalent Free ones.\
-  Nevertheless, we encourage and support efforts towards doing so.\
-  http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\
-\
-  Our mascot is Freedo, a light-blue penguin that has just come out\
-  of the shower.  Although we like penguins, GNU is a much greater\
-  contribution to the entire system, so its mascot deserves more\
-  promotion.  See our web page for their images.\
-  http://linux-libre.fsfla.org/\
-
-' README 'added blurb about GNU Linux-libre'
-
-# Add reject_firmware and maybe_reject_firmware
-grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_FIRMWARE_H\
-#define _LINUX_LIBRE_FIRMWARE_H\
-\
-#include <linux/device.h>\
-\
-#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\
-\
-static inline int\
-is_nonfree_firmware(const char *name)\
-{\
-  return strstr(name, NONFREE_FIRMWARE) != 0;\
-}\
-\
-static inline int\
-report_missing_free_firmware(const char *name, const char *what)\
-{\
-	printk(KERN_ERR "%s: Missing Free %s (non-Free firmware loading is disabled)\\n", name,\
-	       what ? what : "firmware");\
-	return -EINVAL;\
-}\
-static inline int\
-reject_firmware(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware(const struct firmware **fw,\
-		      const char *name, struct device *device)\
-{\
-	if (is_nonfree_firmware(name))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_firmware(fw, name, device);\
-}\
-static inline int\
-reject_firmware_direct(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_direct(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline void\
-discard_rejected_firmware(const struct firmware *fw, void *context)\
-{\
-	release_firmware(fw);\
-}\
-static inline int\
-reject_firmware_nowait(struct module *module, int uevent,\
-		       const char *name, struct device *device,\
-		       gfp_t gfp, void *context,\
-		       void (*cont)(const struct firmware *fw,\
-				    void *context))\
-{\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\
-					 device, gfp, NULL,\
-					 discard_rejected_firmware);\
-	if (retval)\
-		return retval;\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware_nowait(struct module *module, int uevent,\
-			     const char *name, struct device *device,\
-			     gfp_t gfp, void *context,\
-			     void (*cont)(const struct firmware *fw,\
-					  void *context))\
-{\
-	if (is_nonfree_firmware(name))\
-		return reject_firmware_nowait(module, uevent, name,\
-					      device, gfp, context, cont);\
-	else\
-		return request_firmware_nowait(module, uevent, name,\
-					       device, gfp, context, cont);\
-}\
-\
-#endif /* _LINUX_LIBRE_FIRMWARE_H */\
-' include/linux/firmware.h 'added non-Free firmware notification support'
-
-grep -q _LINUX_LIBRE_IHEX_FIRMWARE_H include/linux/ihex.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_IHEX_H\
-#define _LINUX_LIBRE_IHEX_H\
-\
-static inline int\
-maybe_reject_ihex_firmware(const struct firmware **fw,\
-			   const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_ihex_firmware(fw, name, device);\
-}\
-\
-#endif /* _LINUX_LIBRE_IHEX_H */\
-' include/linux/ihex.h 'added non-Free ihex firmware notification support'
-
-clean_sed '
-s,\(timeout = \)\(firmware_loading_timeout()\),\1is_nonfree_firmware(name) ? 1 : \2,
-' drivers/base/firmware_class.c 'shorten non-Free firmware fail-to-load timeout'
-
-
-########
-# Arch #
-########
-
-# x86
-
-announce MICROCODE_AMD - "AMD microcode patch loading support"
-reject_firmware arch/x86/kernel/cpu/microcode/amd.c
-clean_blob arch/x86/kernel/cpu/microcode/amd.c
-clean_kconfig arch/x86/Kconfig MICROCODE_AMD
-clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_AMD_EARLY - "Early load AMD microcode"
-clean_blob arch/x86/kernel/cpu/microcode/amd_early.c
-clean_kconfig arch/x86/Kconfig MICROCODE_AMD_EARLY
-clean_mk CONFIG_MICROCODE_AMD_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_INTEL - "Intel microcode patch loading support"
-reject_firmware arch/x86/kernel/cpu/microcode/intel.c
-clean_blob arch/x86/kernel/cpu/microcode/intel.c
-clean_kconfig arch/x86/Kconfig MICROCODE_INTEL
-clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_INTEL_EARLY - "Early load Intel microcode"
-clean_blob arch/x86/kernel/cpu/microcode/intel_early.c
-clean_kconfig arch/x86/Kconfig MICROCODE_INTEL_EARLY
-clean_mk CONFIG_MICROCODE_INTEL_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
-announce MICROCODE_EARLY - "Early load microcode"
-clean_blob Documentation/x86/early-microcode.txt
-clean_kconfig arch/x86/Kconfig MICROCODE_EARLY
-clean_mk CONFIG_MICROCODE_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
-# arm
-
-announce IXP4XX_NPE - "IXP4xx Network Processor Engine support"
-reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob Documentation/arm/IXP4xx
-clean_kconfig arch/arm/mach-ixp4xx/Kconfig IXP4XX_NPE
-clean_mk CONFIG_IXP4XX_NPE arch/arm/mach-ixp4xx/Makefile
-
-announce ARCH_NETX - "Hilscher NetX based"
-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_blob drivers/net/ethernet/netx-eth.c
-clean_kconfig arch/arm/Kconfig ARCH_NETX
-clean_mk CONFIG_ARCH_NETX arch/arm/Makefile
-
-# mips
-
-# I couldn't figure out where the firmware name actually comes from.
-# If it's from some user-set property, we could reenable it.  -lxo
-announce XRX200_PHY_FW - "XRX200 PHY firmware loader"
-reject_firmware arch/mips/lantiq/xway/xrx200_phy_fw.c
-clean_kconfig arch/mips/lantiq/Kconfig XRX200_PHY_FW
-clean_mk CONFIG_XRX200_PHY_FW arch/mips/lantiq/xway/Makefile
-
-#######
-# ATM #
-#######
-
-announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server"
-reject_firmware drivers/atm/ambassador.c
-clean_blob drivers/atm/ambassador.c
-clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw
-clean_kconfig drivers/atm/Kconfig ATM_AMBASSADOR
-clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile
-
-announce ATM_FORE200E - "FORE Systems 200E-series"
-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 ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver"
-reject_firmware drivers/atm/solos-pci.c
-clean_blob drivers/atm/solos-pci.c
-clean_kconfig drivers/atm/Kconfig ATM_SOLOS
-clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile
-
-##########
-# Crypto #
-##########
-
-announce CRYPTO_DEV_QAT_DH895xCC - "Support for Intel(R) DH895xCC"
-clean_blob drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
-clean_blob drivers/crypto/qat/qat_dh895xcc/adf_drv.c
-clean_kconfig drivers/crypto/qat/Kconfig CRYPTO_DEV_QAT_DH895xCC
-clean_mk CONFIG_CRYPTO_DEV_QAT_DH895xCC drivers/crypto/qat/Makefile
-
-announce CRYPTO_DEV_QAT - "Common bits for Intel(R) QuickAssist Technology"
-reject_firmware drivers/crypto/qat/qat_common/adf_accel_engine.c
-clean_kconfig drivers/crypto/qat/Kconfig CRYPTO_DEV_QAT
-clean_mk CONFIG_CRYPTO_DEV_QAT drivers/crypto/qat/Makefile
-
-########
-# tty #
-########
-
-announce CYCLADES - "Cyclades async mux support"
-reject_firmware drivers/tty/cyclades.c
-clean_blob drivers/tty/cyclades.c
-clean_kconfig drivers/tty/Kconfig CYCLADES
-clean_mk CONFIG_CYCLADES drivers/tty/Makefile
-
-announce ISI - "Multi-Tech multiport card support"
-reject_firmware drivers/tty/isicom.c
-clean_blob drivers/tty/isicom.c
-clean_kconfig drivers/tty/Kconfig ISI
-clean_mk CONFIG_ISI drivers/tty/Makefile
-
-announce MOXA_INTELLIO - "Moxa Intellio support"
-reject_firmware drivers/tty/moxa.c
-clean_blob drivers/tty/moxa.c
-clean_kconfig drivers/tty/Kconfig MOXA_INTELLIO
-clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile
-
-# gpu drm
-
-announce DRM_AST - "AST server chips"
-reject_firmware drivers/gpu/drm/ast/ast_dp501.c
-clean_blob drivers/gpu/drm/ast/ast_dp501.c
-clean_kconfig drivers/gpu/drm/ast/Kconfig DRM_AST
-clean_mk CONFIG_DRM_AST drivers/gpu/drm/ast/Makefile
-
-announce DRM_NOUVEAU - "Nouveau (nVidia) cards"
-reject_firmware drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/falcon.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/falcon.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_kconfig drivers/gpu/drm/nouveau/Kconfig DRM_NOUVEAU
-clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile
-
-announce DRM_MGA - "Matrox g200/g400"
-drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw
-drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw
-reject_firmware drivers/gpu/drm/mga/mga_warp.c
-clean_blob drivers/gpu/drm/mga/mga_warp.c
-clean_kconfig drivers/gpu/drm/Kconfig DRM_MGA
-clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
-
-announce DRM_MSM - "MSM DRM"
-reject_firmware drivers/gpu/drm/msm/adreno/adreno_gpu.c
-clean_blob drivers/gpu/drm/msm/adreno/adreno_device.c
-clean_kconfig drivers/gpu/drm/msm/Kconfig DRM_MSM
-clean_mk CONFIG_DRM_MSM drivers/gpu/drm/msm/Makefile
-
-announce DRM_R128 - "ATI Rage 128"
-drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin
-reject_firmware drivers/gpu/drm/r128/r128_cce.c
-clean_blob drivers/gpu/drm/r128/r128_cce.c
-clean_kconfig drivers/gpu/drm/Kconfig DRM_R128
-clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile
-
-announce DRM_RADEON - "ATI Radeon"
-drop_fw_file firmware/radeon/R100_cp.bin.ihex firmware/radeon/R100_cp.bin
-drop_fw_file firmware/radeon/R200_cp.bin.ihex firmware/radeon/R200_cp.bin
-drop_fw_file firmware/radeon/R300_cp.bin.ihex firmware/radeon/R300_cp.bin
-drop_fw_file firmware/radeon/R420_cp.bin.ihex firmware/radeon/R420_cp.bin
-drop_fw_file firmware/radeon/R520_cp.bin.ihex firmware/radeon/R520_cp.bin
-drop_fw_file firmware/radeon/R600_me.bin.ihex firmware/radeon/R600_me.bin
-drop_fw_file firmware/radeon/R600_pfp.bin.ihex firmware/radeon/R600_pfp.bin
-drop_fw_file firmware/radeon/RS600_cp.bin.ihex firmware/radeon/RS600_cp.bin
-drop_fw_file firmware/radeon/RS690_cp.bin.ihex firmware/radeon/RS690_cp.bin
-drop_fw_file firmware/radeon/RS780_me.bin.ihex firmware/radeon/RS780_me.bin
-drop_fw_file firmware/radeon/RS780_pfp.bin.ihex firmware/radeon/RS780_pfp.bin
-drop_fw_file firmware/radeon/RV610_me.bin.ihex firmware/radeon/RV610_me.bin
-drop_fw_file firmware/radeon/RV610_pfp.bin.ihex firmware/radeon/RV610_pfp.bin
-drop_fw_file firmware/radeon/RV620_me.bin.ihex firmware/radeon/RV620_me.bin
-drop_fw_file firmware/radeon/RV620_pfp.bin.ihex firmware/radeon/RV620_pfp.bin
-drop_fw_file firmware/radeon/RV630_me.bin.ihex firmware/radeon/RV630_me.bin
-drop_fw_file firmware/radeon/RV630_pfp.bin.ihex firmware/radeon/RV630_pfp.bin
-drop_fw_file firmware/radeon/RV635_me.bin.ihex firmware/radeon/RV635_me.bin
-drop_fw_file firmware/radeon/RV635_pfp.bin.ihex firmware/radeon/RV635_pfp.bin
-drop_fw_file firmware/radeon/RV670_me.bin.ihex firmware/radeon/RV670_me.bin
-drop_fw_file firmware/radeon/RV670_pfp.bin.ihex firmware/radeon/RV670_pfp.bin
-drop_fw_file firmware/radeon/RV710_me.bin.ihex firmware/radeon/RV710_me.bin
-drop_fw_file firmware/radeon/RV710_pfp.bin.ihex firmware/radeon/RV710_pfp.bin
-drop_fw_file firmware/radeon/RV730_me.bin.ihex firmware/radeon/RV730_me.bin
-drop_fw_file firmware/radeon/RV730_pfp.bin.ihex firmware/radeon/RV730_pfp.bin
-drop_fw_file firmware/radeon/RV770_me.bin.ihex firmware/radeon/RV770_me.bin
-drop_fw_file firmware/radeon/RV770_pfp.bin.ihex firmware/radeon/RV770_pfp.bin
-reject_firmware drivers/gpu/drm/radeon/radeon_cp.c
-clean_blob drivers/gpu/drm/radeon/radeon_cp.c
-reject_firmware drivers/gpu/drm/radeon/r100.c
-clean_blob drivers/gpu/drm/radeon/r100.c
-reject_firmware drivers/gpu/drm/radeon/r600.c
-clean_blob drivers/gpu/drm/radeon/r600.c
-reject_firmware drivers/gpu/drm/radeon/r600_cp.c
-clean_blob drivers/gpu/drm/radeon/r600_cp.c
-reject_firmware drivers/gpu/drm/radeon/ni.c
-clean_blob drivers/gpu/drm/radeon/ni.c
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
-reject_firmware drivers/gpu/drm/radeon/cik.c
-clean_blob drivers/gpu/drm/radeon/cik.c
-reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c
-clean_blob drivers/gpu/drm/radeon/radeon_uvd.c
-reject_firmware drivers/gpu/drm/radeon/radeon_vce.c
-clean_blob drivers/gpu/drm/radeon/radeon_vce.c
-clean_kconfig drivers/gpu/drm/Kconfig DRM_RADEON
-clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile
-
-announce DRM_STI - "DRM Support for STMicroelectronics SoC stiH41x Series"
-reject_firmware drivers/gpu/drm/sti/sti_hqvdp.c
-clean_blob drivers/gpu/drm/sti/sti_hqvdp.c
-clean_kconfig drivers/gpu/drm/sti/Kconfig DRM_STI
-clean_mk CONFIG_DRM_STI drivers/gpu/drm/sti/Makefile
-
-#######
-# dma #
-#######
-
-announce IMX_SDMA - "i.MX SDMA support"
-reject_firmware drivers/dma/imx-sdma.c
-clean_blob arch/arm/mach-imx/mm-imx25.c
-clean_blob arch/arm/mach-imx/mm-imx3.c
-clean_blob arch/arm/boot/dts/imx25.dtsi
-clean_blob arch/arm/boot/dts/imx35.dtsi
-clean_blob arch/arm/boot/dts/imx50.dtsi
-clean_blob arch/arm/boot/dts/imx51.dtsi
-clean_blob arch/arm/boot/dts/imx53.dtsi
-clean_blob arch/arm/boot/dts/imx53-tx53.dtsi
-clean_blob arch/arm/boot/dts/imx6qdl.dtsi
-clean_blob arch/arm/boot/dts/imx6sl.dtsi
-clean_blob arch/arm/boot/dts/imx6sx.dtsi
-clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
-clean_kconfig drivers/dma/Kconfig IMX_SDMA
-clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile
-
-#########
-# Media #
-#########
-
-# media/tuner
-
-announce MEDIA_TUNER_SI2157 - "Silicon Labs Si2157 silicon tuner"
-reject_firmware drivers/media/tuners/si2157.c
-clean_blob drivers/media/tuners/si2157.c
-clean_blob drivers/media/tuners/si2157_priv.h
-clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_SI2157
-clean_mk CONFIG_MEDIA_TUNER_SI2157 drivers/media/tuners/Makefile
-
-announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners"
-undefault_firmware 'XC\(2028\|3028L\)' \
-  drivers/media/tuners/tuner-xc2028.h \
-  drivers/media/pci/saa7134/saa7134-cards.c \
-  drivers/media/pci/ivtv/ivtv-driver.c \
-  drivers/media/pci/cx18/cx18-driver.c \
-  drivers/media/pci/cx18/cx18-dvb.c \
-  drivers/media/pci/cx23885/cx23885-dvb.c \
-  drivers/media/pci/cx23885/cx23885-video.c \
-  drivers/media/pci/cx88/cx88-dvb.c \
-  drivers/media/pci/cx88/cx88-cards.c \
-  drivers/media/usb/em28xx/em28xx-cards.c \
-  drivers/media/usb/dvb-usb/dib0700_devices.c \
-  drivers/media/usb/dvb-usb/cxusb.c
-reject_firmware drivers/media/tuners/tuner-xc2028.c
-clean_blob drivers/media/tuners/tuner-xc2028.c
-clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_XC2028
-clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/tuners/Makefile
-
-announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards"
-clean_blob drivers/media/usb/tm6000/tm6000-cards.c
-clean_kconfig drivers/media/usb/tm6000/Kconfig VIDEO_TM6000_DVB
-clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/usb/tm6000/Makefile
-
-announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner"
-undefine_macro "XC4000_DEFAULT_FIRMWARE\(\|_NEW\)" "\"/*(DEBLOBBED)*/\"" \
-  "disabled non-Free firmware" drivers/media/tuners/xc4000.c
-maybe_reject_firmware drivers/media/tuners/xc4000.c
-clean_blob drivers/media/tuners/xc4000.c
-clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_XC4000
-clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/tuners/Makefile
-
-announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner"
-undefault_firmware 'XC5000' \
-  drivers/media/usb/cx231xx/cx231xx-cards.c
-reject_firmware drivers/media/tuners/xc5000.c
-clean_blob drivers/media/tuners/xc5000.c
-clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_XC5000
-clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/tuners/Makefile
-
-announce DVB_USB - "Support for various USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dvb-usb-firmware.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB
-clean_mk CONFIG_DVB_USB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_V2 - "Support for various USB DVB devices v2"
-reject_firmware drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_V2
-clean_mk CONFIG_DVB_USB_V2 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
-reject_firmware drivers/media/common/b2c2/flexcop-fe-tuner.c
-
-announce DVB_BT8XX - "BT8xx based PCI cards"
-reject_firmware drivers/media/pci/bt8xx/dvb-bt8xx.c
-
-announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)"
-clean_blob drivers/media/usb/dvb-usb/a800.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_A800
-clean_mk CONFIG_DVB_USB_A800 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support"
-clean_file drivers/media/usb/dvb-usb/af9005-script.h
-clean_sed '
-s,^	deb_info("load init script\\n");$,	{\n		err("Missing Free init script\\n");\n		return scriptlen = ret = -EINVAL;\n		,;
-' drivers/media/usb/dvb-usb/af9005-fe.c 'report missing Free init script'
-clean_blob drivers/media/usb/dvb-usb/af9005-fe.c
-clean_blob drivers/media/usb/dvb-usb/af9005.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_AF9005
-clean_mk CONFIG_DVB_USB_AF9005 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_AF9015
-clean_mk CONFIG_DVB_USB_AF9015 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_AF9035
-clean_mk CONFIG_DVB_USB_AF9035 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/az6007.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_AZ6007
-clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support"
-clean_blob drivers/media/usb/dvb-usb/az6027.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_AZ6027
-clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support"
-clean_blob drivers/media/usb/dvb-usb/cxusb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_CXUSB
-clean_mk CONFIG_DVB_USB_CXUSB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_core.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIB0700
-clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIBUSB_MB
-clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mc.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIBUSB_MC
-clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/digitv.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIGITV
-clean_mk CONFIG_DVB_USB_DIGITV drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)"
-clean_blob drivers/media/usb/dvb-usb/dtt200u.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DTT200U
-clean_mk CONFIG_DVB_USB_DTT200U drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/dw2102.c
-clean_blob drivers/media/usb/dvb-usb/dw2102.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DW2102
-clean_mk CONFIG_DVB_USB_DW2102 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.h
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_EC168
-clean_mk CONFIG_DVB_USB_EC168 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support"
-reject_firmware drivers/media/usb/dvb-usb/gp8psk.c
-clean_blob drivers/media/usb/dvb-usb/gp8psk.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_GP8PSK
-clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_blob drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_file Documentation/dvb/lmedm04.txt
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_LME2510
-clean_mk CONFIG_DVB_USB_LME2510 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/m920x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_M920X
-clean_mk CONFIG_DVB_USB_M920X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/nova-t-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_NOVA_T_USB2
-clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver"
-reject_firmware drivers/media/usb/dvb-usb/opera1.c
-clean_blob drivers/media/usb/dvb-usb/opera1.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_OPERA1
-clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/technisat-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_TECHNISAT_USB2
-clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/ttusb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_TTUSB2
-clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/umt-010.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_UMT_010
-clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp702x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_VP702X
-clean_mk CONFIG_DVB_USB_VP702X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp7045.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_VP7045
-clean_mk CONFIG_DVB_USB_VP7045 drivers/media/usb/dvb-usb/Makefile
-
-# dvb/frontends
-
-announce DVB_AF9013 - "Afatech AF9013 demodulator"
-reject_firmware drivers/media/dvb-frontends/af9013.c
-clean_blob 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
-
-announce DVB_BCM3510 - "Broadcom BCM3510"
-undefault_firmware 'BCM3510' drivers/media/dvb-frontends/bcm3510.c
-clean_sed '
-/You.ll need a firmware/,/dvb-fe-bcm/d;
-' drivers/media/dvb-frontends/bcm3510.c \
-  "removed non-Free firmware notes"
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_BCM3510
-clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24116 - "Conexant CX24116 based"
-undefault_firmware CX24116 drivers/media/dvb-frontends/cx24116.c
-reject_firmware drivers/media/dvb-frontends/cx24116.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_CX24116
-clean_mk CONFIG_DVB_CX24116 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24117 - "Conexant CX24117 based"
-undefault_firmware CX24117 drivers/media/dvb-frontends/cx24117.c
-reject_firmware drivers/media/dvb-frontends/cx24117.c
-clean_blob drivers/media/dvb-frontends/cx24117.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_CX24117
-clean_mk CONFIG_DVB_CX24117 drivers/media/dvb-frontends/Makefile
-
-announce DVB_DS3000 - "Montage Tehnology DS3000 based"
-undefault_firmware 'DS3000' \
-  drivers/media/dvb-frontends/ds3000.c
-reject_firmware drivers/media/dvb-frontends/ds3000.c
-clean_blob drivers/media/dvb-frontends/ds3000.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_DS3000
-clean_mk CONFIG_DVB_DS3000 drivers/media/dvb-frontends/Makefile
-
-announce DVB_DRX39XYJ - "Micronas DRX-J demodulator"
-reject_firmware drivers/media/dvb-frontends/drx39xyj/drxj.c
-clean_blob drivers/media/dvb-frontends/drx39xyj/drxj.c
-clean_kconfig drivers/media/dvb-frontends/drx39xyj/Kconfig DVB_DRX39XYJ
-clean_mk CONFIG_DVB_DRX39XYJ drivers/media/dvb-frontends/drx39xyj/Makefile
-
-announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
-reject_firmware drivers/media/dvb-frontends/lgs8gxx.c
-clean_blob drivers/media/dvb-frontends/lgs8gxx.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_LGS8GXX
-clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb-frontends/Makefile
-
-announce DVB_M88DS3103 - "Montage M88DS3103"
-reject_firmware drivers/media/dvb-frontends/m88ds3103.c
-clean_blob drivers/media/dvb-frontends/m88ds3103.c
-clean_blob drivers/media/dvb-frontends/m88ds3103_priv.h
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_M88DS3103
-clean_mk CONFIG_DVB_M88DS3103 drivers/media/dvb-frontends/Makefile
-
-announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based"
-undefault_firmware 'NXT200[24]' drivers/media/dvb-frontends/nxt200x.c
-reject_firmware drivers/media/dvb-frontends/nxt200x.c
-clean_blob drivers/media/dvb-frontends/nxt200x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_NXT200X
-clean_mk CONFIG_DVB_NXT200X drivers/media/dvb-frontends/Makefile
-
-announce DVB_OR51132 - "Oren OR51132 based"
-reject_firmware drivers/media/dvb-frontends/or51132.c
-clean_blob drivers/media/dvb-frontends/or51132.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_OR51132
-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
-clean_blob drivers/media/dvb-frontends/or51211.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_OR51211
-clean_mk CONFIG_DVB_OR51211 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SI2165 - "Silicon Labs si2165 based"
-reject_firmware drivers/media/dvb-frontends/si2165.c
-clean_blob drivers/media/dvb-frontends/si2165.c
-clean_blob drivers/media/dvb-frontends/si2165_priv.h
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SI2165
-clean_mk CONFIG_DVB_SI2165 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SI2168 - "Silicon Labs Si2168"
-reject_firmware drivers/media/dvb-frontends/si2168.c
-clean_blob drivers/media/dvb-frontends/si2168.c
-clean_blob drivers/media/dvb-frontends/si2168_priv.h
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SI2168
-clean_mk CONFIG_DVB_SI2168 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP8870 - "Spase sp8870"
-undefault_firmware 'SP8870' drivers/media/dvb-frontends/sp8870.c
-clean_blob drivers/media/dvb-frontends/sp8870.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SP8870
-clean_mk CONFIG_DVB_SP8870 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP887X - "Spase sp887x based"
-undefault_firmware 'SP887X' drivers/media/dvb-frontends/sp887x.c
-clean_blob drivers/media/dvb-frontends/sp887x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SP887X
-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
-clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H"
-undefault_firmware 'TDA1004[56]' drivers/media/dvb-frontends/tda1004x.c
-clean_blob drivers/media/dvb-frontends/tda1004x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_TDA1004X
-clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA10071 - "NXP TDA10071"
-reject_firmware drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071_priv.h
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_TDA10071
-clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile
-
-# dvb
-
-announce DVB_AS102 - "Abilis AS102 DVB receiver"
-reject_firmware drivers/media/usb/as102/as102_fw.c
-clean_blob drivers/media/usb/as102/as102_fw.c
-clean_kconfig drivers/media/usb/as102/Kconfig DVB_AS102
-clean_mk CONFIG_DVB_AS102 drivers/media/usb/as102/Makefile
-
-announce DVB_AV7110 - "AV7110 cards"
-reject_firmware drivers/media/pci/ttpci/av7110.c
-clean_blob drivers/media/pci/ttpci/av7110.c
-clean_kconfig drivers/media/pci/ttpci/Kconfig DVB_AV7110
-clean_mk CONFIG_DVB_AV7110 drivers/media/pci/ttpci/Makefile
-
-announce DVB_BUDGET - "Budget cards"
-reject_firmware drivers/media/pci/ttpci/budget.c
-
-announce DVB_BUDGET_AV - "Budget cards with analog video inputs"
-reject_firmware drivers/media/pci/ttpci/budget-av.c
-
-announce DVB_BUDGET_CI - "Budget cards with onboard CI connector"
-reject_firmware drivers/media/pci/ttpci/budget-ci.c
-
-announce DVB_DRXD - "Micronas DRXD driver"
-reject_firmware drivers/media/dvb-frontends/drxd_hard.c
-clean_blob drivers/media/dvb-frontends/drxd_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_DRXD
-clean_mk CONFIG_DVB_DRXD drivers/media/dvb-frontends/Makefile
-
-announce DVB_DRXK - "Micronas DRXK based"
-reject_firmware drivers/media/dvb-frontends/drxk_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_DRXK
-clean_mk CONFIG_DVB_DRXK drivers/media/dvb-frontends/Makefile
-
-announce DVB_MN88472 - "Panasonic MN88472"
-reject_firmware drivers/staging/media/mn88472/mn88472.c
-clean_blob drivers/staging/media/mn88472/mn88472.c
-clean_blob drivers/staging/media/mn88472/mn88472_priv.h
-clean_kconfig drivers/staging/media/mn88472/Kconfig DVB_MN88472
-clean_mk CONFIG_DVB_MN88472 drivers/staging/media/mn88472/Makefile
-
-announce DVB_MN88473 - "Panasonic MN88472"
-reject_firmware drivers/staging/media/mn88473/mn88473.c
-clean_blob drivers/staging/media/mn88473/mn88473.c
-clean_blob drivers/staging/media/mn88473/mn88473_priv.h
-clean_kconfig drivers/staging/media/mn88473/Kconfig DVB_MN88473
-clean_mk CONFIG_DVB_MN88473 drivers/staging/media/mn88473/Makefile
-
-announce DVB_NGENE - "Micronas nGene support"
-reject_firmware drivers/media/pci/ngene/ngene-core.c
-clean_blob drivers/media/pci/ngene/ngene-core.c
-clean_kconfig drivers/media/pci/ngene/Kconfig DVB_NGENE
-clean_mk CONFIG_DVB_NGENE drivers/media/pci/ngene/Makefile
-
-announce DVB_PLUTO2 - "Pluto2 cards"
-reject_firmware drivers/media/pci/pluto2/pluto2.c
-
-announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver"
-reject_firmware drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.h
-clean_kconfig drivers/media/common/siano/Kconfig SMS_SIANO_MDTV
-clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/common/siano/Makefile
-
-announce SMS_USB_DRV - "Siano's USB interface support"
-reject_firmware drivers/media/usb/siano/smsusb.c
-clean_blob drivers/media/usb/siano/smsusb.c
-clean_kconfig drivers/media/usb/siano/Kconfig SMS_USB_DRV
-clean_mk CONFIG_SMS_USB_DRV drivers/media/usb/siano/Makefile
-
-announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices"
-drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin
-reject_firmware drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_blob drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_kconfig drivers/media/usb/ttusb-budget/Kconfig DVB_TTUSB_BUDGET
-clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/usb/ttusb-budget/Makefile
-
-announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices"
-reject_firmware drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob Documentation/dvb/ttusb-dec.txt
-clean_kconfig drivers/media/usb/ttusb-dec/Kconfig DVB_TTUSB_DEC
-clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/usb/ttusb-dec/Makefile
-
-# video
-
-announce VIDEO_BT848 - "BT848 Video For Linux"
-reject_firmware drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob Documentation/video4linux/bttv/README
-clean_kconfig drivers/media/pci/bt8xx/Kconfig VIDEO_BT848
-clean_mk CONFIG_VIDEO_BT848 drivers/media/pci/bt8xx/Makefile
-
-announce VIDEO_CODA - "Chips&Media Coda multi-standard codec IP"
-reject_firmware drivers/media/platform/coda/coda-common.c
-clean_blob drivers/media/platform/coda/coda-common.c
-clean_kconfig drivers/media/platform/Kconfig VIDEO_CODA
-clean_mk CONFIG_VIDEO_CODA drivers/media/platform/coda/Makefile
-
-announce VIDEO_CPIA2 - "CPiA2 Video For Linux"
-clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin
-reject_firmware drivers/media/usb/cpia2/cpia2_core.c
-clean_blob drivers/media/usb/cpia2/cpia2_core.c
-clean_kconfig drivers/media/usb/cpia2/Kconfig VIDEO_CPIA2
-clean_mk CONFIG_VIDEO_CPIA2 drivers/media/usb/cpia2/Makefile
-
-announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support"
-reject_firmware drivers/media/pci/cx18/cx18-av-firmware.c
-reject_firmware drivers/media/pci/cx18/cx18-dvb.c
-reject_firmware drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-av-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-dvb.c
-clean_blob drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-driver.c
-clean_kconfig drivers/media/pci/cx18/Kconfig VIDEO_CX18
-clean_mk CONFIG_VIDEO_CX18 drivers/media/pci/cx18/Makefile
-
-announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support"
-reject_firmware drivers/media/usb/cx231xx/cx231xx-417.c
-clean_blob drivers/media/usb/cx231xx/cx231xx-417.c
-clean_kconfig drivers/media/usb/cx231xx/Kconfig VIDEO_CX231XX
-clean_mk CONFIG_VIDEO_CX231XX drivers/media/usb/cx231xx/Makefile
-
-announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support"
-reject_firmware drivers/media/pci/cx23885/cx23885-417.c
-clean_blob drivers/media/pci/cx23885/cx23885-417.c
-reject_firmware drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-video.c
-clean_kconfig drivers/media/pci/cx23885/Kconfig VIDEO_CX23885
-clean_mk CONFIG_VIDEO_CX23885 drivers/media/pci/cx23885/Makefile
-
-announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders"
-reject_firmware drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_blob drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_kconfig drivers/media/i2c/cx25840/Kconfig VIDEO_CX25840
-clean_mk CONFIG_VIDEO_CX25840 drivers/media/i2c/cx25840/Makefile
-
-announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)"
-reject_firmware drivers/media/pci/cx88/cx88-blackbird.c
-clean_kconfig drivers/media/pci/cx88/Kconfig VIDEO_CX88_BLACKBIRD
-clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/pci/cx88/Makefile
-
-announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards"
-clean_blob drivers/media/usb/em28xx/em28xx-dvb.c
-clean_kconfig drivers/media/usb/em28xx/Kconfig VIDEO_EM28XX_DVB
-clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/usb/em28xx/Makefile
-
-announce VIDEO_EXYNOS4_FIMC_IS - "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
-reject_firmware drivers/media/platform/exynos4-is/fimc-is.c
-clean_blob drivers/media/platform/exynos4-is/fimc-is.h
-clean_kconfig drivers/media/platform/exynos4-is/Kconfig VIDEO_EXYNOS4_FIMC_IS
-clean_mk CONFIG_VIDEO_EXYNOS4_FIMC_IS drivers/media/platform/exynos4-is/Makefile
-
-announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support"
-reject_firmware drivers/media/pci/ivtv/ivtv-firmware.c
-clean_blob drivers/media/pci/ivtv/ivtv-firmware.c
-clean_kconfig drivers/media/pci/ivtv/Kconfig VIDEO_IVTV
-clean_mk CONFIG_VIDEO_IVTV drivers/media/pci/ivtv/Makefile
-
-announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support"
-reject_firmware drivers/media/usb/pvrusb2/pvrusb2-hdw.c
-clean_blob drivers/media/usb/pvrusb2/pvrusb2-devattr.c
-clean_kconfig drivers/media/usb/pvrusb2/Kconfig VIDEO_PVRUSB2
-clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/usb/pvrusb2/Makefile
-
-announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above"
-clean_blob include/media/cx2341x.h
-
-announce VIDEO_GO7007 - "Go 7007 support"
-reject_firmware drivers/media/usb/go7007/go7007-driver.c
-clean_blob drivers/media/usb/go7007/go7007-driver.c
-reject_firmware drivers/media/usb/go7007/go7007-fw.c
-clean_blob drivers/media/usb/go7007/go7007-fw.c
-clean_kconfig drivers/media/usb/go7007/Kconfig VIDEO_GO7007
-clean_mk CONFIG_VIDEO_GO7007 drivers/media/usb/go7007/Makefile
-
-announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support"
-reject_firmware drivers/media/usb/go7007/go7007-loader.c
-clean_blob drivers/media/usb/go7007/go7007-loader.c
-clean_kconfig drivers/media/usb/go7007/Kconfig VIDEO_GO7007_USB_S2250_BOARD
-clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/media/usb/go7007/Makefile
-
-announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards"
-reject_firmware drivers/media/pci/saa7134/saa7134-dvb.c
-clean_kconfig drivers/media/pci/saa7134/Kconfig VIDEO_SAA7134_DVB
-clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/pci/saa7134/Makefile
-
-announce VIDEO_SAA7134_GO7007 - "go7007 support for saa7134 based TV cards"
-clean_blob drivers/media/pci/saa7134/saa7134-go7007.c
-clean_kconfig drivers/media/pci/saa7134/Kconfig VIDEO_SAA7134_GO7007
-clean_mk CONFIG_VIDEO_SAA7134_GO7007 drivers/media/pci/saa7134/Makefile
-
-announce VIDEO_SAA7164 - "NXP SAA7164 support"
-reject_firmware drivers/media/pci/saa7164/saa7164-fw.c
-clean_blob drivers/media/pci/saa7164/saa7164-fw.c
-clean_kconfig drivers/media/pci/saa7164/Kconfig VIDEO_SAA7164
-clean_mk CONFIG_VIDEO_SAA7164 drivers/media/pci/saa7164/Makefile
-
-announce VIDEO_S5C73M3 - "Samsung S5C73M3 sensor support"
-reject_firmware drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_blob drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5C73M3
-clean_mk CONFIG_VIDEO_S5C73M3 drivers/media/i2c/s5c73m3/Makefile
-
-announce VIDEO_S5K4ECGX - "Samsung S5K4ECGX sensor support"
-reject_firmware drivers/media/i2c/s5k4ecgx.c
-clean_blob drivers/media/i2c/s5k4ecgx.c
-clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5K4ECGX
-clean_mk CONFIG_VIDEO_S5K4ECGX drivers/media/i2c/Makefile
-
-announce VIDEO_S5K5BAF - "Samsung S5K5BAF sensor support"
-reject_firmware drivers/media/i2c/s5k5baf.c
-clean_blob drivers/media/i2c/s5k5baf.c
-clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5K5BAF
-clean_mk CONFIG_VIDEO_S5K5BAF drivers/media/i2c/Makefile
-
-announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec"
-reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
-clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c
-clean_kconfig drivers/media/platform/Kconfig VIDEO_SAMSUNG_S5P_MFC
-clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/platform/s5p-mfc/Makefile
-
-announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support"
-reject_firmware drivers/staging/media/tlg2300/pd-main.c
-clean_blob drivers/staging/media/tlg2300/pd-main.c
-clean_kconfig drivers/staging/media/tlg2300/Kconfig VIDEO_TLG2300
-clean_mk CONFIG_VIDEO_TLG2300 drivers/staging/media/tlg2300/Makefile
-
-announce USB_S2255 - "USB Sensoray 2255 video capture device"
-reject_firmware drivers/media/usb/s2255/s2255drv.c
-clean_blob drivers/media/usb/s2255/s2255drv.c
-clean_kconfig drivers/media/usb/s2255/Kconfig USB_S2255
-clean_mk CONFIG_USB_S2255 drivers/media/usb/s2255/Makefile
-
-announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam"
-drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw
-reject_firmware drivers/media/usb/gspca/vicam.c
-clean_blob drivers/media/usb/gspca/vicam.c
-clean_kconfig drivers/media/usb/gspca/Kconfig USB_GSPCA_VICAM
-clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/usb/gspca/Makefile
-
-announce VIDEO_TI_VPE - "TI VPE (Video Processing Engine) driver"
-reject_firmware drivers/media/platform/ti-vpe/vpdma.c
-clean_blob drivers/media/platform/ti-vpe/vpdma.c
-clean_kconfig drivers/media/platform/Kconfig VIDEO_TI_VPE
-clean_mk CONFIG_VIDEO_TI_VPE drivers/media/platform/ti-vpe/Makefile
-
-# radio
-
-announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio"
-reject_firmware drivers/media/radio/radio-wl1273.c
-clean_blob drivers/media/radio/radio-wl1273.c
-clean_kconfig drivers/media/radio/Kconfig RADIO_WL1273
-clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile
-
-announce RADIO_WL128X - "Texas Instruments WL128x FM Radio"
-clean_blob drivers/media/radio/wl128x/fmdrv_common.h
-reject_firmware drivers/media/radio/wl128x/fmdrv_common.c
-clean_blob drivers/media/radio/wl128x/fmdrv_common.c
-clean_kconfig drivers/media/radio/wl128x/Kconfig RADIO_WL128X
-clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile
-
-#######
-# net #
-#######
-
-announce ACENIC - "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit"
-drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin
-drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin
-reject_firmware drivers/net/ethernet/alteon/acenic.c
-clean_blob drivers/net/ethernet/alteon/acenic.c
-clean_kconfig drivers/net/ethernet/alteon/Kconfig ACENIC
-clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile
-
-announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support"
-clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin
-clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin
-reject_firmware drivers/net/ethernet/adaptec/starfire.c
-clean_blob drivers/net/ethernet/adaptec/starfire.c
-clean_kconfig drivers/net/ethernet/adaptec/Kconfig ADAPTEC_STARFIRE
-clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile
-
-announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support"
-clean_blob drivers/net/ethernet/brocade/bna/bnad.c
-clean_blob drivers/net/ethernet/brocade/bna/cna.h
-reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c
-reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c
-clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig BNA
-clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile
-
-announce BNX2 - "Broadcom NetXtremeII"
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1a.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2.c
-clean_blob drivers/net/ethernet/broadcom/bnx2.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig BNX2
-clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile
-
-announce BNX2X - "Broadcom NetXtremeII 10Gb support"
-drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-7.8.17.0.fw.ihex firmware/bnx2x/bnx2x-e1h-7.8.17.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1-7.8.17.0.fw.ihex firmware/bnx2x/bnx2x-e1-7.8.17.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-7.8.17.0.fw.ihex firmware/bnx2x/bnx2x-e2-7.8.17.0.fw
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1b.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.3.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^#include "bnx2x_init\.h"/,/^$/{
-  /^$/i\
-#define bnx2x_init_block(bp, start, end) \\\
-  return (printk(KERN_ERR "%s: Missing Free firmware\\n", bp->dev->name),\\\
-	  -EINVAL)
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 'report missing Free firmware'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^int bnx2x_compare_fw_ver/,/^}$/{
-  /^		u32 my_fw = /i\
-		/*(DEBLOBBED)*/
-  /^		u32 my_fw = /,/<< 24);/d;
-  /^		u32 loaded_fw = /,/^$/{
-    /^$/i\
-\
-		u32 my_fw = ~loaded_fw;
-  }
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 'fail already-loaded test'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
-clean_sed '
-/static void bnx2x_init_wr_wb/{
-  i\
-extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32);
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig BNX2X
-clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile
-
-announce CASSINI - "Sun Cassini"
-drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin
-reject_firmware drivers/net/ethernet/sun/cassini.c
-clean_blob drivers/net/ethernet/sun/cassini.c
-clean_kconfig drivers/net/ethernet/sun/Kconfig CASSINI
-clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile
-
-announce CHELSIO_T3 - "Chelsio AEL 2005 support"
-drop_fw_file firmware/cxgb3/t3b_psram-1.1.0.bin.ihex firmware/cxgb3/t3b_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/t3c_psram-1.1.0.bin.ihex firmware/cxgb3/t3c_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/ael2005_opt_edc.bin.ihex firmware/cxgb3/ael2005_opt_edc.bin
-drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_edc.bin
-drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin
-reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig CHELSIO_T3
-clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile
-
-announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support"
-reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig CHELSIO_T4
-clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile
-
-announce E100 - "Intel PRO/100+"
-drop_fw_file firmware/e100/d101m_ucode.bin.ihex firmware/e100/d101m_ucode.bin
-drop_fw_file firmware/e100/d101s_ucode.bin.ihex firmware/e100/d101s_ucode.bin
-drop_fw_file firmware/e100/d102e_ucode.bin.ihex firmware/e100/d102e_ucode.bin
-reject_firmware drivers/net/ethernet/intel/e100.c
-clean_sed '
-/^static const struct firmware \*e100_\(reject\|request\)_firmware(/,/^}$/{
-  s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;:
-}' drivers/net/ethernet/intel/e100.c 'proceed without firmware'
-clean_blob drivers/net/ethernet/intel/e100.c
-clean_kconfig drivers/net/ethernet/intel/Kconfig E100
-clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile
-
-announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device."
-clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h
-clean_sed '
-/^static int ft1000_reset_card/,/^}$/ {
-  /card_bootload/i\
-		return /*(DEBLOBBED)*/ false;
-}
-' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \
-  'disabled non-Free firmware-loading machinery'
-reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_kconfig drivers/staging/ft1000/Kconfig FT1000_PCMCIA
-clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile
-
-announce FT1000_USB - "Driver for ft1000 USB devices."
-clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img
-reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_kconfig drivers/staging/ft1000/Kconfig FT1000_USB
-clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile
-
-announce MYRI_SBUS - "MyriCOM Gigabit Ethernet"
-drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin
-
-announce MYRI10GE - "Myricom Myri-10G Ethernet support"
-reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_kconfig drivers/net/ethernet/myricom/Kconfig MYRI10GE
-clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile
-
-announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC"
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig NETXEN_NIC
-clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile
-
-announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support"
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig QLCNIC
-clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile
-
-announce R8169 - "Realtek 8169 gigabit ethernet support"
-reject_firmware drivers/net/ethernet/realtek/r8169.c
-clean_blob drivers/net/ethernet/realtek/r8169.c
-clean_kconfig drivers/net/ethernet/realtek/Kconfig R8169
-clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile
-
-announce SLICOSS - "Alacritech Gigabit IS-NIC cards"
-reject_firmware drivers/staging/slicoss/slicoss.c
-clean_blob drivers/staging/slicoss/slicoss.c
-clean_kconfig drivers/staging/slicoss/Kconfig SLICOSS
-clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile
-
-announce SPIDER_NET - "Spider Gigabit Ethernet driver"
-reject_firmware drivers/net/ethernet/toshiba/spider_net.c
-clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \
-  drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes'
-clean_blob drivers/net/ethernet/toshiba/spider_net.c
-clean_blob drivers/net/ethernet/toshiba/spider_net.h
-clean_kconfig drivers/net/ethernet/toshiba/Kconfig SPIDER_NET
-clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile
-
-announce TEHUTI - "Tehuti Networks 10G Ethernet"
-drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin
-reject_firmware drivers/net/ethernet/tehuti/tehuti.c
-clean_blob drivers/net/ethernet/tehuti/tehuti.c
-clean_kconfig drivers/net/ethernet/tehuti/Kconfig TEHUTI
-clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile
-
-announce TIGON3 - "Broadcom Tigon3"
-drop_fw_file firmware/tigon/tg3.bin.ihex firmware/tigon/tg3.bin
-drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin
-drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin
-reject_firmware drivers/net/ethernet/broadcom/tg3.c
-clean_blob drivers/net/ethernet/broadcom/tg3.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig TIGON3
-clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile
-
-announce TYPHOON - "3cr990 series Typhoon"
-drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin
-reject_firmware drivers/net/ethernet/3com/typhoon.c
-clean_blob drivers/net/ethernet/3com/typhoon.c
-clean_kconfig drivers/net/ethernet/3com/Kconfig TYPHOON
-clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile
-
-announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter"
-reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_kconfig drivers/net/ethernet/neterion/Kconfig VXGE
-clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile
-
-# appletalk
-
-announce COPS - "COPS LocalTalk PC"
-clean_sed '
-/sizeof(\(ff\|lt\)drv_code)/{
-  i\
-		printk(KERN_INFO "%s: Missing Free firmware.\\n", dev->name);\
-		return;
-}
-/\(ff\|lt\)drv_code/d;
-' drivers/net/appletalk/cops.c 'report missing Free firmware'
-clean_blob drivers/net/appletalk/cops.c
-clean_file drivers/net/appletalk/cops_ffdrv.h
-clean_file drivers/net/appletalk/cops_ltdrv.h
-clean_kconfig drivers/net/appletalk/Kconfig COPS
-clean_mk CONFIG_COPS drivers/net/appletalk/Makefile
-
-# hamradio
-
-announce YAM - "YAM driver for AX.25"
-drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin
-drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin
-reject_firmware drivers/net/hamradio/yam.c
-clean_blob drivers/net/hamradio/yam.c
-clean_kconfig drivers/net/hamradio/Kconfig YAM
-clean_mk CONFIG_YAM drivers/net/hamradio/Makefile
-
-# irda
-
-announce USB_IRDA - "IrDA USB dongles"
-reject_firmware drivers/net/irda/irda-usb.c
-clean_blob drivers/net/irda/irda-usb.c
-clean_sed '
-s,\(char stir421x_fw_name\)\[12\];,\1[16];,
-' drivers/net/irda/irda-usb.c "avoid buffer overflow with deblobbed filename"
-clean_kconfig drivers/net/irda/Kconfig USB_IRDA
-clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile
-
-# smsc
-
-announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA"
-drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin
-reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_kconfig drivers/net/ethernet/smsc/Kconfig PCMCIA_SMC91C92
-clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile
-
-# near-field communication
-
-announce NFC_WILINK - "Texas Instruments NFC WiLink driver"
-reject_firmware drivers/nfc/nfcwilink.c
-clean_blob drivers/nfc/nfcwilink.c
-clean_kconfig drivers/nfc/Kconfig NFC_WILINK
-clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile
-
-announce NFC_PN544_I2C - "NFC PN544 i2c support"
-reject_firmware drivers/nfc/pn544/i2c.c
-clean_kconfig drivers/nfc/pn544/Kconfig NFC_PN544_I2C
-clean_mk NFC_PN544_I2C drivers/nfc/pn544/Kconfig
-
-# pcmcia
-
-# CIS files are not software.
-# announce PCCARD - "PCCard (PCMCIA/CardBus) support"
-# reject_firmware drivers/pcmcia/ds.c
-# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
-# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
-
-announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CCFEM556.cis.ihex firmware/cis/3CCFEM556.cis
-# clean_blob drivers/net/pcmcia/3c574_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
-# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CXEM556.cis.ihex firmware/cis/3CXEM556.cis
-# clean_blob drivers/net/pcmcia/3c589_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
-# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis
-drop_fw_file firmware/cis/PCMLM28.cis.ihex firmware/cis/PCMLM28.cis
-drop_fw_file firmware/cis/DP83903.cis.ihex firmware/cis/DP83903.cis
-drop_fw_file firmware/cis/NE2K.cis.ihex firmware/cis/NE2K.cis
-drop_fw_file firmware/cis/tamarack.cis.ihex firmware/cis/tamarack.cis
-drop_fw_file firmware/cis/PE-200.cis.ihex firmware/cis/PE-200.cis
-drop_fw_file firmware/cis/PE520.cis.ihex firmware/cis/PE520.cis
-# clean_blob drivers/net/pcmcia/pcnet_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
-# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
-
-# usb
-
-announce USB_KAWETH - "USB KLSI KL5USB101-based ethernet device support"
-drop_fw_file firmware/kaweth/new_code.bin.ihex firmware/kaweth/new_code.bin
-drop_fw_file firmware/kaweth/new_code_fix.bin.ihex firmware/kaweth/new_code_fix.bin
-drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code.bin
-drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin
-reject_firmware drivers/net/usb/kaweth.c
-clean_blob drivers/net/usb/kaweth.c
-clean_kconfig drivers/net/usb/Kconfig USB_KAWETH
-clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile
-
-# wireless
-
-announce ATMEL "Atmel at76c50x chipset  802.11b support"
-reject_firmware drivers/net/wireless/atmel.c
-clean_blob drivers/net/wireless/atmel.c
-clean_kconfig drivers/net/wireless/Kconfig ATMEL
-clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile
-
-announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards"
-reject_firmware drivers/net/wireless/at76c50x-usb.c
-clean_blob drivers/net/wireless/at76c50x-usb.c
-clean_kconfig drivers/net/wireless/Kconfig AT76C50X_USB
-clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile
-
-announce B43 - "Broadcom 43xx wireless support (mac80211 stack)"
-maybe_reject_firmware drivers/net/wireless/b43/main.c
-clean_sed '
-/^static int b43_upload_microcode(/,/^}$/{
-  /	if (dev->fw\.opensource) {$/i\
-	if (!dev->fw.opensource) {\
-		b43err(dev->wl, "Rejected non-Free firmware\\n");\
-		err = -EOPNOTSUPP;\
-		goto error;\
-	}
-}' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware'
-# Major portions of firmware filenames not deblobbed.
-clean_blob drivers/net/wireless/b43/main.c
-clean_kconfig drivers/net/wireless/b43/Kconfig B43
-clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile
-
-announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)"
-reject_firmware drivers/net/wireless/b43legacy/main.c
-# Major portions of firwmare filenames not deblobbed.
-clean_blob drivers/net/wireless/b43legacy/main.c
-clean_kconfig drivers/net/wireless/b43legacy/Kconfig B43LEGACY
-clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile
-
-announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMSMAC
-clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile
-
-announce BRCMFMAC - "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/firmware.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC
-clean_mk CONFIG_BRCMFMAC drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver"
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/sdio.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC_SDIO
-clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver"
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC_USB
-clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_PCIE - "Broadcom IEEE802.11n PCIE FullMAC WLAN driver"
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/pcie.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC_PCIE
-clean_mk CONFIG_BRCMFMAC_PCIE drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)"
-reject_firmware drivers/net/wireless/orinoco/fw.c
-clean_blob drivers/net/wireless/orinoco/fw.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig HERMES
-clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile
-
-announce ORINOCO_USB - "Agere Orinoco USB support"
-reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c
-clean_blob drivers/net/wireless/orinoco/orinoco_usb.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig ORINOCO_USB
-clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile
-
-announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2100.c
-clean_kconfig drivers/net/wireless/ipw2x00/Kconfig IPW2100
-clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile
-
-announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2200.c
-clean_kconfig drivers/net/wireless/ipw2x00/Kconfig IPW2200
-clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile
-
-announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection"
-reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945.h
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig IWL3945
-clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWL4965 - "Intel Wireless WiFi 4965AGN"
-reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965.c
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig IWL4965
-clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN"
-reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig IWLWIFI
-clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile
-
-announce IWLDVM - "Intel Wireless WiFi DVM Firmware support"
-clean_blob drivers/net/wireless/iwlwifi/iwl-1000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-2000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-5000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-6000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig IWLDVM
-clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/Makefile
-
-announce IWLMVM - "Intel Wireless WiFi MVM Firmware support"
-reject_firmware drivers/net/wireless/iwlwifi/mvm/nvm.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-7000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-8000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig IWLMVM
-clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/Makefile
-
-announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support"
-reject_firmware drivers/net/wireless/libertas/firmware.c
-clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS
-clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_cs.c
-clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_CS
-clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_sdio.c
-clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_SDIO
-clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_spi.c
-clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_SPI
-clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_usb.c
-clean_blob drivers/net/wireless/libertas/README
-clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_USB
-clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
-reject_firmware drivers/net/wireless/libertas_tf/if_usb.c
-clean_blob drivers/net/wireless/libertas_tf/if_usb.c
-clean_kconfig drivers/net/wireless/Kconfig LIBERTAS_THINFIRM_USB
-clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile
-
-announce MWIFIEX - "Marvell WiFi-Ex Driver"
-clean_blob drivers/net/wireless/mwifiex/README
-reject_firmware drivers/net/wireless/mwifiex/main.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX
-clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787"
-clean_blob drivers/net/wireless/mwifiex/sdio.h
-clean_blob drivers/net/wireless/mwifiex/sdio.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX_SDIO
-clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766"
-clean_blob drivers/net/wireless/mwifiex/pcie.h
-clean_blob drivers/net/wireless/mwifiex/pcie.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX_PCIE
-clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797"
-clean_blob drivers/net/wireless/mwifiex/usb.h
-clean_blob drivers/net/wireless/mwifiex/usb.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX_USB
-clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile
-
-announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support"
-reject_firmware drivers/net/wireless/mwl8k.c
-clean_blob drivers/net/wireless/mwl8k.c
-clean_kconfig drivers/net/wireless/Kconfig MWL8K
-clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile
-
-announce AR5523 - "Atheros AR5523 wireless driver support"
-reject_firmware drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.h
-clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig AR5523
-clean_mk CONFIG_AR5523 drivers/net/wireless/ath/ar5523/Makefile
-
-announce ATH6KL - "Atheros ath6kl support"
-reject_firmware drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/core.h
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig ATH6KL
-clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_SDIO - "Atheros ath6kl SDIO support"
-clean_blob drivers/net/wireless/ath/ath6kl/sdio.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig ATH6KL_SDIO
-clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_USB - "Atheros ath6kl USB support"
-clean_blob drivers/net/wireless/ath/ath6kl/usb.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig ATH6KL_USB
-clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH10K - "Atheros 802.11ac wireless cards support"
-reject_firmware drivers/net/wireless/ath/ath10k/core.c
-clean_blob drivers/net/wireless/ath/ath10k/core.c
-clean_blob drivers/net/wireless/ath/ath10k/hw.h
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig ATH10K
-clean_mk CONFIG_ATH10K drivers/net/wireless/ath/ath10k/Makefile
-
-announce ATH10K NL80211_TESTMODE - "nl80211 testmode command"
-reject_firmware drivers/net/wireless/ath/ath10k/testmode.c
-clean_sed '
-/^[\t ]*\/\* utf\.bin firmware image/ s,/\* utf\.bin,/*(DEBLOBBED)*//*,
-' drivers/net/wireless/ath/ath10k/testmode.c 'removed blob name in comment'
-clean_kconfig net/wireless/Kconfig NL80211_TESTMODE
-clean_mk CONFIG_NL80211_TESTMODE drivers/net/wireless/ath/ath10k/Makefile
-
-announce ATH10K_PCI - "Atheros ath10k PCI support"
-clean_blob drivers/net/wireless/ath/ath10k/pci.c
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig ATH10K_PCI
-clean_mk CONFIG_ATH10K_PCI drivers/net/wireless/ath/ath10k/Makefile
-
-announce WIL6210 - "Wilocity 60g WiFi card wil6210 support"
-reject_firmware drivers/net/wireless/ath/wil6210/fw_inc.c
-clean_blob drivers/net/wireless/ath/wil6210/fw.c
-clean_blob drivers/net/wireless/ath/wil6210/wil6210.h
-clean_kconfig drivers/net/wireless/ath/wil6210/Kconfig WIL6210
-clean_mk CONFIG_WIL6210 drivers/net/wireless/ath/wil6210/Makefile
-
-announce CW1200 - "CW1200 WLAN support"
-reject_firmware drivers/net/wireless/cw1200/fwio.c
-clean_blob drivers/net/wireless/cw1200/fwio.h
-reject_firmware drivers/net/wireless/cw1200/sta.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig CW1200
-clean_mk CONFIG_CW1200 drivers/net/wireless/cw1200/Makefile
-
-announce CW1200_WLAN_SDIO - "Support SDIO platforms"
-clean_blob drivers/net/wireless/cw1200/cw1200_sdio.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig CW1200_WLAN_SDIO
-clean_mk CONFIG_CW1200_WLAN_SDIO drivers/net/wireless/cw1200/Makefile
-
-announce PRISM2_USB - "Prism2.5/3 USB driver"
-reject_firmware drivers/staging/wlan-ng/prism2fw.c
-clean_blob drivers/staging/wlan-ng/prism2fw.c
-clean_kconfig drivers/staging/wlan-ng/Kconfig PRISM2_USB
-clean_mk CONFIG_PRISM2_USB drivers/staging/wlan-ng/Makefile
-
-announce P54_PCI - "Prism54 PCI support"
-reject_firmware drivers/net/wireless/p54/p54pci.c
-clean_blob drivers/net/wireless/p54/p54pci.c
-clean_sed 's,3826\.eeprom,DEBLOBBED,g' drivers/net/wireless/p54/Kconfig 'removed blob name'
-clean_kconfig drivers/net/wireless/p54/Kconfig P54_PCI
-clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile
-
-announce P54_SPI - "Prism54 SPI (stlc45xx) support"
-# There's support for loading custom 3826.eeprom here, with a default
-# eeprom that is clearly pure data.  Without Free 3826.arm, there's
-# little point in trying to retain the ability to load 3826.eeprom, so
-# we drop it altogether.
-reject_firmware drivers/net/wireless/p54/p54spi.c
-clean_blob drivers/net/wireless/p54/p54spi.c
-clean_kconfig drivers/net/wireless/p54/Kconfig P54_SPI
-clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile
-
-announce P54_USB - "Prism54 USB support"
-reject_firmware drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.h
-clean_kconfig drivers/net/wireless/p54/Kconfig P54_USB
-clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile
-
-announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus"
-reject_firmware drivers/net/wireless/prism54/islpci_dev.c
-clean_blob drivers/net/wireless/prism54/islpci_dev.c
-clean_kconfig drivers/net/wireless/Kconfig PRISM54
-clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile
-
-announce RSI_91X - "Redpine Signals Inc 91x WLAN driver support"
-clean_blob drivers/net/wireless/rsi/rsi_common.h
-clean_kconfig drivers/net/wireless/rsi/Kconfig RSI_91X
-clean_mk CONFIG_RSI_91X drivers/net/wireless/rsi/Makefile
-
-announce RSI_SDIO - "Redpine Signals SDIO bus support"
-reject_firmware drivers/net/wireless/rsi/rsi_91x_sdio_ops.c
-clean_blob drivers/net/wireless/rsi/rsi_91x_sdio.c
-clean_kconfig drivers/net/wireless/rsi/Kconfig RSI_SDIO
-clean_mk CONFIG_RSI_SDIO drivers/net/wireless/rsi/Makefile
-
-announce RSI_USB - "Redpine Signals USB bus support"
-reject_firmware drivers/net/wireless/rsi/rsi_91x_usb_ops.c
-clean_blob drivers/net/wireless/rsi/rsi_91x_usb.c
-clean_kconfig drivers/net/wireless/rsi/Kconfig RSI_USB
-clean_mk CONFIG_RSI_USB drivers/net/wireless/rsi/Makefile
-
-announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support"
-reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2X00_LIB_FIRMWARE
-clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile
-
-announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt61pci.h
-clean_blob drivers/net/wireless/rt2x00/rt61pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT61PCI
-clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT73USB - "Ralink rt2501/rt73 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt73usb.h
-clean_blob drivers/net/wireless/rt2x00/rt73usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT73USB
-clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.h
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800PCI
-clean_mk CONFIG_RT2800PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800USB - "Ralink rt2800 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.h
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB
-clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile
-
-announce RTLWIFI - "Realtek Wireless Network Adapters"
-reject_firmware drivers/net/wireless/rtlwifi/core.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTLWIFI
-clean_mk CONFIG_RTLWIFI drivers/net/wireless/rtlwifi/Makefile
-
-announce RTL8188EE - "Realtek RTL8188EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8188EE
-clean_mk CONFIG_RTL8188EE drivers/net/wireless/rtlwifi/rtl8188ee/Makefile
-
-announce R8188EU - "Realtek RTL8188EU Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8188eu/hal/fw.c
-clean_blob drivers/staging/rtl8188eu/hal/fw.c
-clean_blob drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-clean_kconfig drivers/staging/rtl8188eu/Kconfig R8188EU
-clean_mk CONFIG_R8188EU drivers/staging/rtl8188eu/Makefile
-
-announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE
-clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
-
-announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU
-clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile
-
-announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE
-clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile
-
-announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE
-clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile
-
-announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
-clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c
-clean_kconfig drivers/staging/rtl8192e/rtl8192e/Kconfig RTL8192E
-clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile
-
-announce RTL8192EE - "RealTek RTL8192EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192EE
-clean_mk CONFIG_RTL8192EE drivers/net/wireless/rtlwifi/Makefile
-
-announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c
-clean_blob drivers/staging/rtl8192u/r819xU_firmware.c
-clean_kconfig drivers/staging/rtl8192u/Kconfig RTL8192U
-clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile
-
-announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8712/hal_init.c
-clean_blob drivers/staging/rtl8712/hal_init.c
-clean_kconfig drivers/staging/rtl8712/Kconfig R8712U
-clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile
-
-announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8723AE
-clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile
-
-announce R8723AU - "RealTek RTL8723AU Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-clean_blob drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-clean_blob drivers/staging/rtl8723au/os_dep/os_intfs.c
-clean_kconfig drivers/staging/rtl8723au/Kconfig R8723AU
-clean_mk CONFIG_R8723AU drivers/staging/rtl8723au/Makefile
-
-announce RTL8723BE - "Realtek RTL8723BE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8723BE
-clean_mk CONFIG_RTL8723BE drivers/net/wireless/rtlwifi/rtl8723be/Makefile
-
-announce RTL8821AE - "Realtek RTL8821AE/RTL8812AE Wireless LAN NIC driver"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8821AE
-clean_mk CONFIG_RTL8821AE drivers/net/wireless/rtlwifi/rtl8821ae/Makefile
-
-announce VT6656 - "VIA Technologies VT6656 support"
-reject_firmware drivers/staging/vt6656/firmware.c
-clean_blob drivers/staging/vt6656/firmware.c
-clean_kconfig drivers/staging/vt6656/Kconfig VT6656
-clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile
-
-announce WL1251 - "TI wl1251 support"
-reject_firmware drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/wl1251.h
-clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig WL1251
-clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile
-
-announce WL12XX - "TI wl12xx support"
-clean_blob drivers/net/wireless/ti/wl12xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig WL12XX
-clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile
-
-announce WL18XX - "TI wl18xx support"
-reject_firmware drivers/net/wireless/ti/wl18xx/main.c
-clean_blob drivers/net/wireless/ti/wl18xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig WL18XX
-clean_mk CONFIG_WL18XX drivers/net/wireless/ti/wl18xx/Makefile
-
-announce WLCORE - "TI wlcore support"
-reject_firmware drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/wlcore_i.h
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig WLCORE
-clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile
-
-announce USB_ZD1201 - "USB ZD1201 based Wireless device support"
-reject_firmware drivers/net/wireless/zd1201.c
-clean_blob drivers/net/wireless/zd1201.c
-clean_kconfig drivers/net/wireless/Kconfig USB_ZD1201
-clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile
-
-announce WCN36XX - "Qualcomm Atheros WCN3660/3680 support"
-reject_firmware drivers/net/wireless/ath/wcn36xx/smd.c
-clean_blob drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-clean_blob drivers/net/wireless/ath/wcn36xx/main.c
-clean_kconfig drivers/net/wireless/ath/wcn36xx/Kconfig WCN36XX
-clean_mk CONFIG_WCN36XX drivers/net/wireless/ath/wcn36xx/Makefile
-
-announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support"
-reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c
-clean_blob drivers/net/wireless/zd1211rw/zd_usb.c
-clean_kconfig drivers/net/wireless/zd1211rw/Kconfig ZD1211RW
-clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile
-
-# bluetooth
-
-announce BT_ATH3K - "Atheros firmware download driver"
-reject_firmware drivers/bluetooth/ath3k.c
-clean_blob drivers/bluetooth/ath3k.c
-clean_kconfig drivers/bluetooth/Kconfig BT_ATH3K
-clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile
-
-announce BT_HCIBCM203X - "HCI BCM203x USB driver"
-reject_firmware drivers/bluetooth/bcm203x.c
-clean_blob drivers/bluetooth/bcm203x.c
-clean_kconfig drivers/bluetooth/Kconfig BT_HCIBCM203X
-clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile
-
-announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver"
-reject_firmware drivers/bluetooth/bfusb.c
-clean_blob drivers/bluetooth/bfusb.c
-clean_kconfig drivers/bluetooth/Kconfig BT_HCIBFUSB
-clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile
-
-announce BT_HCIBT3C - "HCI BT3C (PC Card) driver"
-reject_firmware drivers/bluetooth/bt3c_cs.c
-clean_blob drivers/bluetooth/bt3c_cs.c
-clean_kconfig drivers/bluetooth/Kconfig BT_HCIBT3C
-clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile
-
-announce BT_HCIBTUSB - "HCI USB driver"
-reject_firmware drivers/bluetooth/btusb.c
-clean_blob drivers/bluetooth/btusb.c
-clean_kconfig drivers/bluetooth/Kconfig BT_HCIBTUSB
-clean_mk CONFIG_BT_HCIBTUSB drivers/bluetooth/Makefile
-
-announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver"
-reject_firmware drivers/bluetooth/btmrvl_sdio.c
-clean_blob drivers/bluetooth/btmrvl_sdio.c
-clean_blob Documentation/btmrvl.txt
-clean_kconfig drivers/bluetooth/Kconfig BT_MRVL_SDIO
-clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile
-
-announce TI_ST - "Texas Instruments shared transport line discipline"
-reject_firmware drivers/misc/ti-st/st_kim.c
-clean_blob drivers/misc/ti-st/st_kim.c
-clean_kconfig drivers/misc/ti-st/Kconfig TI_ST
-clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile
-
-# wimax
-
-announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400"
-reject_firmware drivers/net/wimax/i2400m/fw.c
-clean_blob drivers/net/wimax/i2400m/usb.c
-clean_blob Documentation/wimax/README.i2400m
-clean_kconfig drivers/net/wimax/i2400m/Kconfig WIMAX_I2400M
-clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile
-
-announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface"
-reject_firmware drivers/staging/gdm72xx/sdio_boot.c
-clean_blob drivers/staging/gdm72xx/sdio_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig WIMAX_GDM72XX_SDIO
-clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile
-
-announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface"
-reject_firmware drivers/staging/gdm72xx/usb_boot.c
-clean_blob drivers/staging/gdm72xx/usb_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig WIMAX_GDM72XX_USB
-clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile
-
-# infiniband
-
-announce INFINIBAND_QIB - "QLogic PCIe HCA support"
-drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw
-reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c
-clean_blob drivers/infiniband/hw/qib/qib_sd7220.c
-clean_kconfig drivers/infiniband/hw/qib/Kconfig INFINIBAND_QIB
-clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile
-
-# CAN
-
-announce CAN_SOFTING - "Softing Gmbh CAN generic support"
-reject_firmware drivers/net/can/softing/softing_fw.c
-clean_kconfig drivers/net/can/softing/Kconfig CAN_SOFTING
-clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile
-
-announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards"
-clean_blob drivers/net/can/softing/softing_cs.c
-clean_blob drivers/net/can/softing/softing_platform.h
-clean_sed '
-/^config CAN_SOFTING_CS$/,${
-  /You need firmware/i\
-	  /*(DEBLOBBED)*/
-  /You need firmware/,/softing-fw.*tar\.gz/d
-}' drivers/net/can/softing/Kconfig 'removed firmware notes'
-clean_kconfig drivers/net/can/softing/Kconfig CAN_SOFTING_CS
-clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/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
-
-announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+"
-reject_firmware drivers/isdn/hardware/mISDN/speedfax.c
-clean_blob drivers/isdn/hardware/mISDN/speedfax.c
-clean_kconfig drivers/isdn/hardware/mISDN/Kconfig MISDN_SPEEDFAX
-clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile
-
-##########
-# Serial #
-##########
-
-announce DGAP - "Digi EPCA PCI products"
-reject_firmware drivers/staging/dgap/dgap.c
-clean_blob drivers/staging/dgap/dgap.c
-clean_kconfig drivers/staging/dgap/Kconfig DGAP
-clean_mk CONFIG_DGAP drivers/staging/dgap/Makefile
-
-announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/MT5634ZLX.cis.ihex firmware/cis/MT5634ZLX.cis
-drop_fw_file firmware/cis/RS-COM-2P.cis.ihex firmware/cis/RS-COM-2P.cis
-drop_fw_file firmware/cis/COMpad2.cis.ihex firmware/cis/COMpad2.cis
-drop_fw_file firmware/cis/COMpad4.cis.ihex firmware/cis/COMpad4.cis
-# These are not software; they're Free, but GPLed without textual sources.
-# It could be assumed that these binaries *are* sources, since they
-# can be trivially converted back to a textual form, without loss,
-# but we're better off safe than sorry, so remove them from our tree.
-drop_fw_file firmware/cis/SW_555_SER.cis.ihex firmware/cis/SW_555_SER.cis
-drop_fw_file firmware/cis/SW_7xx_SER.cis.ihex firmware/cis/SW_7xx_SER.cis
-drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis
-# clean_blob drivers/tty/serial/serial_cs.c
-# clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_8250_CS'
-# clean_mk CONFIG_SERIAL_8250_CS drivers/tty/serial/Makefile
-
-announce SERIAL_ICOM - "IBM Multiport Serial Adapter"
-reject_firmware drivers/tty/serial/icom.c
-clean_blob drivers/tty/serial/icom.c
-clean_kconfig drivers/tty/serial/Kconfig SERIAL_ICOM
-clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile
-
-announce SERIAL_QE - "Freescale QUICC Engine serial port support"
-reject_firmware drivers/tty/serial/ucc_uart.c
-clean_blob drivers/tty/serial/ucc_uart.c
-clean_kconfig drivers/tty/serial/Kconfig SERIAL_QE
-clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile
-
-announce SERIAL_RP2 - "Comtrol RocketPort EXPRESS/INFINITY support"
-reject_firmware drivers/tty/serial/rp2.c
-clean_blob drivers/tty/serial/rp2.c
-clean_kconfig drivers/tty/serial/Kconfig SERIAL_RP2
-clean_mk CONFIG_SERIAL_RP2 drivers/tty/serial/Makefile
-
-########
-# Leds #
-########
-
-announce LEDS_LP55XX_COMMON - "Common Driver for TI/National LP5521 and LP5523/55231"
-reject_firmware drivers/leds/leds-lp55xx-common.c
-clean_kconfig drivers/leds/Kconfig LEDS_LP55XX_COMMON
-clean_mk CONFIG_LEDS_LP55XX_COMMON drivers/leds/Makefile
-
-announce LEDS_LP5521 - "LED Support for N.S. LP5521 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5521.c
-clean_kconfig drivers/leds/Kconfig LEDS_LP5521
-clean_mk CONFIG_LEDS_LP5521 drivers/leds/Makefile
-
-announce LEDS_LP5523 - "LED Support for TI/National LP5523/55231 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5523.c
-clean_kconfig drivers/leds/Kconfig LEDS_LP5523
-clean_mk CONFIG_LEDS_LP5523 drivers/leds/Makefile
-
-#########
-# input #
-#########
-
-announce MOUSE_ELAN_I2C - "ELAN I2C Touchpad support"
-reject_firmware drivers/input/mouse/elan_i2c_core.c
-clean_blob drivers/input/mouse/elan_i2c.h
-clean_kconfig drivers/input/mouse/Kconfig MOUSE_ELAN_I2C
-clean_mk CONFIG_MOUSE_ELAN_I2C drivers/input/mouse/Makefile
-
-announce TOUCHSCREEN_ELAN
-reject_firmware drivers/input/touchscreen/elants_i2c.c
-clean_blob drivers/input/touchscreen/elants_i2c.c
-clean_kconfig drivers/input/touchscreen/Kconfig TOUCHSCREEN_ELAN
-clean_mk CONFIG_TOUCHSCREEN_ELAN drivers/input/touchscreen/Makefile
-
-announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen"
-reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c
-clean_blob drivers/input/touchscreen/atmel_mxt_ts.c
-clean_kconfig drivers/input/touchscreen/Kconfig TOUCHSCREEN_ATMEL_MXT
-clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile
-
-announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter"
-reject_firmware drivers/staging/media/lirc/lirc_zilog.c
-clean_blob drivers/staging/media/lirc/lirc_zilog.c
-clean_kconfig drivers/staging/media/lirc/Kconfig LIRC_ZILOG
-clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile
-
-announce INPUT_IMS_PCU - "IMS Passenger Control Unit driver"
-reject_firmware drivers/input/misc/ims-pcu.c
-clean_blob drivers/input/misc/ims-pcu.c
-clean_kconfig drivers/input/misc/Kconfig INPUT_IMS_PCU
-clean_mk CONFIG_INPUT_IMS_PCU drivers/input/misc/Makefile
-
-####################
-# Data acquisition #
-####################
-
-announce COMEDI - "Data acquisition support (comedi)"
-maybe_reject_firmware drivers/staging/comedi/drivers.c
-clean_kconfig drivers/staging/comedi/Kconfig COMEDI
-clean_mk CONFIG_COMEDI drivers/staging/comedi/Makefile
-
-announce COMEDI_DAQBOARD2000 - "IOtech DAQboard/2000 support"
-clean_blob drivers/staging/comedi/drivers/daqboard2000.c
-clean_kconfig drivers/staging/comedi/Kconfig COMEDI_DAQBOARD2000
-clean_mk CONFIG_COMEDI_DAQBOARD2000 drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_JR3_PCI - "JR3/PCI force sensor board support"
-clean_blob drivers/staging/comedi/drivers/jr3_pci.c
-clean_kconfig drivers/staging/comedi/Kconfig COMEDI_JR3_PCI
-clean_mk CONFIG_COMEDI_JR3_PCI drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_ME_DAQ - "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support"
-clean_blob drivers/staging/comedi/drivers/me_daq.c
-clean_kconfig drivers/staging/comedi/Kconfig COMEDI_ME_DAQ
-clean_mk CONFIG_COMEDI_ME_DAQ drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_ME4000 - "Meilhaus ME-4000 support"
-clean_blob drivers/staging/comedi/drivers/me4000.c
-clean_kconfig drivers/staging/comedi/Kconfig COMEDI_ME4000
-clean_mk CONFIG_COMEDI_ME4000 drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_NI_PCIDIO - "NI PCI-DIO32HS, PCI-6533, PCI-6534 support"
-clean_blob drivers/staging/comedi/drivers/ni_pcidio.c
-clean_kconfig drivers/staging/comedi/Kconfig COMEDI_NI_PCIDIO
-clean_mk CONFIG_COMEDI_NI_PCIDIO drivers/staging/comedi/drivers/Makefile
-
-
-#######
-# MMC #
-#######
-
-announce MMC_VUB300 - "VUB300 USB to SDIO/SD/MMC Host Controller support"
-clean_sed '
-/^config MMC_VUB300/,/^config /{
-  /Some SDIO cards/i\
-	  /*(DEBLOBBED)*/
-  /Some SDIO cards/,/obtainable data rate\.$/d
-}
-' drivers/mmc/host/Kconfig "removed firmware notes"
-reject_firmware drivers/mmc/host/vub300.c
-clean_blob drivers/mmc/host/vub300.c
-clean_kconfig drivers/mmc/host/Kconfig MMC_VUB300
-clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile
-
-########
-# SCSI #
-########
-
-announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver"
-drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin
-reject_firmware drivers/scsi/qlogicpti.c
-clean_blob drivers/scsi/qlogicpti.c
-clean_kconfig drivers/scsi/Kconfig SCSI_QLOGICPTI
-clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile
-
-announce SCSI_ADVANSYS - "AdvanSys SCSI"
-drop_fw_file firmware/advansys/mcode.bin.ihex firmware/advansys/mcode.bin
-drop_fw_file firmware/advansys/3550.bin.ihex firmware/advansys/3550.bin
-drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin
-drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin
-reject_firmware drivers/scsi/advansys.c
-clean_blob drivers/scsi/advansys.c
-clean_kconfig drivers/scsi/Kconfig SCSI_ADVANSYS
-clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile
-
-announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI"
-drop_fw_file firmware/qlogic/1040.bin.ihex firmware/qlogic/1040.bin
-drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin
-drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin
-reject_firmware drivers/scsi/qla1280.c
-clean_blob drivers/scsi/qla1280.c
-clean_kconfig drivers/scsi/Kconfig SCSI_QLOGIC_1280
-clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile
-
-announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support"
-reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.h
-clean_kconfig drivers/scsi/aic94xx/Kconfig SCSI_AIC94XX
-clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile
-
-announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support"
-reject_firmware drivers/scsi/bfa/bfad.c
-clean_blob drivers/scsi/bfa/bfad.c
-clean_kconfig drivers/scsi/Kconfig SCSI_BFA_FC
-clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile
-
-announce SCSI_CHELSIO_FCOE - "Chelsio Communications FCoE support"
-reject_firmware drivers/scsi/csiostor/csio_hw.c
-clean_blob drivers/scsi/csiostor/csio_hw_chip.h
-clean_blob drivers/scsi/csiostor/csio_init.c
-clean_kconfig drivers/scsi/csiostor/Kconfig SCSI_CHELSIO_FCOE
-clean_mk CONFIG_SCSI_CHELSIO_FCOE drivers/scsi/csiostor/Makefile
-
-announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support"
-# The firmware name is built out of Vital Product Data read from the
-# adapter.  The firmware is definitely code, and I couldn't find
-# evidence it is Free, so I'm disabling it.  It's not clear whether
-# this is the hardware or the software inducing to the installation of
-# non-Free firmware.
-reject_firmware drivers/scsi/lpfc/lpfc_init.c
-clean_kconfig drivers/scsi/Kconfig SCSI_LPFC
-clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile
-
-announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support"
-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
-
-announce SCSI_WD719x - "Western Digital WD7193/7197/7296 support"
-reject_firmware drivers/scsi/wd719x.c
-clean_blob drivers/scsi/wd719x.c
-clean_blob Documentation/scsi/wd719x.txt
-clean_kconfig drivers/scsi/Kconfig SCSI_WD719X
-clean_mk CONFIG_SCSI_WD719X drivers/scsi/Makefile
-
-
-#######
-# USB #
-#######
-
-# atm
-
-announce USB_CXACRU - "Conexant AccessRunner USB support"
-reject_firmware drivers/usb/atm/cxacru.c
-clean_blob drivers/usb/atm/cxacru.c
-clean_kconfig drivers/usb/atm/Kconfig USB_CXACRU
-clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile
-
-announce USB_SPEEDTOUCH - "Speedtouch USB support"
-reject_firmware drivers/usb/atm/speedtch.c
-clean_blob drivers/usb/atm/speedtch.c
-clean_kconfig drivers/usb/atm/Kconfig USB_SPEEDTOUCH
-clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile
-
-announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem"
-reject_firmware drivers/usb/atm/ueagle-atm.c
-clean_blob drivers/usb/atm/ueagle-atm.c
-clean_kconfig drivers/usb/atm/Kconfig USB_UEAGLEATM
-clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile
-
-# host
-
-announce USB_XHCI_RCAR - "xHCI support for Renesas R-Car SoCs"
-reject_firmware drivers/usb/host/xhci-rcar.c
-clean_blob drivers/usb/host/xhci-rcar.c
-clean_kconfig drivers/usb/host/Kconfig USB_XHCI_RCAR
-clean_mk CONFIG_USB_XHCI_RCAR drivers/usb/host/Makefile
-
-# misc
-
-announce USB_EMI26 - "EMI 2|6 USB Audio interface"
-# These files are not under the GPL, better remove them all.
-drop_fw_file firmware/emi26/bitstream.HEX firmware/emi26/bitstream.fw
-drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw
-drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw
-reject_firmware drivers/usb/misc/emi26.c
-clean_blob drivers/usb/misc/emi26.c
-clean_kconfig drivers/usb/misc/Kconfig USB_EMI26
-clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile
-
-announce USB_EMI62 - "EMI 6|2m USB Audio interface"
-# These files are probably not under the GPL, better remove them all.
-drop_fw_file firmware/emi62/bitstream.HEX firmware/emi62/bitstream.fw
-drop_fw_file firmware/emi62/loader.HEX firmware/emi62/loader.fw
-drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw
-drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw
-reject_firmware drivers/usb/misc/emi62.c
-clean_blob drivers/usb/misc/emi62.c
-clean_kconfig drivers/usb/misc/Kconfig USB_EMI62
-clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile
-
-announce USB_EZUSB_FX2 - "Functions for loading firmware on EZUSB chips"
-maybe_reject_firmware drivers/usb/misc/ezusb.c
-
-announce USB_ISIGHTFW - "iSight firmware loading support"
-reject_firmware drivers/usb/misc/isight_firmware.c
-clean_blob drivers/usb/misc/isight_firmware.c
-clean_kconfig drivers/usb/misc/Kconfig USB_ISIGHTFW
-clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile
-
-# storage
-
-announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support"
-reject_firmware drivers/usb/storage/ene_ub6250.c
-clean_blob drivers/usb/storage/ene_ub6250.c
-clean_kconfig drivers/usb/storage/Kconfig USB_STORAGE_ENE_UB6250
-clean_mk CONFIG_USB_STORAGE_ENE_UB6250 drivers/usb/storage/Makefile
-
-# serial
-
-announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver"
-drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_MPR
-drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA18X
-drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19
-drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19QI
-drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19QW
-drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19W
-drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28
-drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28XA
-drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28XB
-drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28X
-drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA49W
-drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA49WLC
-clean_blob drivers/usb/serial/keyspan.c
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN
-clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver"
-clean_fw firmware/edgeport/boot.H16 firmware/edgeport/boot.fw
-clean_fw firmware/edgeport/boot2.H16 firmware/edgeport/boot2.fw
-clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw
-clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw
-reject_firmware drivers/usb/serial/io_edgeport.c
-clean_blob drivers/usb/serial/io_edgeport.c
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_EDGEPORT
-clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)"
-clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin
-reject_firmware drivers/usb/serial/io_ti.c
-clean_blob drivers/usb/serial/io_ti.c
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_EDGEPORT_TI
-clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_MXUPORT - "USB Moxa UPORT Serial Driver"
-reject_firmware drivers/usb/serial/mxuport.c
-clean_blob drivers/usb/serial/mxuport.c
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_MXUPORT
-clean_mk CONFIG_USB_SERIAL_MXUPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver"
-drop_fw_file firmware/ti_3410.fw.ihex firmware/ti_3410.fw
-drop_fw_file firmware/ti_5052.fw.ihex firmware/ti_5052.fw
-drop_fw_file firmware/mts_cdma.fw.ihex firmware/mts_cdma.fw
-drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw
-drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw
-reject_firmware drivers/usb/serial/ti_usb_3410_5052.c
-clean_blob drivers/usb/serial/ti_usb_3410_5052.c
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_TI
-clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver"
-clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw
-clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw
-clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw
-clean_blob drivers/usb/serial/whiteheat.c
-clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_WHITEHEAT
-clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile
-
-# uwb
-
-announce UWB_I1480U - Support for Intel Wireless UWB Link 1480 HWA
-reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h
-reject_firmware drivers/uwb/i1480/dfu/mac.c
-reject_firmware drivers/uwb/i1480/dfu/phy.c
-clean_blob drivers/uwb/i1480/dfu/usb.c
-clean_kconfig drivers/uwb/Kconfig UWB_I1480U
-clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile
-
-
-
-################
-# Programmable #
-################
-
-announce LATTICE_ECP3_CONFIG - "Lattice ECP3 FPGA bitstrap configuration via SPI"
-reject_firmware drivers/misc/lattice-ecp3-config.c
-clean_blob drivers/misc/lattice-ecp3-config.c
-clean_kconfig drivers/misc/Kconfig LATTICE_ECP3_CONFIG
-clean_mk CONFIG_LATTICE_ECP3_CONFIG drivers/misc/Makefile
-
-announce STE_MODEM_RPROC - "STE-Modem remoteproc support"
-maybe_reject_firmware drivers/remoteproc/remoteproc_core.c
-undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \
-  "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c
-clean_kconfig drivers/remoteproc/Kconfig STE_MODEM_RPROC
-clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile
-
-
-#########
-# Sound #
-#########
-
-announce SND_ASIHPI - "AudioScience ASIxxxx"
-reject_firmware sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpioctl.c
-clean_kconfig sound/pci/Kconfig SND_ASIHPI
-clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile
-
-announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
-reject_firmware sound/pci/cs46xx/cs46xx_lib.c
-clean_blob sound/pci/cs46xx/cs46xx_lib.c
-clean_kconfig sound/pci/Kconfig SND_CS46XX
-clean_mk CONFIG_SND_CS46XX sound/pci/cs46xx/Makefile
-
-announce SND_KORG1212 - "Korg 1212 IO"
-drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp
-reject_firmware sound/pci/korg1212/korg1212.c
-clean_blob sound/pci/korg1212/korg1212.c
-clean_kconfig sound/pci/Kconfig SND_KORG1212
-clean_mk CONFIG_SND_KORG1212 sound/pci/korg1212/Makefile
-
-announce SND_MAESTRO3 - "ESS Allegro/Maestro3"
-drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw
-drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw
-reject_firmware sound/pci/maestro3.c
-clean_blob sound/pci/maestro3.c
-clean_kconfig sound/pci/Kconfig SND_MAESTRO3
-clean_mk CONFIG_SND_MAESTRO3 sound/pci/Makefile
-
-announce SND_YMFPCI - "Yamaha YMF724/740/744/754"
-drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw
-drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw
-drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw
-reject_firmware sound/pci/ymfpci/ymfpci_main.c
-clean_blob sound/pci/ymfpci/ymfpci_main.c
-clean_kconfig sound/pci/Kconfig SND_YMFPCI
-clean_mk CONFIG_SND_YMFPCI sound/pci/ymfpci/Makefile
-
-announce SND_SB16_CSP - "SB16 Advanced Signal Processor"
-drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp
-drop_fw_file firmware/sb16/mulaw_main.csp.ihex firmware/sb16/mulaw_main.csp
-drop_fw_file firmware/sb16/ima_adpcm_init.csp.ihex firmware/sb16/ima_adpcm_init.csp
-drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_capture.csp
-drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp
-reject_firmware sound/isa/sb/sb16_csp.c
-clean_blob sound/isa/sb/sb16_csp.c
-clean_kconfig sound/isa/Kconfig SND_SB16_CSP
-clean_mk CONFIG_SND_SB16_CSP sound/isa/sb/Makefile
-
-announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
-drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin
-reject_firmware sound/isa/wavefront/wavefront_fx.c
-clean_blob sound/isa/wavefront/wavefront_fx.c
-reject_firmware sound/isa/wavefront/wavefront_synth.c
-clean_blob sound/isa/wavefront/wavefront_synth.c
-clean_kconfig sound/isa/Kconfig SND_WAVEFRONT
-clean_mk CONFIG_SND_WAVEFRONT sound/isa/wavefront/Makefile
-
-announce SND_VX_LIB - Digigram VX soundcards
-reject_firmware sound/drivers/vx/vx_hwdep.c
-clean_blob sound/drivers/vx/vx_hwdep.c
-clean_kconfig sound/drivers/Kconfig SND_VX_LIB
-clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile
-
-announce SND_DARLA20 - "(Echoaudio) Darla20"
-clean_blob sound/pci/echoaudio/darla20.c
-clean_kconfig sound/pci/Kconfig SND_DARLA20
-clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile
-
-announce SND_DARLA24 - "(Echoaudio) Darla24"
-clean_blob sound/pci/echoaudio/darla24.c
-clean_kconfig sound/pci/Kconfig SND_DARLA24
-clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile
-
-announce SND_ECHO3G - "(Echoaudio) 3G cards"
-clean_blob sound/pci/echoaudio/echo3g.c
-clean_kconfig sound/pci/Kconfig SND_ECHO3G
-clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile
-
-announce SND_GINA20 - "(Echoaudio) Gina20"
-clean_blob sound/pci/echoaudio/gina20.c
-clean_kconfig sound/pci/Kconfig SND_GINA20
-clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile
-
-announce SND_GINA24 - "(Echoaudio) Gina24"
-clean_blob sound/pci/echoaudio/gina24.c
-clean_kconfig sound/pci/Kconfig SND_GINA24
-clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile
-
-announce SND_INDIGO - "(Echoaudio) Indigo"
-clean_blob sound/pci/echoaudio/indigo.c
-clean_kconfig sound/pci/Kconfig SND_INDIGO
-clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJ - "(Echoaudio) Indigo DJ"
-clean_blob sound/pci/echoaudio/indigodj.c
-clean_kconfig sound/pci/Kconfig SND_INDIGODJ
-clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJX - "(Echoaudio) Indigo DJx"
-clean_blob sound/pci/echoaudio/indigodjx.c
-clean_kconfig sound/pci/Kconfig SND_INDIGODJX
-clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIO - "(Echoaudio) Indigo IO"
-clean_blob sound/pci/echoaudio/indigoio.c
-clean_kconfig sound/pci/Kconfig SND_INDIGOIO
-clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx"
-clean_blob sound/pci/echoaudio/indigoiox.c
-clean_kconfig sound/pci/Kconfig SND_INDIGOIOX
-clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA20 - "(Echoaudio) Layla20"
-clean_blob sound/pci/echoaudio/layla20.c
-clean_kconfig sound/pci/Kconfig SND_LAYLA20
-clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA24 - "(Echoaudio) Layla24"
-clean_blob sound/pci/echoaudio/layla24.c
-clean_kconfig sound/pci/Kconfig SND_LAYLA24
-clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile
-
-announce SND_MIA - "(Echoaudio) Mia"
-clean_blob sound/pci/echoaudio/mia.c
-clean_kconfig sound/pci/Kconfig SND_MIA
-clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile
-
-announce SND_MONA - "(Echoaudio) Mona"
-clean_blob sound/pci/echoaudio/mona.c
-clean_kconfig sound/pci/Kconfig SND_MONA
-clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile
-
-announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above "
-reject_firmware sound/pci/echoaudio/echoaudio.c
-clean_blob sound/pci/echoaudio/echoaudio.c
-
-announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)"
-reject_firmware sound/pci/emu10k1/emu10k1_main.c
-clean_blob sound/pci/emu10k1/emu10k1_main.c
-clean_kconfig sound/pci/Kconfig SND_EMU10K1
-clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile
-
-announce SND_MIXART - "Digigram miXart"
-reject_firmware sound/pci/mixart/mixart_hwdep.c
-clean_blob sound/pci/mixart/mixart_hwdep.c
-clean_kconfig sound/pci/Kconfig SND_MIXART
-clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile
-
-announce SND_PCXHR - "Digigram PCXHR"
-reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c
-clean_blob sound/pci/pcxhr/pcxhr_hwdep.c
-clean_kconfig sound/pci/Kconfig SND_PCXHR
-clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile
-
-announce SND_RIPTIDE - "Conexant Riptide"
-reject_firmware sound/pci/riptide/riptide.c
-clean_blob sound/pci/riptide/riptide.c
-clean_kconfig sound/pci/Kconfig SND_RIPTIDE
-clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile
-
-# This is ok, patch filenames are supplied as module parameters, and
-# they are text files with patch instructions.
-#announce SND_HDA_PATCH_LOADER - "Support initialization patch loading for HD-audio"
-#reject_firmware sound/pci/hda/hda_hwdep.c
-#clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_PATCH_LOADER'
-
-announce SND_HDA_CODEC_CA0132_DSP - "Support new DSP code for CA0132 codec"
-reject_firmware sound/pci/hda/patch_ca0132.c
-clean_blob sound/pci/hda/patch_ca0132.c
-clean_sed '
-/^config SND_HDA_CODEC_CA0132_DSP$/, /^config / {
-  s,(ctefx.bin),(/*(DEBLOBBED)*/),;
-}' sound/pci/hda/Kconfig 'removed blob name'
-clean_kconfig sound/pci/hda/Kconfig SND_HDA_CODEC_CA0132_DSP
-# There are no separate source files or Makefile entries for the _DSP option.
-clean_mk CONFIG_SND_HDA_CODEC_CA0132 sound/pci/hda/Makefile
-
-announce SND_HDSP - "RME Hammerfall DSP Audio"
-reject_firmware sound/pci/rme9652/hdsp.c
-clean_blob sound/pci/rme9652/hdsp.c
-clean_kconfig sound/pci/Kconfig SND_HDSP
-clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile
-
-announce SND_AICA - "Dreamcast Yamaha AICA sound"
-reject_firmware sound/sh/aica.c
-clean_blob sound/sh/aica.c
-clean_kconfig sound/sh/Kconfig SND_AICA
-clean_mk CONFIG_SND_AICA sound/sh/Makefile
-
-announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle"
-clean_blob sound/isa/msnd/msnd_pinnacle.h
-reject_firmware sound/isa/msnd/msnd_pinnacle.c
-clean_blob sound/isa/msnd/msnd_pinnacle.c
-clean_kconfig sound/isa/Kconfig SND_MSND_PINNACLE
-clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile
-
-announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey"
-clean_blob sound/isa/msnd/msnd_classic.h
-clean_kconfig sound/isa/Kconfig SND_MSND_CLASSIC
-clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile
-
-announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)"
-clean_blob sound/oss/msnd_classic.h
-clean_kconfig sound/oss/Kconfig SOUND_MSNDCLAS
-clean_sed '
-/^config MSNDCLAS_INIT_FILE$/, /^config / {
-  /^	default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDCLAS_PERM_FILE$/, /^config / {
-  /^	default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile
-
-announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)"
-clean_blob sound/oss/msnd_pinnacle.h
-clean_kconfig sound/oss/Kconfig SOUND_MSNDPIN
-clean_sed '
-/^config MSNDPIN_INIT_FILE$/, /^config / {
-  /^	default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDPIN_PERM_FILE$/, /^config / {
-  /^	default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile
-
-announce SND_SSCAPE - "Ensoniq SoundScape driver"
-reject_firmware sound/isa/sscape.c
-clean_blob sound/isa/sscape.c
-clean_sed '
-/^config SND_SSCAPE$/, /^config / {
-  s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g;
-}' sound/isa/Kconfig 'removed firmware names'
-clean_kconfig sound/isa/Kconfig SND_SSCAPE
-clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile
-
-announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1701.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_ADAU1701
-clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile
-
-announce SND_SOC_ADAU1761 - "ADAU1761 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1761.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_ADAU1761
-clean_mk CONFIG_SND_SOC_ADAU1761 sound/soc/codecs/Makefile
-
-announce SND_SOC_ADAU1781 - "ADAU1781 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1781.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_ADAU1781
-clean_mk CONFIG_SND_SOC_ADAU1781 sound/soc/codecs/Makefile
-
-announce SND_SOC_RT5677 - "RT5677 SoC"
-reject_firmware sound/soc/codecs/rt5677.c
-clean_blob sound/soc/codecs/rt5677.h
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_RT5677
-clean_mk CONFIG_SND_SOC_RT5677 sound/soc/codecs/Makefile
-
-announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader"
-maybe_reject_firmware sound/soc/codecs/sigmadsp.c
-
-announce SND_SOC_INTEL_SST_ACPI - "Intel SST (LPE) Driver"
-reject_firmware sound/soc/intel/sst-acpi.c
-clean_blob sound/soc/intel/sst-acpi.c
-clean_kconfig sound/soc/intel/Kconfig SND_SOC_INTEL_SST_ACPI
-clean_mk CONFIG_SND_SOC_INTEL_SST_ACPI sound/soc/intel/Makefile
-
-announce SND_SST_IPC - undocumented
-reject_firmware sound/soc/intel/sst/sst.c
-reject_firmware sound/soc/intel/sst/sst_loader.c
-clean_kconfig sound/soc/intel/Kconfig SND_SST_IPC
-clean_mk CONFIG_SND_SST_IPC sound/soc/intel/sst/Makefile
-
-announce SND_SST_IPC_ACPI - undocumented
-clean_blob sound/soc/intel/sst/sst_acpi.c
-clean_kconfig sound/soc/intel/Kconfig SND_SST_IPC_ACPI
-clean_mk CONFIG_SND_SST_IPC_ACPI sound/soc/intel/sst/Makefile
-
-announce SND_SST_IPC_PCI - undocumented
-clean_blob sound/soc/intel/sst/sst_pci.c
-clean_kconfig sound/soc/intel/Kconfig SND_SST_IPC_PCI
-clean_mk CONFIG_SND_SST_IPC_PCI sound/soc/intel/sst/Makefile
-
-announce SND_SOC_WM0010 - "WM0010 DSP driver"
-reject_firmware sound/soc/codecs/wm0010.c
-clean_blob sound/soc/codecs/wm0010.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM0010
-clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile
-
-# It's not clear that wm2000_anc.bin is pure data.
-# Check with developer, clean up for now.
-announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm2000.c
-clean_blob sound/soc/codecs/wm2000.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM2000
-clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile
-
-announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm8958-dsp2.c
-clean_blob sound/soc/codecs/wm8958-dsp2.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM8994
-clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile
-
-# The coeff files might be pure data, but the wmfw surely aren't.
-announce SND_SOC_WM_ADSP - "Wolfson ADSP support"
-reject_firmware sound/soc/codecs/wm_adsp.c
-clean_blob sound/soc/codecs/wm_adsp.c
-clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM_ADSP
-clean_mk CONFIG_SND_SOC_WM_ADSP sound/soc/codecs/Makefile
-
-announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral"
-reject_firmware sound/soc/sh/siu_dai.c
-clean_blob sound/soc/sh/siu_dai.c
-clean_kconfig sound/soc/sh/Kconfig SND_SOC_SH4_SIU
-clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile
-
-announce SOUND_TRIX - "MediaTrix AudioTrix Pro support"
-clean_blob sound/oss/trix.c
-clean_kconfig sound/oss/Kconfig SOUND_TRIX
-clean_sed '
-/^config TRIX_BOOT_FILE$/, /^config / {
-  /^	default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile
-
-announce SOUND_TRIX - "See above,"
-announce SOUND_PAS - "ProAudioSpectrum 16 support,"
-announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support"
-clean_blob sound/oss/sb_common.c
-clean_kconfig sound/oss/Kconfig SOUND_PAS
-clean_kconfig sound/oss/Kconfig SOUND_SB
-clean_mk CONFIG_SOUND_PAS sound/oss/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 '
-/^config PSS_BOOT_FILE$/, /^config / {
-  /^	default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_PSS sound/oss/Makefile
-
-announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB"
-reject_firmware sound/usb/6fire/firmware.c
-clean_blob sound/usb/6fire/firmware.c
-clean_kconfig sound/usb/Kconfig SND_USB_6FIRE
-clean_mk CONFIG_SND_USB_6FIRE sound/usb/6fire/Makefile
-
-#######
-# SOC #
-#######
-
-announce KEYSTONE_NAVIGATOR_QMSS - "Keystone Queue Manager Sub System"
-reject_firmware drivers/soc/ti/knav_qmss_queue.c
-clean_blob Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
-clean_kconfig drivers/soc/ti/Kconfig KEYSTONE_NAVIGATOR_QMSS
-clean_mk CONFIG_KEYSTONE_NAVIGATOR_QMSS drivers/soc/ti/Makefile
-
-#################
-# Documentation #
-#################
-
-announce Documentation - "non-Free firmware scripts and documentation"
-clean_blob Documentation/dvb/avermedia.txt
-clean_blob Documentation/dvb/opera-firmware.txt
-clean_blob Documentation/sound/alsa/ALSA-Configuration.txt
-clean_blob Documentation/sound/oss/MultiSound
-clean_blob Documentation/sound/oss/PSS
-clean_blob Documentation/sound/oss/PSS-updates
-clean_blob Documentation/sound/oss/README.OSS
-clean_file Documentation/dvb/get_dvb_firmware
-clean_file Documentation/video4linux/extract_xc3028.pl
-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
diff --git a/helpers/DATA/linux-lts-vivid/deblob-check b/helpers/DATA/linux-lts-vivid/deblob-check
deleted file mode 100644
index 40828e254..000000000
--- a/helpers/DATA/linux-lts-vivid/deblob-check
+++ /dev/null
@@ -1,8246 +0,0 @@
-#! /bin/sh
-
-# deblob-check version 2015-02-01
-# Inspired in gNewSense's find-firmware script.
-# Written by Alexandre Oliva <lxoliva@fsfla.org>
-
-# Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer
-# versions.
-
-# Copyright 2008-2015 Alexandre Oliva <lxoliva@fsfla.org>
-#
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-
-# usage: deblob-check [-S] [-v] [-v] [-s S] [--reverse-patch] \
-#        [--use-...|--gen-flex] [-lDdBbCcXxPpFftVh?H] \
-#        *.tar* patch-* [-i prefix/] *.patch *.diff...
-
-# Look for and report too-long undocumented sequences of numbers
-# (generally blobs in disguise) in source files, as well as requests
-# for loading non-Free firmware.
-
-# The order of command line flags is significant.  Flags given out of
-# the order above won't be handled correctly, sorry.
-
-# -s --sensitivity: Specifies the number of consecutive integral or
-#		character constants that trigger the blob detector.
-#	        Must be followed by a blank and a number.
-
-#    --reverse-patch: Test the removed parts of a patch, rather than
-#		the added ones.
-
-#    --use-awk: Choose the internal GNU awk script for the bulk of the
-#		work.  This is the default option, if GNU awk is found.
-#		The awk interpreter is named gawk, unless AWK is set.
-
-#    --use-sed: Choose the internal GNU sed script for the bulk of the
-#		work.  This is the default option, if GNU awk is not
-#		found.
-
-#    --use-python: Choose the internal python script.  This is not
-#		recommended, because the regular expressions we use
-#		invoke exponential behavior in the python engine.
-
-#    --use-perl: Choose the internal perl script.  This is not
-#		recommended, because our regular expressions exceed
-#		some limits hard-coded into perl.
-
-#    --save-script-input: Save the input that would have been fed to
-#		any of the engines above.
-
-#    --gen-flex: Generate a flex input file with all known blob and
-#		false positive patterns.  It would have been a fast
-#		regular expression processor if only the flex program
-#		completed in reasonable time.
-
-
-# The default sensitivity is 32 constants.
-
-# The sensitivity, if present, must be the first option.  The action
-# selection, if present, must be the first argument, except for the
-# sensitivity and verbosity.
-
-# The default can be overridden with one of:
-
-# -l --list-blobs: list files that contain sequences that match the
-#		blob detector test and that are not known to be false
-#		positives.  This is the default option.
-
-# -d --deblob --mark-blobs: print the processed input, replacing
-#		sequences that match the blob detector test and that
-#		are NOT known to be false positives with
-#		/*(DEBLOBBED)*/.
-
-# -D --cat: print the processed input, as it would have been fed to
-#		the blob detector script.  Use -S to save the sed
-#		script used to process it, and search for `sedcat:' in
-#		comments to locate the relevant adaptation points.
-
-# -b --print-marked-blobs: like -d, but print only the matching
-#		sequences.
-
-# -B --print-blobs: like -b, but do not deblob the sequences.
-
-# -c --print-marked-blobs-with-context: like -b, but try to maximize
-#		the context around the blobs.  This maximization will
-#		sometimes disregard known false positives, if they
-#		happen to be contained within the extended match.
-#		This is probably an indication that the false positive
-#		matching rule could be improved.
-
-# -C --print-blobs-with-context: like -B, but try to maximize the
-#		context around the blobs.
-
-# -X --print-all-matches: print all blobs, be they known false
-#		positives or actual blobs.
-
-# -x --list-all-matches: list files that contain sequences that appear
-#		to be blobs, be they known false positives or not.
-
-# -p --mark-false-positives: print the processed input, replacing
-#		sequences that match the blob detector test, even those
-#		known to be false positives, with /*(DEBLOBBED)*/.
-
-# -P --list-false-positives: list files that contain false positives.
-
-# -f --print-marked-false-positives: like -p, but print only the
-#		matching sequences.
-
-# -F --print-false-positives: like -f, but do not deblob the sequences.
-
-# -t --test: run (very minimal) self-test.
-
-# -V --version: print a version number
-
-# -h -? -H --help: print short or long help message
-
-
-# debugging options:
-
-# -S --save-scripts: save scripts and temporary files.
-
-# -v --verbose: increase verbosity level, for internal debugging.  May
-#		be given at most twice.
-
-
-# file options:
-
-# --: Don't process command-line options any further.  All following
-#		arguments are taken as filenames.
-
-# -i --implied-prefix --prefix: prepend the given prefix to each filename
-#		listed after this option, when configuring false positives
-#		and negatives.
-
-# *.tar*: iterate over all files in the named tar file.
-
-# *.patch, patch-*, *.diff: Look for blobs in the [ +] parts of the
-# 		*patch, unless --reverse-patch is given, in which case
-# 		the [ -] parts will be used.
-
-# Anything else is assumed to be a source file.
-
-# *.gz | *.bz2 | *.xz | *.lz: Decompress automatically.
-
-
-# The exit status is only significant for the --list options: it will
-# be true if nothing was found, and false otherwise.
-
-: # Mark the end of the help message.
-
-# TODO:
-
-# - Improve handling of command-line arguments, so as to not make the
-# order relevant.
-
-# - Add an option for the user to feed their own false positive
-# patterns.
-
-# - Add support to recognize known blobs (or other non-Free
-# signatures, really), to speed up the scanning of files containing
-# blobs, and to avoid attempts to disguise blobs.
-
-# - Factor out the code in the various print_* and list_* parts of the
-# sed script, at least in the shell sources.  Make sure they're all
-# included and expanded in a saved --cat script though.
-
-# - Add support for file name tagging in patterns, such that blobs or
-# false positives are recognized only when handling the specific
-# filename, be it stand-alone, as part of a patch or a tarball.  This
-# should help avoid recognition of actual blobs as false positives
-# just because there's a symbol with a different name elsewhere.
-
-#   It is convenient that the patterns provided by the user to
-# recognize file names can be empty (for backward compatibility), but
-# this should ideally be phased out in favor of more precise matches.
-# It's important that files can be recognized with leading tarball or
-# patch names, that the filename used within the tarball contain
-# leading garbage, and even that a partial pathname be recognizable
-# (say recognize drivers/net/whatever.c when the input file is named
-# ../net/whatever.c).
-
-#   Rather than using regular expressions to recognize multiple files
-# it's convenient (but not quite essential) that filename patterns be
-# specifiable as regular expressions, rather than simple filenames,
-# but there are other ways around this.
-
-#   Maintaining begin/end markers in a stack-like fashion as part of
-# the processed stream, and using the names in them as (optional) part
-# of the recognition patterns, would enable us to do it.
-
-#   Introducing annotations next to the false positives (and recognized
-# blobs) as an early part of the process may speed things up and
-# enable fast processing, but how to introduce the annotations quickly
-# in the first place?  Given patterns such as
-
-#   \(\(file1\)\(.*\)\(pat1\)\|\(file2\)\(.*\)\(pat2\)\|...\)
-
-# how do we get sed to introduce a marker that contains file2 right
-# before or right after pat2, without turning a big efficient regexp
-# into a slowish sequence of s/// commands?
-
-# - Re-check and narrow false-positive patterns to make sure they
-# apply only to the relevant content.
-
-# - Scripting abilities, so as to be able to automate the removal of
-# source files or of blobs from source files in a tarball without
-# having to extract the entire tarball (as in tar --update/--delete)
-# would be nice.  Carrying over removed files automatically into
-# patches would also be great, and this sort of script would be
-# perfect to document what has been done to a tarball plus a set of
-# patches.  Something like deblob.script:
-#
-#   tarball linux-2.6.24.tar.bz2
-#   delete net/wireloss/freedom.c drivers/me/crazy.c
-#   deblob include/linux/slab-blob-kfree.h
-#   deconfig drivers/char/drm DRM_IS_BAD
-#
-#   patch patch-2.6.25-rc7.bz2
-#   delete arch/power/over/you.c
-
-# such that the deletes from an earlier file would carry over into the
-# subsequent ones, and new tarballs and patch files would be generated
-# with the libre- prefix in their basename, and the xdeltas between
-# the original files and the modified files would be minimal, and
-# redundant with this script and the input script while at that.
-
-# - Improve documentation of the code.
-
-# - Write a decent testsuite.
-
-# - Insert your idea here. :-)
-
-# Yeah, lots of stuff to do.  Want to help?
-
-# This makes it much faster, and mostly immune to non-ASCII stuff, as
-# long as a 8-bit-safe sed is used.  Probably a safe assumption these
-# days.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-rm="rm -f"
-
-for echo in 'echo' 'printf %s\n'; do
-  case `$echo '\nx'` in
-  '\nx') break;;
-  esac
-done
-case `$echo '\nx'` in
-'\nx') ;; *) echo Cannot find out what echo to use >&2; exit 1;;
-esac
-
-for echo_n in "echo -n" "printf %s"; do
-  case `$echo_n '\na'; $echo_n '\nb'` in
-  '\na\nb') break;;
-  esac
-done
-case `$echo_n a; $echo_n b` in
-'ab') ;; *) echo Cannot find out an echo -n equivalent to use >&2; exit 1;;
-esac
-
-case $1 in
---save-scripts | -S)
-  shift
-  rm="echo preserving"
-  ;;
-esac
-
-# Choose verbosity level for sed script debugging and performance
-# analysis.
-case $1 in
---verbose | -v)
-  shift
-  case $1 in
-  --verbose | -v)
-    shift
-    v="i\\
-:
-p
-i\\
-"
-    vp="2"
-    ;;
-  *)
-    v="P;i\\
-"
-    vp="1"
-    ;;
-  esac
-  ;;
-*)
-  v="# "
-  vp="0"
-  ;;
-esac
-
-sens=31 # 32 - 1
-case $1 in
---sensitivity | -s)
-  sens=$2;
-  shift 2 || exit 1
-
-  if test "$sens" -gt 0 2>/dev/null; then
-    :
-  else
-    echo invalid sensitivity: $sens >&2
-    exit 1
-  fi
-
-  sens=`expr $sens - 1`
-  ;;
-esac
-
-reverse_patch=false
-case $1 in
---reverse-patch)
-  reverse_patch=:
-  shift;
-  ;;
-esac
-
-prefix=/
-case $1 in
---implied-prefix | --prefix| -i)
-  prefix=$2
-  case $prefix in
-  /*/) ;;
-  */) prefix=/$prefix ;;
-  /*) prefix=$prefix/ ;;
-  *) prefix=/$prefix/ ;;
-  esac
-  shift 2 || exit 1
-  ;;
-esac
-
-test_mode=false
-
-name=deblob-check
-
-set_eqscript_main () {
-  $set_main_cmd "$@"
-}
-
-set_eqscript_cmd () {
-  set_eqscript_main "list_blob"
-}
-
-set_sed_cmd () {
-  set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-}
-
-set_flex_cmd () {
-  set_flex_main
-}
-
-set_save_script_input_cmd () {
-  set_save_script_input_main
-}
-
-set_cmd=set_eqscript_cmd
-if (${PYTHON-python} --version) > /dev/null 2>&1; then
-  # Python will exhibit exponential behavior processing some regular
-  # expressions, but we may have already fixed them all.  (see
-  # http://swtch.com/~rsc/regexp/regexp1.html for details)
-  set_main_cmd=set_python_main
-elif (${AWK-gawk} --re-interval --version) > /dev/null 2>&1; then
-  # GNU awk works fine, but it requires --re-interval to accept regexp
-  # ranges, which we rely on to match blobs.  We could expand the blob
-  # on our own, but, yuck.
-  set_main_cmd=set_awk_main
-elif (${PERL-false} --version) > /dev/null 2>&1; then
-  # Don't choose perl by default.  Besides the potential for
-  # exponential behavior, we exceed some internal recursion limits.
-  set_main_cmd=set_perl_main
-else
-  # Sed takes GBs of RAM to compile all the huge regexps in the sed
-  # script we generate with all known false positives and blobs in
-  # Linux.  However, it is somewhat faster than GNU awk and even
-  # python for long runs.
-  # Try it: deblob-check --use-sed linux-2.6.32.tar.bz2
-  set_cmd=set_sed_cmd
-fi
-
-case $1 in
---use-python)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_python_main;
-  ;;
-
---use-perl)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_perl_main;
-  ;;
-
---use-awk)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_awk_main;
-  ;;
-
---use-sed)
-  shift;
-  set_cmd=set_sed_cmd;
-  ;;
-
---gen-flex)
-  shift;
-  set_cmd=set_flex_cmd;
-  ;;
-
---save-script-input)
-  shift;
-  set_cmd=set_save_script_input_cmd;
-  ;;
-esac
-
-case $1 in
---version | -V)
-  ${SED-sed} -e '/^# '$name' version /,/^# Written by/ { s/^# //; p; }; d' < $0
-  exit 0
-  ;;
-
--\? | -h)
-  ${SED-sed} -n -e '/^# usage:/,/# -h/ { /^# -/,/^$/{s/^# \(-.*\):.*/\1/p; d; }; s/^\(# \?\)\?//p; }' < $0 &&
-  echo
-  echo "run \`$name --help | more' for full usage"
-  exit 0
-  ;;
-
---help | -H)
-  ${SED-sed} -n -e '/^# '$name' version /,/^[^#]/ s/^\(# \?\)\?//p' < $0
-  exit 0
-  ;;
-
---test | -t)
-  test_mode=:
-  ;;
-
---mark-false-positives | -p)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_both" "p" "b list_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = without_falsepos"
-  }
-  ;;
-
---print-marked-false-positives | -f)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_matches" "" "b print_marked_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_falsepos = print_falsepos"
-  }
-  ;;
-
---print-false-positives | -F)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_matches" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_falsepos"
-  }
-  ;;
-
---deblob | --mark-blobs | -d)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_blobs" "p" "p"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---cat | -D)
-  shift;
-  set_sed_cmd () {
-    set_sed_main \
-      "# sedcat: Actual blob detected, but there may be false positives." \
-      "# sedcat: No blob whatsoever found." \
-      "# sedcat: False positives found." \
-      "p
-d
-# sedcat: Just print stuff, remove this line to run the actual script."
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---print-marked-blobs | -b)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs | -B)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob"
-  }
-  ;;
-
---print-marked-blobs-with-context | -c)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs-with-context | -C)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = print_blob"
-  }
-  ;;
-
---list-false-positives | -P)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_falsepos"
-  }
-  ;;
-
---list-all-matches | -x)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_blob = list_falsepos"
-  }
-  ;;
-
---print-all-matches | -X)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_both" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos"
-  }
-  ;;
-
-*)
-  case $1 in
-  --list-blobs | -l) shift;;
-  esac
-  case $1 in
-  -- | --implied-prefix | --prefix | -i) ;;
-  -*)
-    if test ! -f "$1"; then
-      echo "$name: \`$1' given too late or out of the proper sequence." >&2
-      echo "$name: The order of arguments is significant, see the usage." >&2
-      exit 1
-    fi
-    ;;
-  esac
-  ;;
-
-esac
-
-case $1 in
---)
-  sawdashdash=t
-  shift;;
-esac
-
-if $test_mode; then
- allpass=:
- for tool in awk perl python sed; do
-  echo testing $tool...
-
-  targs="-s 4 -i /deblob-check-testsuite/ --use-$tool"
-
-  pass=:
-
-
-  # Exercise some nasty inputs to see that we
-  # recognize them as blobs with full context.
-  test="positive context"
-  for string in \
-    "1,2,3,4" \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-    ".long 1,2
-     .long \$3,\$4" \
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-    "= {
-blob(
-)
-accept(
-)
-1, 2, 3, 4
-}" \
-  ; do
-    case `echo "$string" | $0 $targs -C` in
-    "::: - :::
-$string") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we do not recognize these as blobs.
-  test=negative
-  for string in \
-    "#define X { 1, 2 }
-#define Y { 3, 4 }" \
-    " 0x00, 0x00, 0x00 " \
-    "accept(1, 2, 3,
-4, 5, 6)" \
-  ; do
-    case `echo "$string" | $0 $targs` in
-    "") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we print only the lines with blobs.
-  test="only blob"
-  odd=:
-  for string in \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-	"1, 0x2, 03, L'\x4'" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long 1,2
-     .long \$3,\$4" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { 1, 2, \\
-		 3, 4, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   0x4c00c000, 0x00000000, 0x00060000, 0x00000000," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6, 7, 8;
-9, 10, 11" \
-      "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-::: - :::
-1, 2, 3, 4; 5, 6, 7, 8;" \
-\
-    "= {
-blob()
-accept()
-1, 2, 3, 4
-}" \
-	"blob()
-::: - :::
-1, 2, 3, 4" \
-\
-    "a blobeol y
-x" \
-	"a blobeol y
-x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -B` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # Make sure we deblob only the blobs.
-  test="deblobs"
-  odd=:
-  for string in \
-    "= { 1, 0x2, 03, L'\x4' }" \
-	"= { /*(DEBLOBBED)*/' }" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x/*(DEBLOBBED)*/\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long /*(DEBLOBBED)*/" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { /*(DEBLOBBED)*/, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   /*(DEBLOBBED)*/," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6; 7, 8, 9, 10;
-9, 10, 11" \
-      "/*(DEBLOBBED)*/
-::: - :::
-/*(DEBLOBBED)*/; 5, 6; /*(DEBLOBBED)*/;" \
-\
-    "= {
-accept() blob() x blob(
-) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "= {
-accept() blob() x blob(
-w) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "a blobeol y
-x" \
-	"a /*(DEBLOBBED)*/x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -b` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # How did we do?
-  if $pass; then
-    echo success for $tool
-  else
-    allpass=$pass
-  fi
- done
- $allpass
- exit
-fi
-
-# Call addx as needed to set up more patterns to be recognized as
-# false positives.  Takes the input filename in $1.
-
-set_except () {
-  blob "$blobseq"
-  # We leave out the initial and final letters of request_firmware so
-  # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
-  blobna 'equest_firmwar'
-  blobna 'equest_ihex_firmwar'
-  blobna 'MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\([ 	\n]*MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\)*'
-  blobna 'DEFAULT_FIRMWARE'
-  blobna '\([.]\|->\)firmware[ 	\n]*=[^=]'
-  blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\|dlmem\)["]'
-  # Ideally we'd whitelist URLs that don't recommend non-Free
-  # Software, but there are just too many URLs in Linux, and most are
-  # fine, so we just blacklist when we find undesirable URLs.
-  # Please report if you find any inappropriate URL in Linux-libre
-  # deblobbed documentation, sources or run-time log messages.
-  # blobna '\(f\|ht\)tp:[/]\([/]\+[^/ \n ]\+\)\+'
-
-  case $prefix$1 in
-  */*linux*.tar* | */*kernel*.tar* | */*linux-*.*/*)
-    # false alarms, contain source
-    # drivers/net/wan/wanxlfw.inc_shipped -> wanxlfw.S
-    accept 'static[ ]u8[ ]firmware\[\]=[{][\n]0x60,\(0x00,\)*0x16,\(0x00,\)*\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*[\n]0x23,0xFC,0x00,0x00,0x00,0x01,0xFF,0xF9,0x00,0xD4,0x61,0x00,0x06,0x74,0x33,0xFC,\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*0x00[\n][}][;]'
-    # drivers/usb/serial/xircom_pgs_fw.h -> xircom_pgs.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]xircom_pgs_firmware\[\][ ]='
-    # drivers/usb/serial/keyspan_pda_fw_h -> keyspan_pda.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]keyspan_pda_firmware\[\][ ]='
-    # arch/m68k/ifpsp060/*.sa -> src/*.s
-    accept '[	]\.long[	]0x60ff0000,0x02360000,0x60ff0000,0x16260000[\n]'"$sepx$blobpat*"
-    accept '[	]\.long[	]0x60ff0000,0x17400000,0x60ff0000,0x15f40000[\n]'"$sepx$blobpat*"
-    # arch/powerpc/platforms/cell/spufs/spu_save_dump.h_shipped -> spu_save.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_save_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped -> spu_restore.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_restore_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # drivers/net/ixp2000/ixp2400_tx.ucode -> ixp2400_tx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    # drivers/net/ixp2000/ixp2400_rx.ucode -> ixp2400_rx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-
-
-    # checked:
-
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    accept '__clz_tab:[\n][	]\.byte[	]0\(,[0-5]\)\+'"$sepx$blobpat*" arch/sparc/lib/divdi3.S
-    accept 'PITBL:[\n][ ][ ]\.long[ ][ ]0xC0040000,0xC90FDAA2,'"$blobpat*" arch/sparc/lib/divdi3.S
-    accept '\(0x[0F][0F],\)\+\\[\n]\(\(0x[0F][0F],\)\+\\[\n]\)*\(0x[0F][0F],\)\+0x00' arch/m68k/mac/mac_penguin.S
-    accept '\.lowcase:[\n][	]\.byte[ ]0x00\(,0x0[1-7]\)\+'"$sepx$blobpat*"'$' arch/s390/kernel/head.S
-    accept '_zb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]0\(,[123],0\)\+,4'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '_sb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]8\(,0,[123]\)\+,0'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]cpu_745x\[2\]\[16\][ ]=' arch/ppc/platforms/ev64260.c
-    initnc 'const[ ]unsigned[ ]char[ ]__flsm1_tab\[256\][ ]=' arch/alpha/lib/fls.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    initc '[	]static[ ]int[ ][ ][ ][ ][ ][ ]init_values_b\[\][ ]=' sound/oss/ad1848.c
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set2_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix\.txt|Documentation/serial/specialix\.txt'
-    accept '[ ][ ][ ][ ][ ][ ][ ][ ][ ]:[ ][ ][ ]3600000[ ][ ][ ]3400000[ ][ ][ ]3200000[ ][ ][ ]3000000[ ][ ][ ]2800000[ ]' Documentation/cpu-freq/cpufreq-stats.txt
-    accept '00[ ]00[\n]64[ ]01[\n]8e[ ]0b[\n][\n][0-9a-f \n]*fe[ ]fe' 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0f[ ]00[ ]08[ ]08[ ]64[ ]00[ ]0a[ ]00[ ]-[ ]id[ ]0[\n]'"$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept 'default[ ]nvram[ ]data:'"$sepx$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0x0458[ ][ ][ ][ ][ ]0x7025[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    accept '[ ][ ][(]gdb[)][ ]x[/]100x[ ][$]25[\n][ ][ ]0x507d2434:[ ][ ][ ][ ][ ]0x507d2434[ ][ ][ ][ ][ ][ ]0x00000000[ ][ ][ ][ ][ ][ ]0x08048000[ ][ ][ ][ ][ ][ ]0x080a4f8c'"$sepx$blobpat*" Documentation/uml/UserModeLinux-HOWTO.txt
-    accept '[ ][ ][ ][ ][ ][ ]1[ ][ ]0[ ][ ]0[ ][ ]0[ ][ ]0x308'"$sepx$blobpat*" Documentation/isdn/README.inc
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$' Documentation/sched-stats.txt
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync.c|net/sctp/sm_make_chunk.c|include/linux/scpt.h'
-    accept '[ ][*][ ][ ]1[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0' arch/x86/lguest/boot.c
-    ocomment '[	][/][*][ ]Configure[ ]the[ ]PCI[ ]bus[ ]bursts[ ]and[ ]FIFO[ ]thresholds.' drivers/net/fealnx.c
-    ocomment '[/][*][ ]the[ ]original[ ]LUT[ ]values[ ]from[ ]Alex[ ]van[ ]Kaam[ ]<darkside@chello\.nl>' drivers/hwmon/via686a.c
-    initc 'static[ ]const[ ]unsigned[ ]char[ ]init\[\][ ]=[ ][{][^;]*MODE=0[ ][;].*SAA_7114_NTSC_HSYNC_START' drivers/media/video/saa7114.c
-
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    # initnc '[ 	]*\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ \n	]*=[ ][{"]' 'crypto/\(tcrypt\|testmgr\).h'
-
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/delkin_cb\.c\|drivers/ide/pci/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]u8[ ]tas3004_treble_table\[\][ ]=' sound/aoa/codecs/tas-basstreble.h
-
-    # This file contains firmwares that we deblob with high
-    # sensitivity, so make sure the sequences of numbers that are not
-    # blobs are not deblobbed.  FIXME: we should have patterns to
-    # recognize the blobs instead.
-    defsnc '[	]static[ ]const[ ]u32[ ]test_pat\[4\]\[6\][ ]=' drivers/net/tg3.c
-    accept "[	][}]\\(,\\?[ ]mem_tbl_5\\(70x\\|705\\|755\\|906\\)\\[\\][ ]=[ ][{]$sepx$blobpat*$sepx[}]\\)*[;]" drivers/net/tg3.c
-
-    # end of generic checked expressions.
-    # version-specific checked bits start here
-
-    # removed in 2.6.28
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    # removed in 2.6.24
-    accept "[ ]Psize[ ][ ][ ][ ]Ipps[ ][ ][ ][ ][ ][ ][ ]Tput[ ][ ][ ][ ][ ]Rxint[ ][ ][ ][ ][ ]Txint[ ][ ][ ][ ]Done[ ][ ][ ][ ][ ]Ndone[\\n][ ]---------------------------------------------------------------\\([\\n][ 0-9]\\+\\)\\+"'$'
-    initnc 'static[ ]u_short[ ]ataplain_map\[NR_KEYS\][ ]__initdata[ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]char[ ]invert5\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]alpa2target\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]target2alpa\[\][ ]='
-    oprepline '#define[ ]INIT_THREAD[ ][{0},]\+[ 	]*\\[\n][ 	]*[{0},]\+'
-    initnc 'static[ ]uint[ ]tas300\(1c\|4\)_\(master\|mixer\|treble\|bass\)_tab\[\]='
-    initnc 'static[ ]short[ ]dmasound_[au]law2dma16\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]DACVolTable\[101\][ ]='
-
-    # removed in 2.6.23
-    initnc 'static[ ]const[ ]UQItype[ ]__clz_tab\[\][ ]=' arch/arm26/lib/udivdi3.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]scale\[101\][ ]=' sound/oss/opl3sa2.c
-    initnc '[}][ ]syncs\[\][ ]=' drivers/scsi/53c7xx.c
-    initnc 'genoa_md:'"$sepx$blobpat*"'[\n][	]\.ascii[	]["]Genoa["]' arch/i386/boot/video.S
-
-    # removed in 2.6.22
-    initnc 'Vendor[ ]ID[ ][ ]Product[ ]ID[\n]-\+[ ][ ]-\+[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    defsnc 'static[ ]short[ ][au]law2dma16\[\]' arch/ppc/8xx_io/cs4218_tdm.c
-    defsnc '[	]static[ ]const[ ]char[ ]minimal_ascii_table\[\]' drivers/ieee1394/csr1212.c
-    defsnc 'static[ ]u16[ ]key_map[ ]\[256\][ ]=' drivers/media/dvb/ttpci/av7110_ir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]gf64_inv\[64\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]short[ ]err_pos_lut\[4096\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]testdata\[TESTDATA_LEN\][ ]=' fs/jffs2/comprtest.c
-
-    # added in 2.6.25
-    accept "%canned_values[ ]=[ ][(][\\n][	]\\([0-9]\\+[ ]=>[ ]\\[[ 	\\n]\\+\\(\\([0-9]\\+\\|\\'0x[0-9a-f]\\+\\'\\),[ 	\\n]*\\)*\\]\\(,[ ]\\|[\\n]\\)\\)*[)][;]"
-
-    # from 2.6.25-rc* patches
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-
-    # new in 2.6.26
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf24\(13\|25\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-
-    # new in 2.6.27
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca561\|rev72a\)_init_data3\?\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]\(__\)\?u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_\(agc\|ofdm\|power_cck\(_ch14\)\?\)\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' Documentation/bt8xxgpio.txt
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]\(UINT32\|u32\)[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_b\[\][ ]=' drivers/net/wireless/rt2x00/rt2400pci.c
-
-    # request_firmware matches for 2.6.28
-    accept 'D:[ ]Firmware[ ]loader[ ][(]request_firmware[)]' CREDITS
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept 'This[ ]driver[ ]requires[ ]a[ ]patch[ ]for[ ]firmware_class[^\n]*[\n]request_firmware_nowait[ ]function\.' Documentation/dell_rbu.txt
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept 'Still,[ ]there[ ]are[ ]kernel[ ]threads[ ]that[ ]may[ ]want.*For[ ]example,[ ]if[ ]request_.*_firmware[(][)][ ]will[ ]fail[ ]regardless' Documentation/power/freezing-of-tasks.txt
-    accept 'Also,[ ]there[ ]may[ ]be[ ]some[ ]operations,.*calling[ ]request_firmware[(][)][ ]from[ ]their[ ].resume[(][)][ ]routines' Documentation/power/notifiers.txt
-    accept 'There[ ]is[ ]an[ ]USB[ ]interface[ ]for[ ]downloading[/]uploading.*request_firmware[ ]interface\.' Documentation/video4linux/si470x.txt
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    accept 'config[ ]FIRMWARE_IN_KERNEL.*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware:[ ]-[ ]send[ ]firmware[ ][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[^{]*[\n][{]\([\n]\+[^\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][	]return[ ]-EINVAL[;][\n][}]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-
-    accept 'static[ ]inline[ ]int[ ]request_ihex_firmware\?[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' include/linux/ihex.h
-    ocomment '[/][*][ ]Optional[ ]firmware\([^\n]*[\n][ ][*]\)*[^\n]*[ ]MODULE_FIRMWARE[(][)]'
-    oprepline '#define[ ]MODULE_FIRMWARE[(]_firmware[)]' include/linux/module.h
-    accept '[ ][*][ ]Sample[ ]code[ ]on[ ]how[ ]to[ ]use[ ]request_firmware[(][)][ ]from[ ]drivers\.' samples/firmware_class/firmware_sample_driver.c
-    accept '[	]\(retval\|error\)[ ]=[ ]request_firmware\(_nowait\)\?[(][^;]*["]sample_driver_fw["],[^;]*[)][;]' samples/firmware_class/firmware_sample_driver.c
-    ocomment '[	][/][*][ ]request_firmware[ ]blocks[ ]until[ ]userspace[ ]finished' samples/firmware_class/firmware_sample_driver.c
-    accept '[	][	][ 	]*["][ ]request_firmware_nowait[ ]failed' samples/firmware_class/firmware_sample_driver.c
-
-    # We used to remove these in early versions of Linux-libre.
-    # They're now believed to be mere initialization data, rather than
-    # code disguised as such, and they're not long enough so as to
-    # render the software non-Free.
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\|IPA_PDU_HEADER\|\(READ\|WRITE\)_CCW\)\[\][ ]=' drivers/net/qeth_core_mpc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]\(sync\|magic[0-3]\)_data\[\][ ]=' arch/sh/boards/mach-migor/lcd_qvga.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ov772x_magic\[\][ ]=' arch/sh/boards/mach-migor/setup.c
-    defsnc 'static[ ]struct[ ]chips_init_reg[ ]chips_init_[sgacfx]r\[\][ ]=' 'drivers/video/\(asiliant\|chips\)fb.c'
-
-    # This one is quite suspicious, but it's small enough (64 bytes
-    # total) that it's believable that it could be actual source code.
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-
-    # Hunting down non-Free firmware-loading code and instructions.
-    # Firmware names are to be caught anywhere.
-
-    # 2.6.26 but not later
-
-    blobname 'atmsar1[12]\.\(x\|start\|regions\|data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|ambassador\.c\)'
-    blob '#\(define\|include\)[ ]UCODE2\?[(][^\n]*' drivers/atm/ambassador.c
-    blob 'static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]' drivers/atm/ambassador.c
-    blob '\(#\(ifdef[ ]AMB_NEW_MICROCODE\|else\|endif\)[\n]#\(define\|include\)[ ]UCODE2\?[(][^\n]*[\n]\)\+\([\n]*static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]\)*' drivers/atm/ambassador.c
-
-    blobname '\(pca\|sba\)200e\(_ecd\)\?\.\(data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|fore200e\(_mkfirm\)\?\.c\)'
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*PCA-200E[ ]firmware[ ][*][/]' drivers/atm/fore200e_mkfirm.c
-    blobna '_fore200e_\(pca\|sba\)_fw_\(data\|size\)' drivers/atm/fore200e.c
-    blob '#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\([\n]\+#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\)*' drivers/atm/fore200e.c
-
-    # 2.6.27 but not later
-
-    blob 'cas_saturn_patch_t[ ]cas_saturn_patch\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/cassini.h
-    accept '[	][ ][ ]firmware[ ]files[ ]--[ ]the[ ]same[ ]names[ ]which[ ]appear[ ]in[ ]MODULE_FIRMWARE[(][)]' drivers/base/Kconfig
-
-    # 2.6.28 or earlier
-
-    blobname 'atmsar11\.fw' drivers/atm/ambassador.c
-
-    blob '\(#ifdef[ ]__\(LITTLE\|BIG\)_ENDIAN[\n]\)\?#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\([\n]#else[\n]#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\)*\([\n]#endif\)\?' drivers/atm/fore200e.c
-    blobna 'sprintf[(][^;]*fore200[^;]*FW_EXT[^;]*[)][;]' drivers/atm/fore200e.c
-    blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]\?' drivers/atm/fore200e.c
-    blobna 'The[ ]supplied[ ]firmware[ ]images.*http:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
-
-    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[ ]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]\+[}]\)\([\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]*\)*[^\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]*[\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]_\(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}][^\n]*\)*cp_microcode[^\n]*\([\n]\+[^\n}][^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    blobna 'Please[ ]use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
-    blob 'To[ ]extract[ ]the[ ]firmware[^\n]*Opera[ ]DVB-S1[ ]USB-Box.*[/]lib[/]firmware[/][ ]\.' Documentation/dvb/opera-firmware.txt
-    blobname '\(dvb-usb-opera[^\n]*\.fw\|2830S[^\n]*2\.sys\)' Documentation/dvb/opera-firmware.txt
-    blob 'Getting[ ]the[ ]Firmware\([\n][^\n]\+\)*' Documentation/dvb/ttusb-dec.txt
-
-    blob '[/][*][\n 	]*File[ ]automatically[ ]generated[ ]by[ ]createinit\.py[ ]using[ ]data[\n 	]*extracted[ ]from[ ]AF05BDA\.sys.*[}][;]' drivers/media/dvb/dvb-usb/af9005-script.h
-    blob '#include[ ]["]af9005-script\.h["]' drivers/media/dvb/dvb-usb/af9005-fe.c
-    blobna '[\n][	]scriptlen[ ]=[ ]sizeof[(]script[)][^;]*[;][\n][	]for[^{]*scriptlen[^{]*[{][^}]*[^\n	}]' drivers/media/dvb/dvb-usb/af9005-fe.c
-
-    accept 'struct[ ]\(sp8870\|tda1004x\)_config[\n][{][^}]*[(][*]request_firmware[)][^}]*[\n][}][;]' 'drivers/media/dvb/frontends/\(sp8870\|tda1004x\)\.h'
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*get_dvb_firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n]\(#define[ ]\(\([^\n 	]*_DEFAULT\|NONFREE\)_FIRMWARE\|["][^"]*["]\)[ ]\([^\n]\|[\\][\n]\)*\|[/][*][(]DEBLOBBED[)][*][/]\)\)*' 'drivers/media/dvb/frontends/\(nxt200x\|or51211\|sp887[0x]\|tda1004[8x]\)\.c'
-    blobname 'dvb-fe-sp8870\.fw' drivers/media/dvb/frontends/sp8870.c
-    blobname 'dvb-fe-tda1004[56]\.fw' drivers/media/dvb/frontends/tda1004x.c
-
-    # This bootcode is actually Free Software under GPLv2, but since it's
-    # being distributed without source code, we're taking it out.
-    blob 'static[ ]u8[ ]bootcode\[\][ ]=[ ][{][^}]*[}][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    blobname 'dvb-ttpci-01\.fw' drivers/media/dvb/ttpci/av7110.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-
-    blobname 'ttusb-budget[/]dspbootcode\.bin' drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-
-    blobname 'cpia2[/]stv0672_vp4\.bin' drivers/media/video/cpia2/cpia2_core.c
-
-    blobname 'dabusb[/]\(firmware\.fw\|bitstream\.bin\)' drivers/media/video/dabusb.c
-
-    blob 'static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\([\n]static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\)*' drivers/net/acenic_firwmare.h
-    blob '#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\([\n]#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\)\+' drivers/net/acenic_firmware.h
-    blob '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Do[ ]not[ ]try[ ]to[ ]clear[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n][	]\)\?ace_clear[^;]*[;][\n]\([^}]*[{][^}]*ace_copy[^}]*tigon2\?Fw[^}]*[}]\)*[\n]\+[	]return[ ]0[;][\n][}]' drivers/net/acenic.c
-    blob 'if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\([\n][	]if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\)*' drivers/net/acenic.c
-
-    blob '#include[ ]["]starfire_firmware\.h["]' drivers/net/starfire.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Load[ ]Rx[/]Tx[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n][	]for[ ][(][^)]*FIRMWARE_[RT]X_SIZE[^)]*[)][\n][	][	]writel[^;]*firmware_[rt]x[^;]*[;]\)\+' drivers/net/starfire.c
-
-    blob 'static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\)*' 'drivers/net/bnx2_fw2\?.h'
-    blob '#include[ ]["]bnx2_fw\.h["][\n][\n]*#include[ ]["]bnx2_fw2\.h["]' drivers/net/bnx2.c
-    blob 'static[ ]void[\n]load_rv2p_fw[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-    blob 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-
-    # init_data_e1h? might actually be just data, but it doesn't
-    # really matter.
-    blob 'static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\)*' drivers/net/bnx2x_init_values.h
-    blob 'static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\([\n][\n]*static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\)*' 'drivers/net/bnx2x_init\(_ops\)\?\.h'
-
-    blobname 'sun[/]cassini\.bin' drivers/net/cassini.c
-
-    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 '\(cxgb3[/]\)\?t3\(fw\|\(%c\|.\)_p\(rotocol_\)\?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]*[/][*][^*]*\([*]\+\([^/*]\|[/][\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
-
-    blob 'static[ ]unsigned[ ]char[ ]__devinitdata[ ]lanai4_\(code\|data\)\[[0-9]*\][ ]=[ ][{][^;]*[}][;]' drivers/net/myri_code.h
-    blob '#include[ ]["]myri_code\.h["]' drivers/net/myri_sbus.c
-    blobna '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_code_off[^;]*[;]\([\n	 ]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_\(code\|data\)_off[^;]*[;]\)*' drivers/net/myri_sbus.c
-
-    blob 'static[ ]u32[ ]s_firmLoad\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/tehuti_fw.h
-    blobna 'bdx_tx_push_desc_safe[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-    blobna 'for[ ][(][^\n]*ARRAY_SIZE[(]s_firmLoad[)][^\n]*[)][\n	 ]*s_firmLoad[^;]*=[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-
-    blob '[ ][*][ ]Firmware[ ]is:[\n][ ][*][	]Derived[ ]from[ ]proprietary[^/]*notice[ ]is[ ]accompanying[ ]it\.[\n][ ][*][/]' drivers/net/tg3.c
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blob '\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*\(static[ ]const[ ]u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\|#if[ ]0\([ ][/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?[\n]\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;][\n]#endif\)\)*' drivers/net/tg3.c
-
-    blob 'static[ ]const[ ]u8[ ]typhoon_firmware_image\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/typhoon-firmware.h
-
-    blobna 'licensed[^\n]*strictly[ ]for[ ]use[^\n]*[\n]*[^\n]*COPS[ ]LocalTalk' 'drivers/net/appletalk/cops_\(ff\|lt\)drv\.h'
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]ffdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ffdrv.h
-    blob 'static[ ]const[ ]unsgined[ ]char[ ]ltdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ltdrv.h
-    blob '#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/net/appletalk/cops.c
-
-    blob 'static[ ]unsigned[ ]char[ ]bits_1200\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam1200.h
-    blob 'static[ ]unsigned[ ]char[ ]bits_9600\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam9600.h
-    blob '#include[ ]["]yam\(96\|12\)00\.h["]\([\n][\n]*#include[ ]["]yam\(96\|12\)00\.h["]\)*' drivers/net/hamradio/yam.c
-
-    blobna 'static[ ]const[ ]u_char[ ]__Xilinx7OD\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/pcmcia/ositech.h
-    blob '#include[ ]["]ositech\.h["]' drivers/net/pcmcia/smc91c92_cs.c
-    blobna '\([/][*][ ]Download[ ]the[ ]Seven[ ]of[ ]Diamonds[ ]firmware[^/]*[*][/][\n	 ]*\)\?for[ ]*[(][^\n]*__Xilinx7OD[^{}]*[{][\n][	 ]*outb[ ]*[(]__Xilinx7OD[^}]*[}]' drivers/net/pcmcia/smc91c92_cs.c
-
-    blob 'static[ ]const[ ]u8[ ]microcode\[\][ ]=[ ][{][^}]*[}][ ]*[;]' drivers/net/tokenring/3c359_microcode.h
-    blob '#include[ ]["]3c359_microcode\.h["]' drivers/net/tokenring/3c359.c
-    blobna 'start[ ]=[ ][(]0xFFFF[ ]-[ ][(]mc_size[)][^;]*[;][\n 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n 	]*printk[(]KERN_INFO[ ]["]3C359:[ ]Uploading[ ]Microcode:[ ]["][)][;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\([\n][ 	]*printk[^\n]*[;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\)*' drivers/net/tokenring/3c359.c
-
-    blobname 'tr_smctr\.bin' drivers/net/tokenring/smctr.c
-
-    blobname 'kaweth[/]\(new\|trigger\)_code\(_fix\)\?\.bin' drivers/net/usb/kaweth.c
-
-
-    blobname '\(agere\|prism\)_\(sta\|ap\)_fw\.bin' 'drivers/net/wireless/\(orinico/\)\?\(orinoco\|fw\)\.c'
-    blobname 'symbol_sp24t_\(prim\|sec\)_fw' 'drivers/net/wireless/\(\(orinico/\)\?orinoco\.c\|spectrum_cs\.c\)'
-
-    blob 'unsigned[ ]short[ ]sbus_risc_code01\[\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]' drivers/scsi/qlogicpti_asm.c
-    blob '#include[ ]["]qlogicpti_asm\.c["]' drivers/scsi/qlogicpti.c
-
-    blob '\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/scsi/advansys.c
-
-    blob '\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc\|fw12\(80e\|160\)i\)_code01\[\][ ]=[ ][{]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code01\[\][ ]=[ ][{][\n]#endif[\n]\)\?[^}]*[}][;]\([\n][\n]*\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc_code\|fw12\(80e\|160\)i\)_length01[ ]=[ ][^;]*[;]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code_length01[ ]=[ ][^;]*[;][\n]#endif\)\?\)\?' 'drivers/scsi/ql1\(04\|2\(8\|16\)\)0_fw\.h'
-
-    blobname 'emi26[/]\(bitstream\|firmware\|loader\)\.fw' drivers/usb/misc/emi26.c
-
-    blobname 'emi62[/]\(bitstream\|midi\|spdif\|loader\)\.fw' drivers/usb/misc/emi62.c
-
-    blobname 'keyspan[/]\(mpr\|usa\(18x\|19\(q[iw]\|w\)\?\|28\(x\(a\|b\)\?\)\?\|49w\(lc\)\?\)\)\.fw' drivers/usb/serial/keyspan.c
-
-    accept '[	][	]fw_name[ ]=[ ]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][;]' drivers/usb/serial/keyspan_pda.c
-    blobna 'fw_name[ ]=[ ][^\n]*\([\n]\+[^\n}][^\n]*\)*\([/][*]KEYSPAN_PDA[*][/]\)\?request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-
-    blobname 'edgeport[/]\(boot\|down\)2\?\.fw' drivers/usb/serial/io_edgeport.c
-    blobname 'edgeport[/]down3\.bin' drivers/usb/serial/io_ti.c
-
-    blobname 'ti_\(usb-\)\?\(%d\|3410\|5052\)\.\(fw\|bin\)' drivers/usb/serial/ti_usb_3410_5052.c
-
-    blobname 'whiteheat\(_loader\(_debug\)\?\)\?\.fw' drivers/usb/serial/whiteheat.c
-
-    blob 'static[ ]struct[ ]BA1struct[ ]BA1Struct[ ]=[ ][{][^;]*[}][;]' sound/pci/cs46xx/cs46xx_image.h
-
-    blob 'static[ ]u32[ ]cwc\(4630\|async\|snoop\)_\(code\|parameter\)\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(4630\|async\|snoop\)\.h'
-    # cwcbinhack appears to have been created by hand.
-    # cwcdma has sources (not verified) in cwcdma.asp.
-    accept 'static[ ]u32[ ]cwc\(binhack\|dma\)_code\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(binhack\|dma\)\.h'
-    blob '#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\([\n][\n]*#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\)*' sound/pci/cs46xx/cs46xx_lib.c
-
-    blobname 'korg[/]k1212\.dsp' sound/pci/korg1212/korg1212.c
-
-    blobname 'ess[/]maestro3_assp_\(kernel\|minisrc\)\.fw' sound/pci/maestro3.c
-
-    blobname 'yamaha[/]ds1e\?_\(ctrl\|dsp\)\.fw' sound/pci/ymfpci/ymfpci_main.c
-
-    blobname 'sb16[/]\(\(a\|mu\)law_main\|ima_adpcm_\(init\|capture\|playback\)\)\.csp' sound/isa/sb/sb16_dsp.c
-
-    blob 'static[ ]const[ ]struct[ ][{][^}]*[}][ ]yss225_registers\[\][ ]__devinitdata[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/yss225.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    blobna 'firmware[ ]=[ ][&]yss225_registers_firmware[;]' sound/isa/wavefront/wavefront_fx.c
-    blob 'static[ ]const[ ]struct[ ]firmware[ ]yss225_registers_firmware[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/wavefront_fx.c
-    blobna '\(ospath[	 ]*-[ ]Pathname[^\n]*ICS2115[^-]*wavefront\.os\|Note:[ ]the[ ]firmware[ ]file[ ]["]wavefront\.os["]\)[^-]*[/]lib[/]firmware\.\([^.]*after[ ]upgrading[ ]the[ ]kernel\)\?' Documentation/sound/alsa/ALSA-Configuration.txt
-    blobname 'wavefront\.os' sound/isa/wavefront/wavefront_synth.c
-
-    blobna 'and[\n]require[ ]the[ ]use[ ]of[^\n]*propr\?ietary[^:]*' Documentation/arm/IXP4xx
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-
-    blobname 'xc\(%d\|[0-9]*\)\.bin' arch/arm/mach-netx/include/mach/xc.h
-    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 'iop_fw_load_[sm]pu' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'int[ ]iop_fw_load_[sm]pu[(]' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept '[	]retval[ ]=[ ]request_firmware[^;]*[&]iop_[sm]pu_device' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'EXPORT_SYMBOL[(]iop_fw_load_[sm]pu[)][;]' arch/cris/arch-v32/drivers/iop_fw_load.c
-
-    accept '[/][*][ ]fake[ ]device[ ]for[ ]request_firmware[ ][*][/]' arch/x86/kernel/microcode_core.c
-
-    blobname 'amd-ucode[/]microcode_amd\.bin' arch/x86/kernel/microcode_amd.c
-
-    blobname 'intel-ucode[/]\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)' 'arch/x86/kernel/microcode\(_intel\)\?\.c'
-
-    blobname 'BCM2033-\(MD\.hex\|FW\.bin\)' drivers/bluetooth/bcm203x.c
-
-    blobname 'bfubase\.frm' drivers/bluetooth/bfusb.c
-
-    blobname 'BT3CPCC\.bin' drivers/bluetooth/bt3c_cs.c
-
-    blobname 'cyzfirm\.bin' drivers/char/cyclades.c
-
-    accept 'MODULE_FIRMWARE[(]["]dsp56k[/]bootstrap\.bin["][)][;]' drivers/char/dsp56k.c
-    blobna 'const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-    accept '[	]const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-
-    blobname 'isi\(6\(08\|\(08\|16\)em\)\|46\(08\|16\)\)\.bin' drivers/char/isicom.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
-    # only issues a firmware request if specifically told to.  It
-    # doesn't require any non-Free firwmare to function, and it
-    # doesn't actually recommend users to perform updates, so I'm
-    # leaving it in.
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    accept '[	]*["]dell_rbu:%s[ ]request_firmware_nowait["]' drivers/firmware/dell_rbu.c
-
-    blobname 'xc3028-v27\.fw' drivers/media/common/tuners/tuner-xc2028.h
-    blobname 'xc3028L-v36\.fw' drivers/media/common/tuners/tuner-xc2028.h
-
-    blobname 'dvb-fe-xc5000-1\.1\.fw' drivers/media/common/tuners/xc5000.c
-
-    blobname '4210\(100[12]\|%4X\)\.sb' drivers/net/irda/irda-usb.c
-    blobna '[/][*][ 	\n*]*[ ]Known[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]*\(STIR421x\|4210\(100[12]\|%4X\)\.sb\)[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/irda/irda-usb.c
-
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobna 'If[ ]the[ ]driver[ ]can[ ]neither[ ]enable[ ]ECRC[^*]*\([*]\+[^/*][^*]*\)*[*]*myri10ge_\(rss_\)\?ethp\?_z8e\.dat[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/myri10ge.c
-
-    blobname 'spider_fw\.bin' drivers/net/spider_net.h
-
-    blobname 'tms380tr\.bin' drivers/net/tokenring/tms380tr.c
-
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    accept '[	]*priv->firmware[ ]=[ ]\(NULL\|new_firmware\)[;]' drivers/net/wireless/atmel.c
-
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname 'pcm5\.fw' drivers/net/wireless/b43/main.c
-    blobna 'b43legacyerr[(][^;]*must[ ]go[ ]to[ ]http[^;]*b43#devicefirmware[^;]*[)][;]' drivers/net/wireless/b43legacy/main.c
-    blobna 'You[ ]must[ ]go[ ]to[^;]*b43#devicefirmware[^;]*[^";)]' drivers/net/wireless/b43/main.c
-    blobna 'http:[/][/]wireless[^ ";)]*b43#devicefirmware' drivers/net/wireless/b43/main.c
-
-    blob '#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\([\n][\n]*#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname 'ipw2100-\(["]\([^"\n]\|[\\][\n]\)*["]\([^"]\|[\\]["]\)*\)\+' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '__stringify[(]IPW2100_FW_MINOR_VERSION[)]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[ ]*Portions[ ]of[ ]ipw2100_\(do_\)\?mod_firmware_load[, 	]*\(ipw2100_\(do_\)\?mod_firmware_load[, 	and\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]ipw2100_mod_firmware_load[(]fw[)][;]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobna 'if[ ][(]IPW2100_FW_MAJOR[^{]*[{][^}]*[	][}]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '["]["][ ]x[ ]["]\.fw["]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-
-    accept '[/][*][ ]Call[ ]this[ ]function[ ]from[ ]process[ ]context[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    blobname 'ipw2200-\(i\?bss\|sniffer\)\.fw' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    accept '[	][	]IPW_ERROR[(]["]%s[ ]request_firmware[ ]failed' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname 'iwlwifi-3945-' drivers/net/iwlwifi/iwl-3945.h
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    accept '#define\([ ]_\?IWL3945_MODULE_FIRMWARE[(]api[)]\)\+' drivers/net/iwlwifi/iwl-3945.h
-    accept '[	][ ][*][ ]request_firmware[(][)][ ]is[ ]synchronous' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\)\.c'
-    blobname 'iwlwifi-4965-' drivers/net/iwlwifi/iwl-4965.c
-    blobname 'iwlwifi-5\(00\|15\)0-' drivers/net/iwlwifi/iwl-5000.c
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\|idx\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'usb8388\(-5\.126\.0\.p5\)\?\.bin' drivers/net/wireless/libertas/if_usb.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*usb8388\(-5\.126\.0\.p5\)\?\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]lbs_pr_err[(]["]request_firmware\([(][)]\)\?[ ]failed' 'drivers/net/wireless/if_\(spi\|usb\)\.c'
-    blobna 'o\.[ ]Copy[ ]the[ ]firmware[ ]image[^\n]*usb8388\([^\n]\|[\n][ 	]*[^ 	\n]\)*' drivers/net/wireless/libertas/README
-    blobna '\[fw_name=usb8388[^]]*\]' drivers/net/wireless/libertas/README
-
-    blobname 'usb8388\.bin' drivers/base/Kconfig
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-
-    blobname 'lbtf_usb\.bin' drivers/net/wireless/libertas_tf/if_usb.c
-
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' '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 'rt2[56]61s\?\.bin' drivers/net/wireless/rt2x00/rt61pci.h
-    blobname 'rt73\.bin' drivers/net/wireless/rt2x00/rt73usb.h
-
-    blobname 'zd1201\(-ap\)\?\.fw' drivers/net/wireless/zd1201.c
-
-    blobname 'zd1211[/]zd1211b\?_\(u\([rb]\|phr\)\?\)\?' drivers/net/wireless/zd1211/zd_usb.c
-
-    # ??? gotta introduce some means to match false-positives
-    # including post context containing blobs, so that the macro name
-    # is not flagged or deblobbed, but the blob name is.
-    # blobna 'PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)'
-    # accept '[	]    PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(][^)]*, ["][/][*][(]DEBLOBBED[)][*][/]["][)]'
-    # accept '#define PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(]' include/pcmcia/device_id.h
-
-    # These are not software; they're Free, but GPLed without in-tree sources.
-    # blobname '\(cis[/]\)\?3CCFEM556\.cis' drivers/net/pcmcia/3c574_cs.c
-    # blobname '\(cis[/]\)\?3CXEM556\.cis' drivers/net/pcmcia/3c589_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis' drivers/net/pcmcia/pcnet_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\)\.cis' drivers/serial/serial_cs.c
-    # These are not software; they're Free, but GPLed without textual sources.
-    # It is safe to assume that these binaries *are* sources, since they
-    # can be trivially converted back to a textual form, without loss.
-    # blobname '\(cis[/]\)\?SW_\([78]xx\|555\)_SER\.cis' drivers/serial/serial_cs.c
-
-    accept '[	]\(ds_\)\?\(dev_\)\?dbg[(]\(1[,][ ]\)\?\([&]dev->dev,[ ]\)\?["]trying[ ]to[ ]load[ ]\(CIS[ ]file\|firmware\)[ ]%s[\\]n["],[ ]filename[)][;][\n]*[	]if[ ][(]\(strlen[(]filename[)][^\n]*\([{][^}]*[	][}]\|[)][\n][	]*return[^\n]*[;]\)[\n]*[	]snprintf[(]path,[ ]\(20\|sizeof[(]path[)]\),[^\n]*,[ ]filename[)][;][\n]*[	]if[ ][(]request_firmware[(][&]fw,[ ]path\|request_firmware[(][&]fw,[ ]filename\),[ ][&]dev->dev[)][^\n]*[)][ ][{][\n][	]*if[ ][(]fw->size[ ]>=[ ]CISTPL_MAX_CIS_SIZE[)]' drivers/pcmcia/ds.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\)*' drivers/net/pcnet_cs.c
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]err[ ]=[ ]request_firmware[(][&]asd_ha->bios_image,[\n 	]*filename_ptr,[\n 	]*[&]asd_ha->pcidev->dev[)][;]' drivers/scsi/aic94xx/aic94xx_init.c
-    blobname 'aic94xx-seq\.fw' drivers/scsi/aic94xx/aic94xx_seq.h
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-
-    accept '[	]res[ ]=[ ]request_firmware[(]&fw,[ ]["]sas_addr["],[ ]&shost->shost_gendev[)][;]' drivers/scsi/libsas/sas_scsi_host.c
-
-    blobname 'ql\(2\([12345]00\|322\)\|8[12]00\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]' drivers/scsi/qla2xxx/Kconfig
-
-    blobname 'icom_\(asc\|res_dce\|call_setup\)\.bin' drivers/serial/icom.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\|net/wireless\)/at76_usb/at76_usb\.c\|at76c50x-usb\.c\)'
-
-    accept 'static[ ]struct[ ]go7007_usb_board[ ]board_\(matrix_\(ii\|reload\|revolution\)\|star_trek\|px_tv402u\|xmen\|lifeview_lr192\|endura\|adlink_mpg24\|sensoray_2250\)[ ]=[ ][{][\n]\([	]\.flags[ 	]*=[ ][^",]*,[\n]*\)*[	]\.main_info[ 	]*=[ ][{][\n][	][	]\.firmware[ 	]*=[ ]' drivers/staging/go7007/go7007-usb.c
-    accept 'static[ ]struct[ ]go7007_board_info[ ]board_voyager[ ]=[ ][{][\n][	]\.firmware[	 ]*=[ ]' drivers/staging/go7007/saa7134-go7007.c
-    blobname 'go7007\(fw\|tv\)\.bin' 'drivers/staging/go7007/\(go7007-\(driver\|usb\)\|saa7134-go7007\)\.c'
-
-    blobname 'cxacru-\(%s\|fw\|bp\|cf\)\.bin' drivers/usb/atm/cxacru.c
-
-    blobname 'speedtch-\(%d\|[0-9]*\)\.bin\(\.\(%x\|\(0x\)\?[0-9a-fA-F]*\)\(\.\(%02x\|[0-9a-fA-F][0-9a-fA-F]\)\)\?\)\?' drivers/usb/atm/speedtch.c
-
-    blobname 'ueagle-atm[/]' drivers/usb/atm/ueagle-atm.c
-    blobname '\(adi930\|eagle\(I*\|IV\)\)\.fw' drivers/usb/atm/ueagle-atm.c
-    blobname 'DSP[49e][ip]\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname '930-fpga\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-
-    blobname 'isight\.fw' drivers/usb/misc/isight_firwmare.c
-
-    blobname '\(i1480-\(pre-phy\|usb\|phy\)\|ptc\)-0\.0\.bin' drivers/uwb/i1480/dfu/usb.c
-
-    accept '[	]retval[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]metronome\.wbf["],[ ][&]dev->dev[)][;]' drivers/video/metronomefb.c
-
-    blobname '\(vx[/]\)\?\(bx_1_v\(xp\|p4\)\.b56\|x1_\(1_v\(x[2p]\|p4\)\|2_v22\)\.xlx\|bd56\(002\|3v2\|3s3\)\.boot\|l_1_v\(x[2p]\|p4\|22\)\.d56\)' sound/drivers/vx/vx_hwdep.c
-
-    blobname '\(ea[/]\)\?darla20_dsp\.fw' sound/pci/echoaudio/darla20.c
-    blobname '\(ea[/]\)\?darla24_dsp\.fw' sound/pci/echoaudio/darla24.c
-    blobname '\(ea[/]\)\?\(\(loader\|echo3g\)_dsp\|3g_asic\)\.fw' sound/pci/echoaudio/echo3g.c
-    blobname '\(ea[/]\)\?gina20_dsp\.fw' sound/pci/echoaudio/gina20.c
-    blobname '\(ea[/]\)\?\(\(loader\|gina24_3[06]1\)_dsp\|gina24_3[06]1_asic\)\.fw' sound/pci/echoaudio/gina24.c
-    blobname '\(ea[/]\)\?\(loader\|indigo\)_dsp\.fw' sound/pci/echoaudio/indigo.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_dj\)_dsp\.fw' sound/pci/echoaudio/indigodj.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_io\)_dsp\.fw' sound/pci/echoaudio/indigoio.c
-    blobname '\(ea[/]\)\?layla20_\(dsp\|asic\)\.fw' sound/pci/echoaudio/layla20.c
-    blobname '\(ea[/]\)\?\(\(loader\|layla24\)_dsp\|layla24_\(1\|2[AS]\)_asic\)\.fw' sound/pci/echoaudio/layla24.c
-    blobname '\(ea[/]\)\?\(loader\|mia\)_dsp\.fw' sound/pci/echoaudio/mia.c
-    blobname '\(ea[/]\)\?\(\(loader\|mona_3[06]1\)_dsp\|mona_3[06]1\(_1\)\?_asic_\(48\|96\)\|mona_2_asic\)\.fw' sound/pci/echoaudio/gina24.mona
-    blobname 'ea[/]%s' sound/pci/echoaudio/echoaudio.c
-
-    blobname 'emu[/]\(hana\|\(audio\|micro\)_dock\|emu\(0404\|1010\(b\|_notebook\)\)\)\.fw' sound/pci/emu10k1/emu10k1_main.c
-
-    blobname '\(mixart[/]\)\?miXart8\(AES\)\?\.\(xlx\|elf\)' sound/pci/mixart/mixart_hwdep.c
-
-    blobname '\(pcxhr[/]\)\?\(x[ic]_1_882\|[ebd]321_512\|xlxint\|\(xlxc\|dsp[ebd]\)\(882\|1\?222\|924\)\(e\|hr\)\?\)\(\.dat\|\.[ebd]56\)' sound/pci/pcxhr/pcxhr_hwdep.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
-    blobna 'chip->firmware[ ]=[ ]firmware[;]' sound/pci/riptide/riptide.c
-
-    blobname '\(multi\|digi\)face_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-
-    blobname 'aica_firmware\.bin' sound/sh/aica.c
-
-    accept '[ ][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Caution:[ ]This[ ]API[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware.' sound/sound_firmware.c
-    accept 'static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'int[ ]mod_firmware_load[(]' sound/sound_firmware.c
-    accept '[	]r[ ]=[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'EXPORT_SYMBOL[(]mod_firmware_load[)][;]' sound/sound_firmware.c
-    accept 'extern[ ]int[ ]mod_firmware_load[(]' sound/oss/sound_firmware.h
-
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]PERMCODESIZE[ ]=[ ]mod_firmware_load[(]PERMCODEFILE,[ ][&]PERMCODE[)][;]' sound/oss/msnd_pinnacle.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?pndsp\(ini\|erm\)\.bin' '\(sound/oss/msnd_pinnacle.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' '\(sound/oss/msnd_classic.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobna '\(Important[ ]Notes[ ]-[ ]Read[ ]Before[ ]Using\|Obtaining[ ]and[ ]Creating[ ]Firmware[ ]Files\)[\n]#[ ][ ]~*\([^\n]\|[\n]#[ ]*\([\n]#[ ]*\([\n]#[ ]*For[ ]the[^\n]*[\n]#[ ]*~*[\n]\)\?\)\?[^\n ]\)*\.' Documentation/sound/oss/MultiSound
-
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    blobname '[/]sndscape[/]\(scope\.cod\|sndscape\.co\([?dx01234]\|%d\)\)' sound/oss/sscape.c
-
-    accept '[	][	]trix_boot_len[ ]=[ ]mod_firmware_load[(]' sound/oss/trix.c
-    blobname '\([/]etc[/]sound[/]\)\?trxpro\.bin' sound/oss/trix.c
-
-    accept '[	][	]smw_ucodeLen[ ]=[ ]mod_firmware_load[(]' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\)\?midi0001\.bin' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' sound/oss/Kconfig
-
-    blob 'When[ ]the[ ]module[ ]is[ ]loaded[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]*\)*' Documentation/sound/oss/PSS
-    blob 'pss_firmware[ \n	]*This[ ]parameter[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]\+\)*' Documentation/sound/oss/PSS-updates
-    accept '[	][	]pss_synthLen[ ]=[ ]mod_firmware_load[(]pss_firmware,[ ][(]void[ ][*][)][ ][&]pss_synth[)][;]' sound/oss/pss.c
-    accept '[	]*if[ ]\?[(]\(!\|fw_load[ ][&][&][ ]\)\?pss_synth' sound/oss/pss.c
-    accept '[	]*if[ ][(]!pss_download_boot[(]devc,[ ]pss_synth,[ ]pss_synthLen,' sound/oss/pss.c
-    accept '[	]*vfree[(]pss_synth[)][;]' sound/oss/pss.c
-    blobna 'to[ ]allow[ ]the[ ]user[ ][^/"]*fir[em]ware[ ]file[^/"]*["][^"*]*["]' sound/oss/pss.c
-    blobname '\([/]etc[/]sound[/]\)\?pss_synth' sound/oss/pss.c
-    accept '[	][$][(]obj[)][/]bin2hex[ ]pss_synth' sound/oss/Makefile
-    accept '[	][ ]*echo[ ][\'"'"']static[ ]\(unsigned[ ]char[ ][*][ ]*\|int[ ]\)pss_synth\(Len\)\?[ ]=[ ]\(NULL\|0\)[;]' sound/oss/Makefile
-
-    accept '[	]\.request_firmware[ ]=[ ]NULL,' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept '[	 ]*["]request_firmware[ ]\(fatal[ ]error\|unable[ ]to[ ]locate\|:[ ]Failed[ ]to[ ]find\)' drivers/media/video/pvrusb2/pvrusb2-hdw.c
-    accept '[ ][*][ ]NOTE[ ]:[ ]the[ ]pointer[ ]to[ ]the[ ]firmware[ ]data[ ]given[ ]by[ ]request_firmware[(][)]' drivers/media/video/pvrusb2-hdw.c
-
-    blobname 'dvb-usb-\(dw\(210[124]\|3101\)\|s630\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]gp8psk_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-gp8psk-0[12]\.fw' drivers/media/dvb/dvb-usb/gp8psk.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]opera1_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-opera-\(fpga-\)\?-01\.fw' drivers/media/dvb/dvb-usb/opera1.c
-
-    blobname 'dvb-fe-af9013\.fw' drivers/media/dvb/frontends/af9013_priv.h
-
-    blobname 'dvb-fe-bcm3510-01\.fw' drivers/media/dvb/frontends/bcm3510.c
-
-    blobname 'dvb-fe-cx24116\.fw' drivers/media/dvb/frontends/cx24116.c
-
-    blobname 'dvb-fe-nxt2002\.fw' drivers/media/dvb/frontends/nxt200x.c
-
-    blob '[/][*][\n][ ][*][ ]This[ ]driver[ ]needs[ ]two[ ]external[ ]firmware[ ]files[^*]*\([*]\+[^/*][^*]*\)*[*]*dvb-fe-or51132-\(vsb\|qam\)\.fw[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/dvb/frontends/or51132.c
-    blobname 'dvb-fe-or51132-\(vsb\|qam\)\.fw' drivers/media/dvb/frontends/or51132.c
-
-    blobname 'dvb-fe-or51211\.fw' drivers/media/dvb/frontends/or51211.c
-
-    blobname 'dvb-fe-sp887x\.fw' drivers/media/dvb/frontends/sp887x.c
-
-    blobname 'dvb-fe-tda10048-1\.0\.fw' drivers/media/dvb/frontends/tda10048.c
-
-    blobname '\(\(dvb\|tdmb\|isdbt\)_nova\|cmmb_vega\)_12mhz\(_b0\)\?\.inp' drivers/media/dvb/siano/smscoreapi.c
-
-    blobname '\(dvb[th]\(_bda\)\?\|tdmb\)_stellar_usb\.inp' drivers/media/dvb/siano/smsusb.c
-
-    blobname 'dvb-ttusb-dec-\(2000t\|2540t\|3000s\)\.fw' drivers/media/dvb/ttusb-dec/ttusb_dec.c
-
-    blob 'For[ ]the[ ]WinTV[/]PVR[^:]*firmware[^:]*:[\n]hcwamc\.rbf[^\n]*\([\n][^\n][^\n]*\)*' Documentation/video4linux/bttv/README
-    blobname 'hcwamc\.rbf' drivers/media/video/bt8xx/bttv-cards.c
-    blobna 'The[ ]hcwamc\.rbf[ ]firmware[ ]file[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/bt8xx/bttv-cards.c
-
-    blobname 'v4l-cx23418-dig\.fw' drivers/media/video/cx18/cx18-av-firmware.c
-    blobname 'v4l-cx23418-[ac]pu\.fw' drivers/media/video/cx18/cx18-firwmare.c
-
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-
-    blobname 'v4l-\(cx23\(885\|1xx\)-avcore-01\|cx25840\)\.fw' drivers/media/video/cx25840/cx25840-firmware.c
-
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-
-    blobname 'v4l-cx2341x-init\.mpg' drivers/media/video/ivtv/ivtv-firwmare.c
-
-    blobname 'v4l-pvrusb2-\(2[49]\|73\)xxx-01\.fw' drivers/media/video/pvrusb2/pvrusb2-devattr.c
-
-    blobname 'f2255usb\.bin' drivers/media/video/s2255drv.c
-
-    blobname 'drx397xD\.\(A2\|B1\)\.fw' drivers/media/dvb/frontends/drx397xD_fw.h
-
-    accept '#define[ ]DIB0700_DEFAULT_DEVICE_PROPERTIES[ ]\\[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^\n",]*,[ ]\\[\n]\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-dib0700-1\.[12]0\.fw' 'drivers/media/dvb/dvb-usb/dib0700_\(devices\|core\)\.c'
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]nova_t_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-nova-t-usb2-02\.fw' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]umt_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/umt-010.c
-    blobname 'dvb-usb-umt-010-02\.fw' drivers/media/dvb/dvb-usb/umt-010.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]ttusb2_properties\(_s2400\)\?[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/ttusb2.c
-    blobname 'dvb-usb-\(pctv-400e\|tt-s2400\)-01\.fw' drivers/media/dvb/dvb-usb/ttusb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]cxusb_bluebird_\(lgh064f\|dee1601\|lgz201\|dtt7579\|nano2_needsfirmware\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/cxusb.c
-    blobname 'dvb-usb-bluebird-0[12]\.fw' drivers/media/dvb/dvb-usb/cxusb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dtt200u\|wt220u\(_\(fc\|zl0353\|miglia\)\)\?\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dtt200u.c
-    blobname 'dvb-usb-\(dtt200u-01\|wt220u-\(02\|fc03\|\(zl0353\|miglia\)-01\)\)\.fw' drivers/media/dvb/dvb-usb/dtt200u.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    blobname 'dvb-usb-vp7045-01\.fw' drivers/media/dvb/dvb-usb/vp7045.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dibusb\(1_1\(_an2235\)\?\|2_0b\)\|artec_t1_usb2\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mb.c
-    blobname 'dvb-usb-\(dibusb-\(5\.0\.0\.11\|an2235-01\|6\.0\.0\.8\)\|adstech-usb2-02\)\.fw' drivers/media/dvb/dvb-usb/dibusb-mb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]a800_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/a800.c
-    blobname 'dvb-usb-avertv-a800-02\.fw' drivers/media/dvb/dvb-usb/a800.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]af9005_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9005.c
-    blobname 'af9005\.fw' drivers/media/dvb/dvb-usb/af9005.c
-
-    accept '[	][	]\.download_firmware[ ]=[ ]af9015_download_firmware,[\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    blobname 'dvb-usb-af9015\.fw' drivers/media/dvb/dvb-usb/af9015.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]dibusb_mc_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mc.c
-    blobname 'dvb-usb-dibusb-6\.0\.0\.8\.fw' drivers/media/dvb/dvb-usb/dibusb-mc.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp702x_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp702x.c
-    blobname 'dvb-usb-vp702x-02\.fw' drivers/media/dvb/dvb-usb/vp702x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]digitv_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/digitv.c
-    blobname 'dvb-usb-digitv-02\.fw' drivers/media/dvb/dvb-usb/digitv.c
-
-    blob 'Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\([\n][\n]--*[\n][\n]\?Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\)*' firmware/WHENCE
-
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-
-    accept '[ ][ ][ ][ ]mv[ ]["][$]ofile["][ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$]objbin[/]mktree[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[	]rm[ ]-f[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$][{]CROSS[}]objcopy[ ]-O[ ]binary[ ]["][$]ofile["][ ]["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]odir=["][$][(]dirname[ ]["][$]ofile\.bin["][)]["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]gzip[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-
-    blobname 'di\(\(dn\|pr\)load\|diva\(pp\)\?\|hscx\|v110\|modem\|fax\|_etsi\|_\(1tr6\|belg\|franc\|atel\|ni\|5ess\|japan\|swed\)\|dspdld\)\.\(bin\|s[xyqm]\|p\)' drivers/isdn/hardware/eicon/cardtype.h
-    blobname 'dsp\(dload\|dqsig\|dvmdm\|dvfax\)\.bin' drivers/isdn/hardware/eicon/dsp_defs.h
-
-    blobname 'vicam[/]firmware\.fw' drivers/media/video/usbvideo/vicam.c
-
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-
-    # New in 2.6.29
-    blobname 'acenic[/]tg[12]\.bin' drivers/net/acenic.c
-    blobname 'adaptec[/]starfire_[rt]x\.bin' drivers/net/starfire.c
-    blobname 'e100[/]d10\(1[ms]\|2e\)_ucode\.bin' drivers/net/e100.c
-    blobname 'tigon[/]tg3\(_tso5\?\)\?\.bin' drivers/net/tg3.c
-    blobname '\(ti_usb-v\(%04x\|[0-9a-f]*\)-p\(%04x\|[0-9a-f]*\)\|mts_\(cdma\|gsm\|edge\)\)\.\(bin\|fw\)' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'iw\?\(2400\|6050\)m\?-fw-\(sdio\|usb\)-\(\(["][ ]I2400M_FW_VERSION[ ]["]\|[0-9.]*\)\.sbcf\|[^". \n]*\)' 'drivers/net/wimax/i2400m/\(sdio\|usb\)\.c'
-    blob '3\.[ ]Installing[ ]the[ ]firmware[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*[\n]*[$][^\n]*i2400m-fw[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*' Documentation/wimax/README.i2400m
-    blob '6\.1\.[ ]Driver[ ]complains[^\n]*i2400m-fw[^\n]*\([\n][\n]*\([ ][ ][ ]\|i2400m_usb\)[^\n]*\)*' Documentation/wimax/README.i2400m
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    accept '\(div_table_\(clz\|inv\|ix\)\|zero_l\):\([\n][	]\.\(byte[	]-\?[0-9]*\|long[	]0x[0-9A-F]*\)\)*' arch/sh/lib/udivsi3_i4i.S
-    defsnc 'const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    accept '[	][ ][ ]every[ ]driver[ ]which[ ]uses[ ]request_firmware[(][)][ ]and[ ]ships[ ]its' drivers/base/Kconfig
-    defsnc 'static[ ]const[ ]u32[ ]filter_table\[\][ ]=' drivers/gpu/drm/i915/intel_tv.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]u32[ ]channel_tbl\[15\]\[9\][ ]=' drivers/staging/agnx/rf.c
-    defsnc 'static[ ]const[ ]u32[\n]gain_table\[\][ ]=' drivers/staging/agnx/rf.c
-    accept '<[frs]:[0-9]*x[0-9]*>[\n][01 \n]*' 'drivers/staging/asus_oled/\(linux\(_fr\?\)\?\|tux\(_r2\?\)\?\|zig\).txt'
-    defsnc 'static[ ]unsigned[ ]char[ ]\(aud\|vid\)_regs\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    defsnc 'static[ ]u16[ ]vid_regs_fp\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    blobname 's2250\(_loader\)\?\.fw' drivers/staging/go7007/s2250-loader.c
-    blobna 'me_xilinx_download' 'drivers/staging/meilhaus/.*'
-    accept 'int[ ]me_xilinx_download[(]' 'drivers/staging/meilhaus/mefirmware\.[ch]'
-    blobname 'me46[01]0\(_bosch\)\?\.bin' drivers/staging/meilhaus/me4600_device.c
-    accept '\([	]if[ ][(]me4600_device->base\.info\.pci\.device_id[ ]==[ ]PCI_DEVICE_ID_MEILHAUS_ME4610[)][ ][{][	][/][/]Jekyll[ ]<=>[ ]me4610\|#ifdef[ ]BOSCH\|#else[ ][/][/]~BOSCH\)[\n][	][	]err[ ]=[\n][	][	][ ][ ][ ][ ]me_xilinx_download[(]me4600_device' drivers/staging/meilhaus/me4600_device.c
-    blobname 'me6000\.bin' drivers/staging/meilhaus/me6000_device.c
-    accept '[	][/][*][ ]Download[ ]the[ ]xilinx[ ]firmware[ ][*][/][\n][	]err[ ]=[ ]me_xilinx_download[(]me6000_device' drivers/staging/meilhaus/me6000_device.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\([\n][\n]*const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\)*' 'drivers/staging/otus/hal/hp.*fwu.*\.c'
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    blob '\(UCHAR\|u8\)[ ]FirmwareImage\(_\(2870\|30[79]0\)\)\?[ ]\[\][ ]=[ ][{][^;]*[}][ ][;]' 'drivers/staging/rt\(28[67]\|30[79]\)0/common/firmware\(_3070\)\?\.h'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname 'rate\.bin' drivers/staging/rt2870/rtmp_init.c
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT\(28[67]\|307\)0STA[/]\)\?\(RT\(28[67]\|307\)0STA\|rt28[67]0\)\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT28[67]0STA[/]\)\?e2p\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_ate\.[hc]'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'u\(8\|16\|32\)[ ]rtl8225\(\(a\|bcd\?\)_rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\[\]=' drivers/staging/rtl8187se/r8180_rtl8225.c
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc 'static[ ]short[ ]rtl8255_agc\[\]=' drivers/staging/rtl8187se/r8180_rtl8255.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    blobname '\(\(oasis\|gb\)_rcv\|slic_\(oasis\|mojave\)\)\.bin' drivers/staging/slicoss/slicoss.c
-
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\([\n][\n]*#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\)*' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-    blob '#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\([\n][\n]*#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'instruction[ ]=[ ][^;]*\(Oasis\|GB\|Mojave\)\(Rcv\)\?UCode[^:}]*[;]' drivers/staging/slicoss/slicoss.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'numsects[ ]=[ ][OM]NumSections[;][\n][	]*for[ ][(][^;]*[;][^;]*[;][^;{]*[)][ ][{][\n][^}]*[\n][	][	][}]' drivers/staging/slicoss/slicoss.c
-
-    # post 2.6.29 patches
-    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov\(7[27]2x\|965x\(_2\)\?\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-
-    # This looks suspicious, but it pretty much just sets stuff to zero.
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-
-    # quite suspicious
-    # arch/parisc/kernel/perf_images.h
-    initc 'static[ ]uint32_t[ ]onyx_images\[\]\[PCXU_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-    initc 'static[ ]uint32_t[ ]cuda_images\[\]\[PCXW_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-
-    # These are regarded as ok
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-
-    # too lax?
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirZeros[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirOnes[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirSatTest[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirDImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_ItdDline_t[ ]A3dItdDlineZeros[ ]=[ ][{]'
-    initnc 'static[ ]auxxEqCoeffSet_t[ ]asEqCoefsNormal[ ]=[ ][{]'
-    defsnc 'static[ ]xtalk_dline_t[ ]const[ ]alXtalkDline\(Test\|Zeros\)[ ]=' sound/pci/au88x0/au88x0_xtalk.c
-    initnc 'static[ ]struct[ ]nand_ecclayout[ ]rtc_from4_nand_oobinfo[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]s16[ ]tempLUT\[\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    initnc 'static[ ]struct[ ][{][ ]int[ ]xres,[ ]yres,[ ]left,[ ]right,[ ]upper,[ ]lower,[ ]hslen,[ ]vslen,[ ]vfreq[;][ ][}][ ]timmings\[\][ ]__initdata[ ]=[ ][{]'
-    initnc 'static[ ]struct[ ]platinum_regvals[ ]platinum_reg_init_[0-9]*[ ]=[ ][{]'
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    initnc 'static[ ]u32[ ]LABELPATCHES\[\][ ]__attribute[(][(]unused[)][)][ ]='
-
-    initnc 'static[ ]dbdev_tab_t[ ]dbdev_tab\[\][ ]='
-    accept '\(EXP\|LOG\|ATAN\)TBL:'"$sepx$blobpat*"
-    initnc 'static[ ]char[ ]fm_volume_table\[128\][ ]='
-    initnc 'unsigned[ ]int[ ]snd_gf1_scale_table\[SNDRV_GF1_SCALE_TABLE_SIZE\][ ]='
-    # remaining after original deblob_2_6_24, not fully checked
-
-    oprepline '#define[ ]OV51[18]_\(Y\|UV\)QUANTABLE[ ][{]'
-    initnc '[	][	]static[ ]unsigned[ ]char[ ]const[ ]data_bit\[64\][ ]='
-    initnc '[	][	]static[ ]const[ ]u8[ ]data_sbit\[32\][ ]='
-    initnc '[	]\.RightCoefs[ ]='
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    initnc '[	]SetRate44100\[\][ ]='
-    initnc '[	]const[ ]short[ ]period\[32\][ ]='
-    defsnc '[	]\(const[ ]static\|static[ ]const\)[ ]int[ ]desc_idx_table\[\][ ]=' 'arch/arm/include/asm/hardware/iop3xx-adma.h|include/asm-arm/hardware/iop3xx-adma.h'
-    initnc '[	]int[ ]prop_bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]char[ ]logSlopeTable\[128\][ ]='
-    initnc '[	]static[ ]const[ ]int[ ]uc_\(dup\|word\)_table\[\]\[2\][ ]='
-    initnc '[	]static[ ]const[ ]struct[ ]mc7_timing_params[ ]mc7_timings\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs170\[7[ ][*][ ]8\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs3[13]a\[8[ ][*][ ]4\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]dramsr13\[12[ ][*][ ]5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]sdramtype\[13\]\[5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    initnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]short[ ]ac97_defaults\[\][ ]='
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]='
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    initnc '[	]static[ ]u32[ ]logMagTable\[128\][ ]='
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable1\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable2\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]default_colors\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]log_scale\[101\][ ]=' sound/oss/pss.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]msg\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    initnc '[	]uint8_t[ ]tx\[\][ ]='
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc '[	]unsigned[ ]char[ ]sas_pcd_m_pg\[\][ ]='
-    initnc '[	][}][ ]modedb\[5\][ ]='
-    defsnc '[	][}][ ]reg_tbl\[\][ ]=' drivers/net/bnx2.c
-    initnc '[	][}][ ]vals\[\][ ]='
-    initnc '[	][}][ ]vm_devices\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]distfix\[32\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]lenfix\[512\][ ]='
-    defsnc '[ ][ ]int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    initnc '[ ][ ][}][ ]cards_ds\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]unsigned[ ]short[ ]d\(base\|ext\)\[32\][ ]='
-    initnc '#define[ ]OV511_QUANTABLESIZE[	]64'
-    initnc 'BYTE[ ]BtCard::SRAMTable_\(NTSC\|PAL\)\[\][ ]='
-    initnc 'BYTE[ ]SRAMTable\[\]\[[ ]60[ ]\][ ]='
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" 'arch/arm/inlcude/asm/hardware/entry-macro-iomd.S|include/asm-arm/hardware/entry-macro-iomd.S'
-    initc '__u8[ ]_ascebc\[256\][ ]='
-    initc '__u8[ ]_ebc_tolower\[256\][ ]='
-    initc '__u8[ ]_ebc_toupper\[256\][ ]='
-    initnc 'adapter_tag_info_t[ ]aic7[9x]xx_tag_info\[\][ ]='
-    initnc 'char[ ]dmasound_alaw2dma8\[\][ ]='
-    initnc 'char[ ]dmasound_ulaw2dma8\[\][ ]='
-    initnc 'const[ ]struct[ ]aper_size_info_16[ ]agp3_generic_sizes\[AGP_GENERIC_SIZES_ENTRIES\][ ]='
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]byte_rev_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]crc7_syndrome_table\[256\][ ]='
-    initnc 'int[ ]snd_sf_vol_table\[128\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siubit\[\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siureg\[\][ ]='
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    initnc 'static[ ]__const__[ ]__u16[ ]gx_coeff\[256\][ ]='
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    initnc 'static[ ]char[ ]coefficients\[NM_TOTAL_COEFF_COUNT[ ][*][ ]4\][ ]='
-    initnc 'static[ ]char[ ]ecc_syndrome_table\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_alaw_to_ulaw\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_ulaw_to_alaw\[\][ ]='
-    initnc 'static[ ]char[ ]mix_cvt\[101\][ ]='
-    initnc 'static[ ]char[ ]opl3_volume_table\[128\][ ]='
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]='
-    initnc 'static[ ]const[ ]__u32[ ]crc_c\[256\][ ]='
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    initnc 'static[ ]const[ ]int[ ]init_seq\[\][ ]='
-    initnc 'static[ ]const[ ]int[ ]mobile_vid_table\[32\][ ]='
-    initnc 'static[ ]const[ ]s16[ ]snd_opl4_pitch_map\[0x600\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]budtab\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]aper_size_info_8[ ]via_generic_sizes\[9\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]color[ ]clut_vga16\[16\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]mobilevrm_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]vrm85_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]struct[ ]menelaus_vtg_value[ ]vcore_values\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]opl4_region[ ]regions_[0-9a-frums]*\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]regval[ ]regval_table\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    initnc 'static[ ]const[ ]u32[ ]SS[0-3]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]S[1-8]\[64\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]T[0-5]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    initnc 'static[ ]const[ ]u32[ ]bass_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    initnc 'static[ ]const[ ]u32[ ]db_table\[101\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]m8xx_size_to_gray\[M8XX_SIZES_NO\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]mds\[4\]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]pc2\[1024\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    initnc 'static[ ]const[ ]u32[ ]tfrc_calc_x_lookup\[TFRC_CALC_X_ARRSIZE\]\[2\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]treble_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u64[ ][CT][0-7]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sbox[1-4]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    initnc 'static[ ]const[ ]u8[ ]aes_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]calc_sb_tbl\[512\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]exp_to_poly\[492\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]legal_ansi_char_array\[0x40\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]parity\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]pc1\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]poly_to_exp\[255\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]q[01]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u8[ ]rs\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225_\(agc\|tx_\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siubit\[\][ ]='
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siureg\[\][ ]='
-    initnc 'static[ ]const[ ]uint8_t[ ]parity\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]\(UV\|Y\)_QUANTABLE\[64\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_mobilevrm\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]barco_p1\[2\]\[9\]\[7\]\[3\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]blue\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]chktab[hl]\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]comet_miireg2offset\[32\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]euc2sjisibm_g3upper_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]green\[256\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=' drivers/hid/hid-input.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]mts_direction\[256[/]8\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]red\[256\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]sjisibm2euc_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]vol_cvt_datt\[128\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]crctab32\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]crc_flex_table\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]wd7000_iobase\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    initnc 'static[ ]const[ ]unsigned[ ]table\[\][ ]='
-    initnc 'static[ ]int[ ]MV300_reg_8bit\[256\][ ]\?=' drivers/video/atafb.c
-    defsnc 'static[ ]int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    initnc 'static[ ]int[ ]initial_lfsr\[\][ ]='
-    initnc 'static[ ]int[ ]log_tbl\[129\][ ]='
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]register_size\[\][ ]='
-    initnc 'static[ ]int[ ]reserve_list\[MAX_RES_ARGS\][ ]='
-    initnc 'static[ ]int[ ]reverse6\[64\][ ]='
-    initnc 'static[ ]short[ ]attack_time_tbl\[128\][ ]='
-    defsnc 'static[ ]short[ ]beep_wform\[256\][ ]=' 'sound/ppc/beep.c|sound/oss/dmasound/dmasound_awacs.c|arch/ppc/8xx_io/cs4218_tdm.c'
-    initnc 'static[ ]short[ ]decay_time_tbl\[128\][ ]='
-    initnc 'static[ ]short[ ]isdn_audio_[ua]law_to_s16\[\][ ]='
-    defsnc 'static[ ]struct[ ]iw\?l\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IW\?L_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    initnc 'static[ ]struct[ ]ovcamchip_regvals[ ]regvals_init_\(76be\|7[16]20\|7x10\)\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    initnc 'static[ ]struct[ ]s_c2[ ]SetRate48000\[\][ ]='
-    initnc 'static[ ]struct[ ]tea6420_multiplex[ ]TEA6420_line\[MXB_AUDIOS[+]1\]\[2\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_133\[\][ ]='
-    initnc 'static[ ]struct[ ][{][ ]struct[ ]fb_bitfield[ ]red,[ ]green,[ ]blue,[ ]transp[;][ ]int[ ]bits_per_pixel[;][ ][}][ ]colors\[\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsPipes\[64\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsZeros\[50\][ ]='
-    initnc 'static[ ]u16[ ]asEqOutStateZeros\[48\][ ]='
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    initnc 'static[ ]u16[ ]eq_levels\[64\][ ]='
-    initnc 'static[ ]u32[ ][ ]crc32tab\[\][ ]__attribute__[ ][(][(]aligned[(]8[)][)][)][ ]='
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]u32[ ]adwDecim8\[33\][ ]='
-    initnc 'static[ ]u32[ ]h_prescale\[64\][ ]='
-    initnc 'static[ ]u32[ ]v_gain\[64\][ ]='
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]bnx2_570[68]_stats_len_arr\[BNX2_NUM_STATS\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]u8[ ]flit_desc_map\[\][ ]='
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]u8[ ]mac_reader\[\][ ]=' drivers/net/wireless/atmel.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/dvb/frontends/mt2131.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/dvb/frontends/mt2266.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc 'static[ ]u_long[ ]ident_map\[32\][ ]='
-    initnc 'static[ ]u_short[ ]alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]altgr_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]u_short[ ]shift_ctrl_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]shift_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]uchar[ ]perm1\[56\][ ]='
-    initnc 'static[ ]uchar[ ]perm2\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm3\[64\][ ]='
-    initnc 'static[ ]uchar[ ]perm4\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm5\[32\][ ]='
-    initnc 'static[ ]uchar[ ]perm6\[64\][ ]='
-    initnc 'static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]='
-    initnc 'static[ ]uint16_t[ ]crc_table\[256\][ ]='
-    initnc 'static[ ]uint8_t[ ]lpfcAlpaArray\[\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?uint8_t[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OffMatrix_9600\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OnMatrix_9600\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set3_keycode\[512\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_unxlate_table\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/superh/microdev/led.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8260\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8280\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]caseorder\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]crystal_key\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]dsp_ulaw\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]expressiontab\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    initnc 'static[ ]unsigned[ ]char[ ]hidp_keycode\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]nkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]pan_volumes\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]parm_block\[32\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]raw3270_ebcgraf\[64\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rfcomm_crc_table\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rwa_unlock\[\][ ]__initdata[ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]snd_opl4_volume_table\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]sunkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_8fpb\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_other\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ulaw_dsp\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    initnc 'static[ ]unsigned[ ]char[ ]voltab[12]\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]vpd89_data\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]xtkbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]bass_volume_table\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]isa_dma_port\[8\]\[7\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]master_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]mixer_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]pan_table\[63\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_bass_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]valid_mem\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]arthur_to_linux_signals\[32\][ ]='
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]unsigned[ ]nv\([34]\|10\)TableP\(FIFO\|GRAPH\|RAMIN\)\[\]\[2\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]fcstab\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ][/][*]__devinitdata[*][/][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]log_table\[LOG_TABLE_SIZE[*]2\][ ]='
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    initnc 'static[ ]unsigned[ ]short[ ]treble_parm\[12\]\[9\][ ]='
-    initnc 'struct[ ]RGBColors[ ]TextCLUT\[256\][ ]='
-    initnc 'struct[ ]VgaRegs[ ]GenVgaTextRegs\[NREGS[+]1\][ ]='
-    defsnc 'struct[ ]battery_thresh[ ][ ]*\(spitz\|sharpsl\)_battery_levels_\(noac\|acin\)\[\][ ]=' arch/arm/mach-pxa/sharpsl_pm.c
-    initnc 'struct[ ]fb_bitfield[ ]rgb_bitfields\[\]\[4\][ ]='
-    initnc 'struct[ ]mode_registers[ ]std_modes\[\][ ]='
-    initnc 'struct[ ]vmode_attr[ ]vmode_attrs\[VMODE_MAX\][ ]='
-    initnc 'u16[ ]const[ ]crc16_table\[256\][ ]='
-    initnc 'u16[ ]const[ ]crc_ccitt_table\[256\][ ]='
-    initnc 'u16[ ]hfsplus_compose_table\[\][ ]='
-    initnc 'u16[ ]hfsplus_decompose_table\[\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '[}][ ]euc2sjisibm_jisx0212_map\[\][ ]='
-    initnc '[}][ ]freq\[\][ ]='
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]maven_gamma\[\][ ]='
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]sil_port\[\][ ]='
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-
-    # new in 2.6.30
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]sync\[\][ ]=' Documentation/networking/timestamping/timestamping.c
-    blob 'The[ ]driver[ ]requires[ ]firmware[ ]files[ ]["]turtlebeach\([^\n]*[^\n.][\n]\)*directory.' Documentation/sound/alsa/ALSA-Configuration.txt
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    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-\(\(db-\)\?FPGA\|Firmware\)\.bin' drivers/atm/solos-pci.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\)\[\][ ]\(__devinitconst[ ]\)\?=' drivers/i2c/busses/i2c-mpc.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nand_oob_128[ ]=' drivers/mtd/nand/nand_base.c
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    accept 'static[ ]void[\n]load_rv2p_fw[(][^{)]*const[ ]struct[ ]bnx2_mips_fw_file_entry' drivers/net/bnx2.c
-    accept 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{][\n][	]const[ ]struct[ ]bnx2_mips_fw_file'
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blobname 'myricom[/]lanai\.bin' drivers/net/myri_sbus.c
-    blobname '3com[/]3C359\.bin' drivers/net/tokenring/3c359.c
-    blobname '3com[/]typhoon\.bin' drivers/net/typhoon.c
-    defsnc 'static[ ]struct[ ]ar9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]struct[ ]ar9170_rf_init[ ]ar9170_rf_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]ar9170_phy_freq_entry[ ]ar9170_phy_freq_params\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'sxg[/]sahara\(dbg\)\?downloadB\.sys' drivers/staging/sxg/sxg.c
-    blobname 'qlogic[/]isp1000\.bin' drivers/scsi/qlogicpti.c
-    blobname 'advansys[/]\(3550\|38C\(08\|16\)00\|mcode\)\.bin' drivers/scsi/advansys.c
-    blobname 'qlogic[/]\(1040\|1280\|12160\)\.bin' drivers/scsi/qla1280.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]rf\([52]413\|2425\)_ini_common_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-1000-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-60[05]0-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]gspi\(%d\|[0-9]\+\)\(_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c
-    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\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    accept '#define[ ]USBDUX_FIRMWARE[ \t]*["]usbdux_firmware\.bin["]' drivers/staging/comedi/drivers/usbdux.c
-    accept 'MODULE_FIRMWARE[(]USBDUX_FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbdux.c
-    accept '#define[ ]FIRMWARE[ \t]*["]usbduxfast_firmware\.bin["]' drivers/staging/comedi/drivers/usbduxfast.c
-    accept 'MODULE_DESCRIPTION[(]["]USB-DUXfast[^"]*["][)][;][\n]MODULE_LICENSE[(]["]GPL["][)][;][\n]MODULE_FIRMWARE[(]FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbduxfast.c
-    blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
-    defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
-    accept '[	][	]stlc45xx_error[(]["]request_firmware[(][)][ ]failed' drivers/staging/stlc45xx/stlc45xx.c
-    blob 'static[ ]struct[ ]phy_ucode[	]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode-1.2.h
-    accept 'device[ ]drivers[ ]which[ ]predate[ ]the[ ]common[ ]use[ ]of[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    accept 'As[ ]we[ ]update[ ]those[ ]drivers[ ]to[ ]use[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*\(infradead\.org\|decadent\.org\.uk\)>' firmware/README.AddingFirmware
-    blobna 'linux-firmware\.git' firmware/README.AddingFirmware
-    blobname '\(ea[/]\)\?\(loader\|indigo_djx\)_dsp\.fw' sound/pci/echoaudio/indigodjx.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_iox\)_dsp\.fw' sound/pci/echoaudio/indigoiox.c
-    # blobname 'cis[/]LA-PCM\.cis' drivers/net/pcmcia/pcnet_cs.c
-    blobname 'ositech[/]Xilinx7OD\.bin' drivers/net/pcmcia/smc91c92_cs.c
-    blobname 'tehuti[/]\(firmware\|bdx\)\.bin' drivers/net/tehuti.c
-    accept '[ 	]*["]b43-open%s[/]%s\.fw["]' drivers/net/wireless/b43/main.c
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-
-    # New in 2.6.31
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    defsnc '\([	]static[ ]const[ ]u8[ ]snum_init\[\][ ]=[ ][{]\|static[ ]void[ ]qe_snums_init[(]void[)]\)[\n][	][	]0x04,[ ]0x05,' arch/powerpc/sysdev/qe_lib/qe.c
-    accept '[.]LgoS4:[\n][	][.]word[	][.]LmtoS4-\.LgoS4\([\n][	]\.\(long\|word\|byte\)[	][01]\(,0\)*\)*' arch/s390/kernel/sclp.S
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    accept '[ ][*][ ]*1[ ]1\([ ]0\)*[ ]1\([ ]0\)*' arch/x86/lguest/boot.c
-    defsnc 'struct[ ]scrubrate[ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]unsigned[ ]r\([35]\|s6\)00_reg_safe_bm\[[0-9]*\][ ]=' 'drivers/gpu/drm/radeon/r\(300\|v515\|s600\)\.c'
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    blobname 'dvb-cx18-mpc718-mt352\.fw' drivers/media/video/cx18/cx18-dvb.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]onenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' 'drivers/net/wireless/\(prism54/islpci_dev\.c\|rt2x00/rt2800usb\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    blobname 'iwmc3200wifi-\([ul]mac\|calib\)-sdio\.bin' drivers/net/wireless/iwmc3200wifi/sdio.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)ArrayDTM\[\(Boot\|Main\|Data\)ArrayLengthDTM\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192su/r8192S_FwImgDTM.h
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8192PciE\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\(DTM\)\?\[\(\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?Length\(DTM\)\?\)\?\][ ]=' drivers/staging/rtl8192su/rtl8192S_FwImgDTM.h
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    blobname 'RTL8192U[/]\(boot\|main\|data\)\.img' 'drivers/staging/rtl8192s\?u/r819xU_firmware\.c'
-    blob 'u8[ ]rtl8190_fw\(boot\|main\|data\)_array\[\][ ]=[ ]\?[{][^}]*[}][;]' 'drivers/staging/rtl8192s\?u/r8192xU_firmware_img\.c'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'BYTE[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc '\(BYTE\|unsigned[ ]char\)[ ]byVT3253\(InitTab\|B0\(_AGC4\?\)\?\)_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\[CB_VT3253\(B0\(_AGC4\?\)\?\)\?\(\(_INIT\)\?_FOR_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\)\?\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'SCountryTable[ ]ChannelRuleTab\[CCODE_MAX[+]1\][ ]=' drivers/staging/vt6655/card.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    defsnc 'static[ ]const[ ]\(DWORD\|unsigned[ ]long\)[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6655/tcrc.c
-    defsnc 'const[ ]\(BYTE\|unsigned[ ]char\)[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6655/tkip.c
-    blobname 'prism2_ru\.\(hex\|fw\)' drivers/staging/wlan-ng/prism2fw.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    blob '#include[ ]["]me4\(00\|61\)0_firmware\.h["]\([\n][\n]*#include[ ]["]me4\(00\|61\)0_firmware\.h["]\)*' drivers/staging/me4000/me4000.c
-    blobna 'firm[ ]=[ ][^;]*xilinx_firm[^;]*[;]' drivers/staging/me4000/me4000.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\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|%s\)_\(pfp\|rlc\|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
-
-    # New in or modified for 2.6.32
-    blobname '\(cxgb3[/]\)\?ael20\(05_\(opt\|twx\)\|20_twx\)_edc\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc 'static[ ]const[ ]struct[ ]aper_size_info_32[ ]u3_sizes\[8\?\][ ]=' drivers/char/agp/uninorth-agp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[\(512\|ATKBD_KEYMAP_SIZE\)\][ ]=' drivers/input/keyboard/atkbd.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    accept '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_1\[\][ ]=[ ][{][^;]*0x8300[^;]*[}][;]' drivers/net/r8169.c
-    blob 'static[ ]void[ ]rtl8168d_[12]_hw_phy_config[(]void[ ]__iomem[ ][*]ioaddr[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/r8169.c
-    blobna 'rtl8168d_[12]_hw_phy_config[(]ioaddr[)][;]' drivers/net/r8169.c
-    blobna 'static[ ]\(const[ ]\)\?struct[ ]phy_reg_init_[12]\[\][ ]=[ ][{][\n 	{}0-9a-fx]*0x06,[ ]0xf8f9[\n 	{}0-9a-fx]*[}][;]' drivers/net/r8169.c
-    # This loads firmware to be flashed from filename provided through ethtool.
-    accept 'int[ ]be_load_fw[(]struct[ ]be_adapter[ ][^\n;{]*[)][ \n][{]\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/net/benet/be_main.c
-    defsnc '[	]u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9287\(Common\|Modes\(_\([tr]x_gain\)\)\?\)_9287_1_[01]\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271\(_1_0\)\?\[\]\[[26]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u8[ ]lpphy_min_sig_sq_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u16[ ]lpphy_\(rev\(01\|2plus\)_noise_scale\|crs_gain_nft\|iqlo_cal\|rev[01]_ofdm_cck_gain\|\(a0_\)\?gain\|sw_control\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u32[ ]lpphy_\(\(rev01_ps\|tx_power\)_control\|\(a0_\)\?gain_\(idx\|value\)\|papd_\(eps\|mult\)\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    blobname 'v4l-saa7164-1\.0\.[23]\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]long[ ]limiter_times\[\][ ]=' drivers/media/radio/si4713-i2c.c
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    defsnc '[}][ ]csc_table\[\][ ]=' drivers/video/msm/mdp_csc_table.h
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    accept '[	]isar->firmware[ ]=[ ][&]load_firmware[;]' drivers/isdn/hardware/mISDN/mISDNisar.c
-    blobname 'isdn[/]ISAR\.BIN' drivers/isdn/hardware/mISDN/speedfax.c
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'RTL8192E[/]\(boot\|main\|data\)\.img' drivers/staging/rtl8192e/r819xE_firmware.c
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    accept '[ ][*][ ]File:[ ]main_usb\.c\([\n][ ][*]\([^\n/]*\|[^*\n/][/]*\)*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob 'const[ ]BYTE[ ]abyFirmware\[\][ ]=[ ][{][^;]*[}][;]' drivers/staging/vt6656/firmware.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(static[ ]\)\?struct[ ]register_address_value_pair[\n]\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    blobname '\([/]tmp[/]\)\?RT30xxEEPROM\.bin' 'drivers/staging/rt3090/\(common/ee_efuse\.c\|rtmp_def\.h\)'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\([\n][\n]*#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\)' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'FIRMWAREIMAGE_LENGTH[ ]==' drivers/staging/rt3090/common/rtmp_mcu.c
-    defsnc 'int[ ]wm831x_isinkv_values\[WM831X_ISINK_MAX_ISEL[ ][+][ ][1]\][ ]=' drivers/mfd/wm831x-core.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]__initconst[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8974_reg\[WM8974_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8974.c
-    defsnc 'static[ ]const[ ]u\(8\|16\)[ ]ak464[28]_reg\[\(AK4642_CACHEREGNUM\)\?\][ ]=' sound/soc/codecs/ak4642.c
-    accept 'int[ ]snd_hda_load_patch[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*hda_codec[^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' sound/pci/hda/hda_hwdep.c
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    blob 'SD8688[ ]firmware:[\n]*\([/]lib[/]firmware[^\n]*[\n]*\)*The[ ]images[^:]*:[\n]*[^\n]*[/]linux-firmware[^\n]*' Documentation/btmrvl.txt
-    defsnc 'static[ ]u8[ ]ibm405ex_fbdv_multi_bits\[\][ ]=' arch/powerpc/boot/4xx.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]struct[ ]ad714x_platf\(or\|ro\)m_data[ ]ad714[27]_\(\(spi\|i2c\)_\)\?platf\(or\|ro\)m_data[ ]=' arch/blackfin/mach-bf537/boards/stamp.c
-    blob 'static[ ]const[ ]u8[ ]lgs8g75_initdat\[\][ ]=[ ][{][^;]*[}][;]' drivers/media/dvb/frontends/lgs8gxx.c
-    blob 'static[ ]int[ ]lgs8g75_init_data[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*lgs8g75_initdat[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/media/dvb/frontends/lgs8gxx.c
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    accept '[<][<]\([/]Subtype[/]Type1\)\?[/]BaseFont[^ ]*[/]FontDescriptor[ ][0-9][0-9]*[ ]0[ ]R\([/]Type[/]Font\)\?[\n]\?[/]FirstChar[ ][0-9][0-9]*[/]LastChar[ ][0-9][0-9]*[/]Widths\[[\n][0-9 \n]*\]' 'Documentation/DocBook/v4l/.*\.pdf'
-
-    # New in 2.6.33
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blob '#define[ ]FW_VERSION\([ 	]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ 	]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3\(02\)\?x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u16[ ]bios_to_linux_keycode\[256\][ ]\(__initconst[ ]\)\?=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blob 'The[ ]ssinit[ ]program.*nsoniq.*sndscape.*sound[ ]weird\.' Documentation/sound/oss/README.OSS
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname '\(sndscape\|soundscape\)\.co\([?dx01234]\|%d\)' 'sound/isa/\(Kconfig\|sscape\.c\)\|Documentation/sound/oss/README\.OSS'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    blobname 'nouveau[/]nv\([0-9a-f][0-9a-f]\|%02x\)\.ctx\(prog\|vals\)' 'drivers/gpu/drm/nouveau/\(nv50_graph\|nouveau_grctx\)\.c'
-
-    # New in 2.6.34
-    blobname 'mts_mt9234\(mu\|zba\)\.fw' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '\(#[ ]\)\?\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl8192sfw\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-
-    # New in 2.6.35
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/char/n_gsm.c
-    defsnc 'static[ ]u8[ ]\(reset_atetm\|atetm_[12]port\|portsel_\(port[12]\|2port\)\)\[BIT2BYTE[(]LEN_\(ETM\|PORT_SEL\)[)]\][ ]=' drivers/infiniband/hw/qib/qib_iba7322.c
-    blobname 'qlogic[/]sd7220[.]fw' drivers/infiniband/hw/qib/qib_sd7220.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    blobname 'orinoco_ezusb_fw' drivers/net/wireless/orinoco/orinoco_usb.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]BUCK[123]_\(suspend_\)\?table\[\][ ]=' drivers/regulator/88pm8607.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]XGI\(fb_vrate\|_TV_filter\)\[\][ ]=' drivers/staging/xgifb/XGI_main.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330\(New\)\?_SR15\(_1\)\?\[8\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_cr40_1\[15\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_TVDataStruct[ ][ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525[ip]\|750p\)\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(750p\|525[ip]\)\)Timing\[\][ ][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_HiTVGroup3\(Data\|Simu\|Text\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_Ren\(525\|750\)pGroup3\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_PanelDelayTblStruct[ ]XGI330_PanelDelayTbl\[\]' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_LVDSCRT1DataStruct[ ][ ]XGI_CHTVCRT1[UO]\(NTSC\|PAL\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    # qseed_table2 is kind of suspicious, but there's some regularity
-    # to it that makes me think it's just data.
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    blobname 'xc3028L\?-v[0-9]\+\.fw' drivers/staging/tm6000/tm6000-cards.c
-    defsnc 'static[ ]const[ ]struct[ ]chs_entry[ ]chs_table\[\][ ]=' drivers/mtd/sm_ftl.c
-    blobname 'asihpi[/]dsp\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.bin' sound/pci/asihpi/hpidspcd.c
-    defsnc 'static[ ]unsigned[ ]long[ ]ident_map\[32\][ ]=' kernel/exec_domain.c
-    defsnc 'static[ ]uint[ ]patch_2000\[\][ ]__initdata[ ]=' arch/powerpc/sysdev/micropatch
-    # Are these ucode patches really data?!?  They were taken as such
-    # since gNewSense started cleaning up Linux, but they look awfully
-    # suspicious to me.
-    defsnc '\(static[ ]\)\?uint[ ]patch_2[0ef]00\[\][ ]\(__initdata[ ]\)\?=' arch/powerpc/sysdev/micropatch.c
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[4\][ ]=' arch/arm/mach-s5pc100/clock.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*[(]f2255usb\.bin[)][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/s2255drv.c
-
-    # New in 2.6.36:
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-
-    # New in 2.6.37, up to -rc5.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)\?-0[-0-9]*\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/README'
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/README'
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/wl_iw\.c'
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/phy/wlc_phy_cmn\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array[^\n]*\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|[mc][ec]\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\?\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-
-    # New in 2.6.39
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    blobname 'vntwusb\.fw' drivers/staging/vt6656/firmware.c
-    # New in 3.0.
-    accept 'resume[/]restore[,][ ]but[ ]they[ ]cannot[ ]do[ ]it[ ]by[ ]calling[ ]request_firmware[(][)]' Documentation/power/notifiers.txt
-    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	][	][	][	]0xe[0-7][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/p1022ds.dts
-    accept '[ ][ ][ ][ ]gzip[ ]-n[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]struct[ ]nvc0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.h
-    defsnc 'static[ ]const[ ]u8[ ]sht15_crc8_table\[\][ ]=' drivers/hwmon/sht15.c
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    blobname 'drxd-a2-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blobname 'drxd-b1-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blob '[/][*][	]if[ ][(]\(reject\|request\)_firmware[(][&]state->fw[,][ ]["]drxd\.fw["][,][ ]state->dev[)]<0[)][ ][*][/]'
-    blobname 'drxd\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    blobna 'www\.elandigitalsys[^\n]*download' drivers/mmc/host/Kconfig
-    blobname 'vub_\(default\.bin\|%04X%04X\)' drivers/mmc/host/vub300.c
-    blobna 'snprintf[(]vub300->vub_name[ ][+][^\n]*[,][ ]["]\.bin["][)][;]' drivers/mmc/host/vub300.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flexonenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(low\(est\)\?\|high\|mixed\)_ob_db\|high_power\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(radio\|baseband\|mac\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]u16[ ]mwifiex_data_rates\[MWIFIEX_SUPPORTED_RATES_EXT\][ ]=' drivers/net/wireless/mwifiex/cfp.c
-    accept '[	]\.helper[	][	]=[ ]NULL[,][\n][	]*\.firmware' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8787_uapsta\(_w1\)\?\.bin' drivers/net/wireless/mwifiex/main.h
-    blobname 'sd8787\.bin' drivers/net/wireless/mwifiex/sdio.c
-    blobna 'Copy[ ]sd8787\.bin[ ]to[^.]*[.]' drivers/net/wireless/mwifiex/README
-    blobname 'rtlwifi[/]rtl8192sefw\.bin' drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-    defsnc 'u32[ ]rtl8192sephy_reg_2t2rarray\[PHY_REG_2T2RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_changeto_1t[12]rarray\[PHY_CHANGETO_1T[12]RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_reg_array_pg\[PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seradioa_1t_array\[RADIOA_1T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192semac_2t_array\[MAC_2T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seagctab_array\[AGCTAB_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    accept 'Place[ ]isci_firmware\.bin[ ]in' drivers/scsi/isci/firmware/README
-    # This is not a code blob, it is just small data structures described in create_fw.[ch].
-    accept 'static[ ]const[ ]char[ ]blob_name\[\][ ]=[ ]["]isci_firmware\.bin["]' drivers/scsi/isci/create_fw.h
-    accept '[	][	]orom[ ]=[ ]isci_request_firmware' drivers/scsi/isci/init.c
-    accept 'MODULE_FIRMWARE[(]ISCI_FW_NAME[)][;]' drivers/scsi/isci/init.c
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    accept '[	]if[ ][(]request_firmware[(][&]fw[,][ ]ISCI_FW_NAME[,]' drivers/scsi/isci/probe_roms.c
-    accept '#define[ ]ISCI_FW_NAME[	][	]["]isci[/]isci_firmware\.bin["]' drivers/scsi/isci/probe_roms.h
-    defsnc 'static[ ]struct[ ]pll_limit[ ]\(cle266\|k800\|cx700\|vx855\)_pll_limits\[\][ ]=' drivers/video/via/hw.c
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    blobname 'wm8958_\(enh_eq\|mbc\(_vss\)\?\)\.wfw' sound/soc/codecs/wm8958-dsp2.c
-    blobname 'rtl_nic[/]rtl8168e-[12]\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e\[\][ ]=' drivers/net/r8169.c
-    blobname 'ti-connectivity[/]wl128x-fw\(-ap\)\?\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    defsnc 'static[ ]const[ ]u8[ ]tg3_tso_header\[\][ ]=' drivers/net/tg3.c
-    blobname 'ath6k[/]AR6003[/]hw2\.1\.1[/]\(otp\|athwlan\|athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    accept '[	]nvc0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*nvc0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    blobname 'nouveau[/]\(nv%02x_\)\?%s' 'drivers/gpu/drm/nouveau/nv[ce]0_graph\.c'
-    blobname 'radeon[/]SUMO2\?_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
-    blobname 'iwlwifi-\(105\|20[03]\?0\)-' drivers/net/iwlwifi/iwl-2000.c
-    blobname '__stringify[(]api[)][ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[1256]000\)\.c\)'
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    # New in 3.2
-    blobname 'ath6k[/]AR600[0-9.]*[/]hw[0-9.]*[/][^/"]*\.\(bin\|z77\)' drivers/net/wireless/ath/ath6kl/core.h
-    accept 'userspace[,][ ]using[ ]the[ ]request_firmware[(][)][ ]function' Documentation/power/suspend-and-cpuhotplug.txt
-    defsnc 'static[ ]struct[ ]sh_keysc_info[ ]keysc_platdata[ ]=[ ]' arch/arm/mach-shmobile/board-kota2.c
-    defsnc 'static[ ]const[ ]u32[ ]rir_offset\[MAX_RIR_RANGES\]\[MAX_RIR_WAY\][ ]=' drivers/edac/sb_edac.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]s32[ ]wmi_rate_tbl\[\]\[2\][ ]=' drivers/net/wireless/ath/ath6kl/wmi.c
-    defsnc '[	]struct[ ]lcn_tx_iir_filter[ ]tx_iir_filters_\(cck\|ofdm\)\[\][ ]=' drivers/net/wireless/b43/phy_lcn.c
-    defsnc 'const[ ]u32[ ]b43_httab_0x1a_0xc0_late\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_lcntab_0x[01][0-9a-f]\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc '[	]b43_lcntab_tx_gain_tbl_2ghz_ext_pa_rev0\[B43_LCNTAB_TX_GAIN_SIZE\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]struct[ ]channel_list[ ]ChannelPlan\[\][ ]=' drivers/staging/rtl8192e/dot11d.c
-    defsnc 'u32[ ]Rtl8192PciE\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)Array\[\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)ArrayLengthPciE\][ ]=' drivers/staging/rtl8192e/r8192E_hwimg.c
-    defsnc 'static[ ]u8[ 	]CCKSwingTable_\(Ch1_Ch13\|Ch14\)\[CCK_Table_length\]\[8\][ ]=' drivers/staging/rtl8192e/rtl_dm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(power\|emif[01]\)_pins\[\][ ]=' drivers/pinctrl/pinmux-u300.c
-    defsnc 'static[ ]const[ ]struct[ ]pll_div[ ]codec_\(master\|slave\)_pll_div\[\][ ]=' sound/soc/codecs/rt5631.c
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]\.download_firmware[ ]=[ ]it913x_download_firmware[,][\n][	]\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-it9137-01\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    blobname '%s[/]bdata\.%s\.bin' drivers/net/wireless/ath/ath6kl/init.c
-    blobna 'Used[ ][(]for[ ]now[)][^*]*\([*]\+[^/*][^*]*\)*[*]*["]bdata\.bin["][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/ath/ath6kl/init.c
-    blobname 'mrvl[/]pcie8766_uapsta\.bin' 'drivers/net/wireless/mwifiex/pcie\.[ch]'
-    accept '#define[ ]FIRMWARE[ \t]*["]usbduxsigma_firmware\.bin["]' drivers/staging/comedi/drivers/usbduxsigma.c
-    accept 'MODULE_DESCRIPTION[(]["]Stirling[/]ITL[ ]USB-DUX[ ]SIGMA[^"]*["][)][;][\n]MODULE_LICENSE[(]["]GPL["][)][;][\n]MODULE_FIRMWARE[(]FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbduxsigma.c
-    blobname 'as102_data[12]_[sd]t\.hex' drivers/staging/media/as102/as102_fw.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)Array\[\(Boot\|Main\|Data\)ArrayLengthPciE\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192e/r8192E_hwimg.c
-    blobna '\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\)*' drivers/staging/rtl8192e/r8192E_firmware.c
-    blobname 'imx[/]sdma[/]sdma-imx5[13]\.bin' 'arch/arm/boot/dts/imx5[13]-\(babbage\|ard\|evk\|qsb\|smd\)\.dts'
-    blobname 'libertas[/]usb8388_olpc\.bin' drivers/net/wireless/libertas/if_usb.c
-    blobname 'rtlwifi[/]rtl8192cfwU\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-3\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'pcxhr[/]%s' sound/pci/pcxhr/pcxhr_hwdep.c
-    blobname 'mrvl[/]sd8797_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    blobname 's5p-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'rtl_nic[/]rtl8168f-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-
-    blobna '[/][*][\n][ ][*][ ]AMD[ ]microcode[ ]firmware[ ]naming[ ]convention[^*]*\([*]\+[^/*][^*]*\)*[*]*amd-ucode[/][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' arch/x86/kernel/microcode_amd.c
-    blobname 'amd-ucode[/]microcode_amd_fam\(%\.2x\|[0-9a-f]*\)h\.bin' arch/x86/kernel/microcode_amd.c
-
-    # New in 3.3.
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl2g_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_\(workaround\[2\]\[4\]\|wa_phy6_radio11_ghz2\)[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]da9052_chg_current_lim\[2\]\[DA9052_CHG_LIM_COLS\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]u32[ ]const[ ]vc_tbl\[3\]\[68\]\[2\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]const[ ]int[ ]PIO2_CHANNEL_BANK\[32\][ ]=' drivers/staging/vme/devices/vme_pio2.h
-    defsnc 'static[ ]const[ ]struct[ ]sirfsoc_baudrate_to_regv[ ]baudrate_to_regv\[\][ ]=' drivers/tty/serial/sirfsoc_uart.c
-    defsnc 'static[ ]const[ ]struct[ ]dispc_coef[ ]coef[35]_M\(1[123469]\|2[26]\|32\)\[8\][ ]=' drivers/video/omap2/dss/dispc_coefs.c
-    defsnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]=' lib/clz_tab.c
-    defsnc 'static[ ]struct[ ]cs42l73_mclk_div[ ]cs42l73_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs42l73.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
-    defsnc 'static[ ]int[ ]_process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' sound/soc/codecs/sigmadsp.c
-    defsnc 'int[ ]process_sigma_firmware\(_regmap\)\?[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*_process_sigma_firmware' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware_regmap[)]' sound/soc/codecs/sigmadsp.c
-    accept 'extern[ ]int[ ]process_sigma_firmware_regmap[(][^)]*[)][;]' sound/soc/codecs/sigmadsp.h
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
-    # These appear to be identifiers within the device itself,
-    # used to get information from it.
-    accept '#define[ ]LANCER_\(FW_DUMP\|VPD_[PV]F\)_FILE[	]*["][/]\(dbg[/]dump\.bin\|vpd[/]ntr_[pv]f\.vpd\)["]' drivers/net/ethernet/emulex/benet/be_cmds.h
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-it9135-0[12]\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-hauppauge-hvr930c-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'brcm[/]brcmfmac\.\(bin\|txt\)' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-
-    # New in 3.4
-    blobname 'dvb-fe-xc5000-1\.6\.114\.fw' drivers/media/common/tuners/xc5000.c
-    blobname 'dvb-fe-xc5000c-41\.024\.5\.fw' drivers/media/common/tuners/xc5000.c
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.\(SD3[12]\|WB31\|CUSTOM\|DB132\)\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.39
-    accept '[#]define[ ]FIRMWARE_AR7010[ 	]*["]ar7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]ar7010_1_1\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]ar9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.35
-    accept '[	]ATH9K_FW_USB_DEV[(]0x\(9271\|1006\)[,][ ]["]ar9271\.fw["][)][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]dev_info[(][&]hif_dev->udev->dev[,][ ]["]ath9k_htc:[^\n"]*["][,][\n][	 ]*["]ar9271\.fw["][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]fw_name[,][ ][&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-
-    # New in 3.10
-    accept '[ \t]*edid[ ]=[ ]\[00[ ]FF[ 0-9A-F\n\t]*\]' arch/powerpc/boot/dts/ac14xx.dts
-    accept 'K256:[\n][\t]\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx-asm.S
-    accept 'K256:[\n][\t]\.long[\t]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[\t][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx2-asm.S
-    accept 'K256:[\n][ ]*\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][ ]*\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-ssse3-asm.S
-    accept 'K512:[\n][\t]\.quad[ ]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[ ][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-\(avx\|ssse3\)-asm\.S'
-    accept 'K512:[\n][\t]\.quad[\t]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[\t][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-avx2-asm.S'
-    defsnc 'static[ ]const[ ]uint32_t[ ]axi_clkgen_lock_table\[\][ ]=' drivers/clk/clk-axi-clkgen.c
-    defsnc 'static[ ]const[ ]int[ ]arizona_micd_levels\[\][ ]=' drivers/extcon/extcon-arizona.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v13_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    defsnc 'static[ ]const[ ]u32[ ]\(evergreen\|cedar\|supersumo\|wrestler\|barts\|turks\|caicos\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cypress\|redwood\|cedar\|juniper\)_mgcg_init\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cayman\|dvst\|scrapper\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]\(r7xx\|rv7[1347]0\)_\(golden_registers\|mgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/rv770.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\|oland\|hainan\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]verde_pg_init\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]hainan_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]s16[ ]temp_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u8[ ]via_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]uint64_t[ ]crc_table\[256\][ ]=' drivers/md/bcache/util.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]ofsm_init_it9135_v[12]\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_it9135_\(38\|51\|52\|60\|61\|62\)\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsc 'static[ ]struct[ ]regdata[ ]mb86a20s_init2\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    defsnc 'static[ ]const[ ]u8[ ]channel_registers\[\][ ]=' drivers/media/i2c/tw2804.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]si476x_property_range[ ]valid_ranges\[\][ ]=' drivers/mfd/si476x-prop.c
-    defsnc '[\t]static[ ]const[ ]unsigned[ ]int[ ]t[45]_reg_ranges\[\][ ]=' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_wa_phy6_radio11_ghz2[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[4\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5592_xtal[24]0\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'u32[ ]RTL8188EEPHY_REG_\(1TARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EE_RADIOA_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEMAC_1T_ARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEAGCTAB_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsc 'static[ ]const[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'drivers/pinctrl/sh-pfc/pfc-\(r8a77\(40\|79\)\|sh72\(03\|69\)\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[ab]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]int[ ]ab8540_charge_\(output\|input\)_curr_map\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]ldo_vaux56_ab8540_voltages\[\][ ]=' drivers/regulator/ab8500.c
-    accept '[\t]rproc->firmware[ ]=[ ]p[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]vop_6010_\(ntsc\|pal\)_\(d1\|cif\)\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
-    defsnc 'u8[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]u32[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6656/tcrc.c
-    defsnc 'const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]tas5086_reg_defaults\[\][ ]=' sound/soc/codecs/tas5086.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8688\(_helper\)\?\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8897_uapsta\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname '\(\(atsc\|tdmb\)_denver\|cmmb_\(ming_app\|venice_12mhz\)\|dvbh\?_rio\|fm_radio\(_rio\)\?\|isdbt_\(pele\|rio\)\)\.inp' drivers/media/common/siano/smscoreapi.h
-    blobname 'tigon[/]tg357766\.bin' drivers/net/ethernet/broadcom/tg3.c
-    blobname 'cxgb4[/]t5fw\.bin' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    blobname 'rtl_nic[/]rtl8106e-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-[23]\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'mwl8k[/]fmimage_8764_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'go7007[/]go7007fw\.bin' drivers/staging/media/go7007/go7007-driver.c
-    blobname 'go7007[/]go7007tv\.bin' drivers/staging/media/go7007/go7007-fw.c
-    blobname 'go7007[/]\(s2250-[12]\|px-\(m\|tv\)402u\|lr192\|wis-startrek\)\.fw' drivers/staging/media/go7007/go7007-loader.c
-    blobname 'intel[/]ibt-hw-%x\.%x\(\.%x-fw-%x\.%x\.%x\.%x\.%x\)\?\.bseq' drivers/bluetooth/btusb.c
-    blobname 'radeon[/]\(RV710\|CYPRESS\|SUMO\|TAHITI\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'imspcu\.fw' drivers/input/misc/ims-pcu.c
-    blobname 'fimc_is_fw\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'setfile\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'rtlwifi[/]rtl8188efw\.bin' drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODA_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-
-    # New in 3.12.
-    blobname 's5p-mfc-v7\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
-    blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
-    defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    accept '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
-    defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a3xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    blobname 'a3[03]0_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_\(bonaire\|saturn\)_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]struct[ ]kv_lcac_config_values[ ]cpl_local_cac_cfg_kv\[\][ ]=' drivers/gpu/drm/radeon/kv_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]imx_i2c_clk_pair[ ]\(imx\|vf610\)_i2c_clk_div\[\][ ]=' drivers/i2c/busses/i2c-imx.c
-    defsnc 'static[ ]const[ ]u16[ ]apds9300_lux_ratio\[\][ ]=' drivers/iio/light/apds9300.c
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_4313_ipa_rev0_combo\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    accept '[	][	]adapter->firmware[ ]=[ ]NULL' drivers/net/wireless/mwifiex/main.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]const[ ]int[ ]bq24190_\(ccc_ichg\|cvc_vreg\)_values\[\][ ]=' drivers/power/bq24190_charger.c
-    blobname '[(]i\.e\.[ ]["]asfep\.bin["][)][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '[(]["][/]etc[/]dgap[/]xrfep\.bin["][)][;][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '["][/]lib[/]firmware[/]dgap[/]["]' drivers/staging/dgap/downld.c
-    blobname '\(fx\|cx\|cxp\|ibm\(cx\|en\)\|xr\|sx\|pci\)\(bios\|fep\|con\|host\)\.bin' drivers/staging/dgap/downld.c
-    defsnc 'static[ ]const[ ]struct[ ]msi3101_gain[ ]msi3101_gain_lut_\(120\|245\|1000\)\[\][ ]=' drivers/staging/media/msi3101/sdr-msi3101.c
-    defsnc 'static[ ]struct[ ]ch_freq[ ]ch_freq_map\[\][ ]=' drivers/staging/rtl8188eu/core/rtw_rf.c
-    defsnc 'static[ ]\(const\)\?[ ]\?u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u32[ ]T[ed]0\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u8[ ]Td4s\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]u32[ ]array_\(agc_tab\|phy_reg\)_\(1t\|pg\)_8188e\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_BB.c
-    defsnc 'static[ ]u32[ ]array_MAC_REG_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_RF.c
-    defsnc '[	]u8[	]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/HalPhyRf.c
-    defsnc 'static[ ]const[ ]u16[ ]dB_Invert_Table\[8\]\[12\][ ]=' drivers/staging/rtl8188eu/hal/odm.c
-    blobname 'rtl8188E[/\\]*rtl8188efw\.bin' drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-    defsnc 'static[ ]const[ ]unsigned[ ]long[ ]K\[64\][ ]=' drivers/staging/rtl8188eu/include/rtw_security.h
-    defsnc '[	]static[ ]const[ ]struct[ ]msm_baud_map[ ]table\[\][ ]=' drivers/tty/serial/msm_serial.c
-    defsnc 'static[ ]u8[ ]hx8369_seq_gamma_curve_related\[\][ ]=' drivers/video/backlight/hx8357.c
-    defsnc 'static[ ]const[ ]wchar_t[ ]t2_\(0[012345]\|1[def]\|2[14cd]\|a[67]\|ff\)\[256\][ ]=' fs/cifs/winucase.c
-    accept '[	]*\(\(el\)\?if[ ]\[[ ]-f\|cp[ ]-v[ ]--\)[ ]["][$][{]objtree[}][/]arch[/]mips[/]boot[/]\(compressed[/]\)\?vmlinux\.bin["]' scripts/package/buildtar
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]pcm1681_reg_defaults\[\][ ]=' sound/soc/codecs/pcm1681.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8997_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm8997.c
-    blob '[\t]0xE1[,][ ]0x88[,][ ]0x10[,][ ]0x00[,][ ]0x0B[,][ ]0x00[,][ ]0x01[,][ ]0x00[,]\([\n][\t][0-9xA-F, ]*\)*' drivers/staging/rtl8188eu/hal/Hal8188EFWImg_CE.c
-
-    # New in 3.13
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-drxk-01\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?firmware-2\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43\(143\|241b[04]\|29\|3[045]\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7265-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    accept '[\t][\t]brightness-levels[ ][=][ ][<][0-9 \t\n]*[>][;]' arch/arm/boot/dts/imx28-tx28.dts
-    accept '[\t]echo[ ]["]mic[/]uos\.img["][ ]' Documentation/mic/mpssd/micctrl
-    accept '[\t]mdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/host/mic_sysfs.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ \t\n]*mdev->\(ramdisk\|firmware\)[,][ ]mdev->sdev->parent[)][;]' drivers/misc/mic/host/mic_x100.c
-    accept '[\t]*["]\(ramdisk\|firmware\)[ ]request_firmware[ ]failed' drivers/misc/mic/host/mic_x100.c
-    defsnc 'static[ ]const[ ]struct[ ]dsi_clock_table[ ]dsi_clk_tbl\[\][ ]=' drivers/gpu/drm/i915/intel_dsi_pll.c
-    defsnc 'uint32_t[ ]nv108_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
-    defsnc 'uint32_t[ ]nva3_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
-    defsnc 'uint32_t[ ]nvc0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
-    defsnc 'uint32_t[ ]nvd0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_hawaii_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    accept '[\t]["]edid[/]\(1024x768\|1280x1024\|1600x1200\|1680x1050\|1920x1080\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc '[\t]unsigned[ ]char[ ]buf\[\][ ]=' drivers/hid/hid-sony.c
-    blobname 'dvb-fe-cx24117\.fw' drivers/media/dvb-frontends/cx24117.c
-    blobname 'vpdma-1b8\.bin' drivers/media/platform/ti-vpe/vpdma.c
-    defsnc 'static[ ]const[ ]u8[ ]ov361x_start_\(2048\|1600\|1024\|640\|320\|160\)\[\]\[2\][ ]=' drivers/media/usb/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]tuning_blk_pattern_[48]bit\[\][ ]=' drivers/mmc/host/dw_mmc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_8192_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc '[\t]static[ ]u8[ ]PN9Data\[\][ ]=' drivers/net/wireless/ath/ath9k/main.c
-    blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-    defsnc 'static[ ]s32[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rtlwifi[/]rtl8188eufw\.bin' drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc '[}][ ]test2\[\][ ]=' lib/random32.c
-    defsnc 'static[ ]const[ ]struct[ ]hda_verb[ ]hp_bnb13_eq_verbs\[\][ ]=' sound/pci/hda/patch_sigmatel.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]aic3x_reg\[\][ ]=' sound/soc/codecs/tlv320aic3x.c
-    blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-
-    # New in 3.13.2
-    blobname 'rtlwifi[/]rtl8192cufw_\([AB]\|TMSC\)\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-
-    # New in 3.14
-    blobname 'dvb-usb-technisat-cablestar-hdci-drxk\.fw' drivers/media/usb/dvb-usb-v2/az6007.c
-    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'brcm[/]brcmfmac43362-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac4339-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'mrvl[/]usb8897_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
-    blobname 'cbfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-
-    # New in 3.14.6
-    blobname 'radeon[/]\(%s\|BONAIRE\|HAWAII\|TAHITI\|PITCAIRN\|VERDE\|OLAND\|HAINAN\)_mc2\.bin' 'drivers/gpu/drm/radeon/\(cik\|si\)\.c'
-
-    # New in 3.15
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nvc0_graph_init[\n]nvc0_graph_init_\(main\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'static[ ]const[ ]u32[ ]godavari_golden_registers\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'brcm[/]brcmfmac4354-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname '%s%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
-    blobname 'ti-connectivity[/]wl18xx-fw-3\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ql2700_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-
-    # New in 3.16
-    defsnc '[\t]*atmel[,]pll-clk-output-ranges[ ]=[ ]<' 'Documentation/devicetree/bindings/clock/at91-clock\.txt\|arch/arm/boot/dts/at91sam9x5\.dtsi'
-    blobname 'imx[/]sdma[/]sdma-imx25\.bin' arch/arm/boot/dts/imx25.dtsi
-    blobname 'imx[/]sdma[/]sdma-imx35\.bin' arch/arm/boot/dts/imx35.dtsi
-    blobname 'imx[/]sdma[/]sdma-imx50\.bin' arch/arm/boot/dts/imx50.dtsi
-    blobname 'sdma-imx53\.bin' arch/arm/boot/dts/imx53-tx53.dtsi
-    defsnc 'struct[ ]sock_filter[ ]code\[\][ ]=' Documentation/networking/filter.txt
-    initnc '\.L\(Forward\|Reverse\)_Sbox:[\n][\t]\.byte[\t]*' arch/arm64/crypto/aes-neon.S
-    initnc '\.Lsha2_rcon:[\n][\t]\.word[\t]*' arch/arm64/crypto/sha2-ce-core.S
-    defsnc 'static[ ]const[ ]u8[ ]sata_phy_config[12]\[\][ ]*=' arch/mips/netlogic/xlp/ahci-init-xlp2.c
-    accept '[	]*interrupts[ ]=[ ]<108[ ]0\([\n][	 ]*1[012][0-9][ ]0\)*>[;]' arch/powerpc/boot/dts/akebono.dts
-    defsnc '[\t]static[ ]int[ ]sysdiv_code_to_x2\[\][ ]=' arch/powerpc/platforms/512x/clock-commonclk.c
-    accept '[#][#][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_avx-x86_64.S
-    defsc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|224\|256\|384\|512\)_\(aes\|des\|des3_ede\)_cbc_enc_tv_temp\[\][ ]=' crypto/testmgr.h
-    accept '#define[ \t]*ACPI_TABLE_FILE_SUFFIX[\t ]*["]\.dat["]' drivers/acpi/acpica/acapps.h
-    accept '[ ][*][ ]request_firmware\(_direct\)\?:[ ]-[ ]load[ ]firmware[ ]directly[ ]without[ ]usermode[ ]helper' drivers/base/firmware_class.c
-    accept '[ ][*][ ]This[ ]function[ ]works[ ]pretty[ ]much[ ]like[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'int[ ]request_firmware_direct[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,][ ]FW_OPT_UEVENT[)][;]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL_GPL[(]request_firmware_direct[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]armada_375_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-375.c
-    defsnc 'static[ ]const[ ]int[ ]armada_38x_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-38x.c
-    defsnc 'static[ ]struct[ ]cpufreq_frequency_table[ ]s3c64xx_freq_table\[\][ ]=' drivers/cpufreq/s3c64xx-cpufreq.c
-    defsnc 'static[ ]const[ ]u8[ ]ccp_sha\(1\|224\|256\)_zero\[CCP_SHA_CTXSIZE\][ ]=' drivers/crpto/ccp/ccp-ops.c
-    blobname 'ast_dp501_fw\.bin' drivers/gpu/drm/ast/ast_dp501.c
-    accept '[\t]["]edid[/]\(800x600\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]void[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_5420_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    # These seem too sparse to be code.
-    defsnc 'static[ ]const[ ]u32[ ]gen6_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen6.c
-    defsnc 'static[ ]const[ ]u32[ ]gen7_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen7.c
-    defsnc 'static[ ]const[ ]u32[ ]gen8_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen8.c
-    defsnc 'nv50_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
-    defsnc 'nv84_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
-    defsnc 'nva0_disp_ovly_mthd_base[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nva0.c
-    defsnc 'nvd0_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
-    defsnc 'nve0_disp_\(mast_mthd_head\|ovly_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
-    defsnc 'gm107_grctx_init_\(\(icmd\|b097\|fe\|ds\|pd\|be\|setup\|tex\|mpc\|sm\|wwdx\)_0\|gpc_unk_2\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxgm107.c
-    defsnc 'nv108_grctx_init_\(icmd\|fe\|ds\|pd\|rstr2d\|be\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnv108.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|fe\|memfmt\|rstr2d\|prop\|setup\|crstr\|zcullr\|wwdx\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|setup\|wwdx\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc4_grctx_init_\(tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc4.c
-    defsnc 'nvc8_grctx_init_\(icmd\|setup\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(ds\|pd\|setup\|tex\|wwdx\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|fe\|ds\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|fe\|memfmt\|ds\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(icmd\|a197\|fe\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]gm107_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5.h
-    defsnc 'uint32_t[ ]nv108_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h
-    defsnc 'uint32_t[ ]gm107_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5.h
-    defsnc 'uint32_t[ ]nv108_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
-    defsnc 'gm107_graph_init_\(main\|tpccs\|tex\|sm\|be\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/gm107.c
-    defsnc 'nv108_graph_init_\(main\|l1c\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv108.c
-    defsnc 'nvc4_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc4.c
-    defsnc 'nvc8_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd9_graph_init_\(gpc_unk_1\|sm_0\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(\(main\|l1c\|sm\|be\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_\(\(l1c\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc 'static[ ]u8[ ]const[ ]ld9040_gammas\[25\]\[22\][ ]=' drivers/gpu/drm/panel/panel-ld9040.c
-    defsnc 'static[ ]void[ ]s6e8aa0_panel_cond_set[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*s6e8aa0_dcs_write_seq_static[(]ctx[,][\n\t0x0-9a-f, ]*[)][;]' drivers/gpu/drm/panel/panel-s6e8aa0.c
-    defsnc 'static[ ]const[ ]s6e8aa0_gamma_table[ ]s6e8aa0_gamma_tables_v\(142\|96\|32\)\[GAMMA_LEVEL_NUM\][ ]=' drivers/gpu/drm/panel/panel-s6e8aa0.c
-    blobname 'radeon[/]BONAIRE_vce\.bin' drivers/gpu/drm/radeon/radeon_vce.c
-    defsnc '[\t]static[ ]const[ ]__u8[ ]sixaxis_leds\[10\]\[4\][ ]=' drivers/hid/hid-sony.c
-    defsnc '[\t]union[ ]sixaxis_output_report_01[ ]report[ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]int[ ]twl4030_therm_tbl\[\][ ]=' drivers/iio/adc/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]linear_segments[ ]strength_to_db_table\[\][ ]=' drivers/media/dvb-frontends/dib8000.c
-    blobname 'dvb-fe-drxj-mc-1\.0\.8\.fw' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    defsnc 'static[ ]const[ ]u16[ ]nicam_presc_table_val\[43\][ ]=' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    accept '[\t][\t]*demod->firmware[ ]=[ ]\(fw\|NULL\)[;]' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    blobname 'dvb-demod-m88ds3103\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88ds3103_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
-    blobname 'dvb-demod-si2168-02\.fw' drivers/media/dvb-frontends/si2168_priv.h
-    blobname 's5k5baf-cfg\.bin' drivers/media/i2c/s5k5baf.c
-    defsnc 'static[ ]const[ ]u16[ ]scaler_[hv]s_coeffs\[1[35]\]\[SC_NUM_PHASES[ ][*][ ]2[ ][*][ ]SC_[HV]_NUM_TAPS\][ ]=' drivers/media/platform/ti-vpe/sc_coeff.h
-    defsnc 'static[ ]const[ ]struct[ ]si4713_start_seq_table[ ]start_seq\[\][ ]=' drivers/media/radio/si4713/radio-usb-si4713.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_gain[ ]e4000_if_gain_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]dtcs033_usb_requests[ ]dtcs033_start_reqs\[\][ ]=' drivers/media/usb/gspca/dtcs033.c
-    defsnc 'static[ ]struct[ ]idxdata[ ]tbl_\(\(middle\|end\)_hvflip\(_\(low\|big\)\)\?\|init_post_alt_\(low[123]\|big\|3B\)\)\[\][ ]=' drivers/media/usb/gspca/gl860/gl860-mi2020.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revd_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]tuning_block_128\[\][ ]=' drivers/mmc/host/sdhci-msm.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]ecc_layout_[24]KB_bch[48]bit[ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    defsnc '[\t]static[ ]char[ ]packet\[\][ ]=' drivers/net/ethernet/intel/i40e/i40e_txrx.c
-    defsnc 'u8[ ]netvsc_hash_key\[HASH_KEYLEN\][ ]=' drivers/net/hyperv/rndis_filter.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_buffalo\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_cus227_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_common_\(mixed_\)\?rx_gain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_modes_\(low\|mix\|high\)_ob_db_tx_gain\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p[01]_\(\(mac\|baseband\|radio\)_core\|modes_\(no_\)\?xpa_tx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p0_\(baseband\|radio\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_\(phy\|radio\)_rev\([34568]\|7_9\|11\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_noisevar_r3\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'iwlwifi-8000-' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname 'iwl_nvm_8000\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
-    defsnc 'static[ ]const[ ]u8[ ]iwl_nvm_channels_family_8000\[\][ ]=' drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
-    defsnc 'static[ ]const[ ]u16[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rsi_91x\.fw' drivers/net/wireless/rsi/rsi_common.h
-    defsnc 'static[ ]const[ ]u32[ ]RF_GAIN_TABLE\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
-    defsnc 'static[ ]const[ ]u8[ ]\(cck_ofdm_gain_settings\|rtl8225se_tx_power_cck\(_ch14\)\?\|ZEBRA_AGC\|OFDM_CONFIG\)\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
-    defsnc '[\t]u16[ ]toshiba_smid1\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/hw.c
-    blobname 'rtlwifi[/]rtl8723befw\.bin' drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-    defsnc 'u32[ ]RTL8723BE\(PHY_REG\|_RADIOA\|MAC\|AGCTAB\)_\(1T_\?ARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwfi/rtl8723be/table.c
-    defsnc 'static[ ]\(const[ ]unsigned[ ]\)\?int[ ]tps65864[03]_sm2_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]uint32_t[ ]ql27xx_fwdt_default_template\[\][ ]=' drivers/scsi/qla2xxx/qla_tmpl.c
-    blobname 'dgap[/]\(sx\|cxp\|pci\|xr\)\(bios\|fep\)\.bin' drivers/staging/dgap/dgap.c
-    accept '[\t][ ]*kernel[ ]firmware[ ]framework[,][ ]request_firmware[(][)]' drivers/staging/gs_fpgaboot/README
-    defsnc 'static[ ]u8[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc '[\t]u8[ ]data_ptr\[36\][ ]=' drivers/staging/keucr/smscsi.c
-    # This is a default for the user-supplied fpga configuration; it
-    # is overridable with a module parameter.
-    accept 'static[ ]char[ \t]*[*]file[ ]=[ ]["]xlinx_fpga_firmware\.bit["][;]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    blobname '\(ti1273\(_\(pre\)\?le\)\?\|bc[m4]fw\)\.bin' drivers/staging/nokia_h4p/nokia_fw.c
-    defsnc '[\t]u8[ ]channel5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/hw.c
-    blobname 'rtlwifi[/]rtl8192eefw\.bin' drivers/staging/rtl8192ee/rtl8192ee/sw.c
-    defsnc 'u32[ ]RTL8192EE_\(PHY_REG\|RADIO[AB]\|MAC\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/table.c
-    defsnc '[\t]u8[ ]Channel_5G\[45\][ ]=' drivers/staging/rtl8723au/core/rtw_mlme_ext.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\]=' drivers/staging/rtl8723au/core/rtw_security.c
-    defsnc 'u32[ ]Rtl8723UPHY_REG_Array_PG\[Rtl8723UPHY_REG_Array_PGLength\][ ]=' drivers/staging/rtl8723au/hal/Hal8723UHWImg_CE.c
-    defsnc 'static[ ]u32[ ]Array_\(AGC_TAB\|PHY_REG\)_\(1T\|PG\)_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
-    defsnc 'static[ ]u32[ ]Array_MAC_REG_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
-    blobname 'rtlwifi[/]rtl8723aufw_\(A\|B\(_NoBT\)\?\)\.bin' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-    defsnc 'u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ab]_[np]_txpwrtrack\[\]\[DELTA_SWINGIDX_SIZE\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet_8821\[TOTAL_RESERVED_PKT_LEN_8821\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet_8812\[TOTAL_RESERVED_PKT_LEN_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
-    defsnc '[\t]u8[ ]channel_5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' 'drivers/staging/rtl8821ae/rtl8821ae/\(hw\|phy\)\.c'
-    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/phy.c
-    blobname 'rtlwifi[/]rtl8821aefw\.bin' drivers/staging/rtl8821ae/rtl8821ae/sw.c
-    defsnc 'u32[ ]RTL88\(12\|21\)AE_\(\(PHY\|MAC\)_REG\|RADIO[AB]\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/table.c
-    accept '#define[ ]CONFIG_PATH[\t]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6656/device.h
-    defsnc 'static[ ]const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    blobname 'moxa[/]moxa-\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.fw' drivers/usb/serial/mxuport.c
-    accept '#define[ \t]request_firmware_direct[ \t]request_firmware' include/linux/firmware.h
-    accept '[\t]report_missing_free_firmware[^\n]*[\n][\t]retval[ ]=[ ]request_firmware_direct[(]' include/linux/firmware.h
-    defsnc 'const[ ]u8[ ]crc7_be_syndrome_table\[256\][ ]=' lib/crc7.c
-    defsnc 'static[ ]struct[ ]bpf_test[ ]tests\[\][ ]=' lib/test_bpf.c
-    defsnc '[\t]static[ ]struct[ ]sock_filter[ ]ptp_filter\[\][ ]__initdata[ ]=' net/core/ptp_classifier.c
-    blobname 'adau1761\.bin' sound/soc/codecs/adau1761.c
-    accept '[\t][\t]ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][\n][\t ]*ADAU1761_FIRMWARE[)][;]' sound/soc/codecs/adau1761.c
-    blobname 'adau1[37]81\.bin' sound/soc/codecs/adau1781.c
-    accept '[\t][\t]firmware[ ]=[ ]ADAU1[37]81_FIRMWARE[;]\([\n][\n]*[\t][^\n]*\)*ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][ ]firmware[)][;]' sound/soc/codecs/adau1781.c
-    blobna 'adau17x1_load_firmware' sound/soc/codecs/adau17x1.c
-    accept 'int[ ]adau17x1_load_firmware[(]' 'sound/soc/codecs/adau17x1\.[ch]'
-    accept 'EXPORT_SYMBOL_GPL[(]adau17x1_load_firmware[)][;]' sound/soc/codecs/adau17x1.c
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware_regmap[(]dev[,][ ]adau->regmap[,][ ]firmware[)][;]' sound/soc/codecs/adau17x1.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]adau1977_reg_defaults\[\][ ]=' sound/soc/codecs/adau1977.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak4641_reg_defaults\[\][ ]=' sound/soc/codecs/ak4641.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak464[28]_reg\[\][ ]=' sound/soc/codecs/ak4642.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5645_reg\[\][ ]=' sound/soc/codecs/rt5645.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5651_reg\[\][ ]=' sound/soc/codecs/rt5651.c
-    defsnc 'int[ ]_process_sigma_firmware[(]' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL_GPL[(]_process_sigma_firmware[)]' sound/soc/codecs/sigmadsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta350_regs\[\][ ]=' sound/soc/codecs/sta350.c
-    defsnc 'static[ ]const[ ]struct[ ]aic31xx_rate_divs[ ]aic31xx_divs\[\][ ]=' sound/soc/codecs/tlv320aic31xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8974_reg_defaults\[\][ ]=' sound/soc/codecs/wm8974.c
-    blobname 'intel[/]IntcSST[12]\.bin' sound/soc/intel/sst-acpi.c
-    blobname 'intel[/]fw_sst_0f28\.bin-i2s_master' sound/soc/intel/sst-acpi.c
-    defsnc 'static[ ]unsigned[ ]char[ ]bcd2000_init_sequence\[\][ ]=' sound/usb/bcd2000/bcd2000.c
-    blobna '[ ][*][ ]xxd[ ]-r[ ]-p[ ]mXTXXX[^\n]*maxtouch\.fw[\n][ \t]*[*][/]' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 's5p-mfc-v8\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-
-    # New in 3.17
-    blobname 'radeon[/]\(%s\|kaveri\|KAVERI\)_mec2\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-si2168-\(\(a[23]\|b4\)0-01\|-02\)\.fw' drivers/media/dvb-frontends/si2168_priv.h
-    accept '[	]\[CODA_IMX6\(Q\|DL\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'v4l-coda960-imx6\(q\|dl\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc-v6-v2\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'dvb-fe-xc4000-1\.4\(\.1\)\?\.fw' drivers/media/tuners/xc4000.c
-    blobname 'ti-connectivity[/]TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/misc/ti-st/st_kim.c
-    blobname 'fw-5\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'brcm[/]brcmfmac43569\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname '3826\.eeprom' drivers/net/wireless/p54/p54spi.c
-    defsnc 'static[ ]const[ ]u64[ ]sha512_k\[\][ ]=' arch/arm/crypto/sha512_neon_glue.c
-    accept 'K_table:\([\n][ 	]*\.long[ 	]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    accept '\.L_s[12345678]:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/des3_ede-asm_64.S
-    defsnc '[\t]const[ ]unsigned[ ]char[ ][*]K[ ]=[ ][(]unsigned[ ]char[ ][*][)]' crypto/drbg.c
-    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]uint64_t[ ]inst\[\][ ]=' drivers/crypto/qat/qat_common/qat_hal.c
-    defsnc 'gk110b_\(grctx\|graph\)_init_\(sm\|l1c\)_0\[\][ ]=' drivers/gpu/dm/nouveau/core/engine/graph/ctxgk110b.c
-    defsnc '[\t]const[ ]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    defsnc '[}][ ]samp_freq_table\[\][ ]=' drivers/iio/accel/kxcjk-1013.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/media/pci/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev\(4\|5a\?\|[789]\|14\)_init\[\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_\(\(tmap\|noisevar\)_r7\|tx_gain_\(epa\|ipa\(_2057\)\?\)_rev\([34569]\|14\)_\(hi_pwr_\)\?\(2g\|5g\)\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253InitTab_RFMD\[CB_VT3253_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_RFMD\[CB_VT3253B0_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AGC4_RFMD2959\[CB_VT3253B0_AGC_FOR_RFMD2959\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AIROHA2230\[CB_VT3253B0_INIT_FOR_AIROHA2230\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_UW2451\[CB_VT3253B0_INIT_FOR_UW2451\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AGC\[CB_VT3253B0_AGC\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]u8[ ]al2230_init_table\[CB_AL2230_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]\(al2230\|vt3226\)_channel_table[012]\[CB_MAX_CHANNEL_24G\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]al7230_init_table\(_amode\)\?\[CB_AL7230_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]\(al7230\|vt3342\)_channel_table[012]\[CB_MAX_CHANNEL\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]vt3226\(d0\)\?_init_table\[CB_VT3226_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]vt3342a0_init_table\[CB_VT3342_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]const[ ]u32[ ]al2230_power_table\[AL2230_PWR_IDX_LEN\][ ]=' drivers/staging/vt6656/rf.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware_direct[(]const[ ]struct[ ]firmware[ ][*][*]fw[,]' include/linux/firmware.h
-    defsnc 'static[ ]u8[ ]const[ ]__aligned[(]8[)][ ]test_buf\[\][ ]__initconst[ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]crc_test[ ][{][^}]*[}][ ]const[ ]test\[\][ ]__initconst[ ]=' lib/crc32.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]test_firmware[,]' lib/test_firmware.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]rt286_index_def\[\][ ]=' sound/soc/codecs/rt286.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt286_reg\[\][ ]=' sound/soc/codecs/rt286.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5670_reg\[\][ ]=' sound/soc/codecs/rt5670.c
-    accept 'FW=["][$]FWPATH[/]test-firmware\.bin["]' 'tools/testing/selftests/firmware/fw_\(filesystem\|userhelper\)\.sh'
-    blobname 'qat_895xcc\.bin' drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
-    blobname 'dvb-demod-si2165\.fw' drivers/media/dvb-frontends/si2165_priv.h
-    blobname 'dvb-tuner-si2158-a20-01\.fw' drivers/media/tuners/si2157_priv.h
-    blobname 'brcm[/]brcmfmac43\(602\|5[46]\|570\)-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmac/pcie.c
-    blobname 'r8a779x_usb3_v1\.dlmem' drivers/usb/host/xhci-rcar.c
-    blobname 'iwlwifi-3165-' drivers/net/wireless/iwlwifi/iwl-7000.c
-
-    # New in 3.18.
-    accept '[\t	]*interrupts[ ]=[ ]<\([ \n\t]*0[ ][4567][0-9][ ]0xf04\)*>[;]' Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
-    accept '[\t ]*<\([ \t\n]*[ 1-9][0-9 ][0-9]\)*>[;]' arch/arm/boot/dts/tegra124-nyan-big.dts
-    blobname 'keystone[/]qmss_pdsp_acc48_k2_le_1_0_0_8\.fw' Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]lz4\(hc\)\?_\(de\)\?comp_tv_template\[\][ ]=' crypto/testmgr.h
-    blobname 'mrvl[/]sd8887_uapsta\.bin' 'drivers/\(bluetooth/btmrvl_sdio\.c\|net/wireless/mwifiex/sdio.h\)'
-    blobname 'radeon[/]\(R600\|RS780\|RV770\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    defsnc '[}][ ]wake_odr_data_rate_table\[\][ ]=' drivers/iio/accel/kxcjk-1013.c
-    defsnc 'static[ ]const[ ]struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    defsnc 'static[ ]u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/pci/mantis/mantis_vp1033.c
-    blobname 'go7007[/]go7007tv\.bin' drivers/media/pci/saa7134/saa7134-go7007.c
-    defsnc 'static[ ]const[ ]u8[ ]vivid_hdmi_edid\[256\][ ]=' drivers/media/platform/vivid/vivid-core.c
-    defsnc 'static[ ]const[ ]s8[ ]sin\[257\][ ]=' drivers/media/platform/vivid/vivid-tpg.c
-    defsnc 'static[ ]const[ ]struct[ ]shf[ ]shf_tab\[\][ ]=' drivers/media/tuners/mxl301rf.c
-    defsnc 'static[ ]const[ ]u8[ ]reg_initval\[QM1D1C0042_NUM_REGS\][ ]=' drivers/media/tuners/qm1d1c0042.c
-    accept '[\t]*priv->firmware[ ]=[ ]fw[;][\n][\t][}][ ]else[\n][\t]*fw[ ]=[ ]priv->firmware[;]' drivers/media/tuners/xc5000.c
-    blobname 'dvb-usb-it9303-01\.fw' drivers/media/usb/dvb-usb-v2/af9035.h
-    defsnc 'const[ ]u8[ ]tuning_blk_pattern_4bit\[MMC_TUNING_BLK_PATTERN_4BIT_SIZE\][ ]=' drivers/mmc/core/mmc.c
-    defsnc 'const[ ]u8[ ]tuning_blk_pattern_8bit\[MMC_TUNING_BLK_PATTERN_8BIT_SIZE\][ ]=' drivers/mmc/core/mmc.c
-    defsnc 'static[ ]const[ ]u16[ ]fm10k_crc_16b_table\[256\][ ]=' drivers/net/ethernet/intel/fm10k/fm10k_mbx.c
-    accept '[\t ]*[*][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' drivers/net/ethernet/intel/fm10k/fm10k_mbx.h
-    blobname '83xx_post_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
-    blobname 'rtl_nic[/]rtl\(8168h\|8107e\)-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'firmware-3\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'utf\.bin' drivers/net/wireless/ath/ath10k/testmode.c
-    accept '[ ][*][ ]wil_request_firmware[ ]-[ ]Request[ ]firmware' drivers/net/wireless/ath/wil6210/fw_inc.c
-    accept 'int[ ]wil_request_firmware[(]' 'drivers/net/wireless/ath/wil6210/\(fw_inc\.c\|wil6210\.h\)'
-    accept '[\t]*rc[ ]=[ ]wil_request_firmware[(]wil[,][ ]WIL_FW_NAME[)][;]' drivers/net/wireless/ath/wil6210/fw_inc.c
-    blobname 'wil6210\.fw' drivers/net/wireless/ath/wil6210/wil6210.h
-    blobname 'FW[ ]Version:[ ]%d_%d_%d' drivers/net/wireless/broadcom/bnx2x/bnx2x_main.c
-    blobname '\([,][\n \t]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\)_VERSION\)\+' drivers/net/wireless/broadcom/bnx2x/bnx2x_main.c
-    blobname 'iwlwifi-8000' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname '["]-["][ ]__stringify[(]api[)][ ]["]\.ucode["]' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname '%s%s-%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
-    blobname 'rtlwifi[/]rtl8723efw\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[RTL8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/phy.c
-    blobname 'rtlwifi[/]rtl88\(21\|12\)aefw\(_wowlan\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
-    defsnc 'static[ ]u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ba]_[np]\[\]\[DEL_SW_IDX_SZ\][ ]=' drivers/net/wireless/rtlwifi/rtl8821ae/dm.c
-    defsnc '[\t]u8[ ]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/phy.c
-    # Present before 3.18, but changes to reject_firmware shell
-    # function to make it match request_firmware only require us to
-    # recognize these as false positives.
-    accept 'static[ ]int[ ]lp55xx_request_firmware[(]' drivers/leds/leds-lp55xx-common.c
-    accept '[\t]*ret[ ]=[ ]lp55xx_request_firmware[(]' drivers/leds/leds-lp55xx-common.c
-    accept 'static[ ]int[ ]flexcop_fe_request_firmware[(]' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    accept '[\t]\.request_firmware[ ]=[ ]flexcop_fe_request_firmware[,]' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    accept '[\t]if[ ][(][(]ret[ ]=[ ]st->config->request_firmware[(]' drivers/media/dvb-frontends/bcm3510.c
-    accept '[\t][\t]ret[ ]=[ ]config->request_firmware[(]' drivers/media/dvb-frontends/or51211.c
-    accept '[\t]if[ ][(]state->config->request_firmware[(]' drivers/media/dvb-frontends/sp8870.c
-    accept '[\t][\t]ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/sp887x.c
-    accept '[\t]int[ ][(][*]request_firmware[)][(]' drivers/media/dvb-frontends/sp887x.h
-    accept '[\t]ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/tda1004x.c
-    accept '[\t]if[ ][(]state->config->request_firmware[ ]' drivers/media/dvb-frontends/tda1004x.c
-    accept '[\t][\t][\t]*ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/tda1004x.c
-    accept 'static[ ]int[ ]alps_tdhd1_204_request_firmware[(]' drivers/media/dvb-frontends/tdhd1.h
-    accept '[\t]\.request_firmware[ ]=[ ]alps_tdhd1_204_request_firmware' drivers/media/dvb-frontends/tdhd1.h
-    accept 'static[ ]int[ ]microtune_mt7202dtf_request_firmware[(]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept '[\t]\.request_firmware[ ]=[ ]microtune_mt7202dtf_request_firmware[,]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept 'static[ ]int[ ]or51211_request_firmware[(]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept '[\t]\.request_firmware[ ]=[ ]or51211_request_firmware[,]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept 'static[ ]int[ ]pluto2_request_firmware[(]' drivers/media/pci/pluto2/pluto2.c
-    accept '[\t]\.request_firmware[ ]=[ ]pluto2_request_firmware[,]' drivers/media/pci/pluto2/pluto2.c
-    accept 'static[ ]int[ ]philips_tda1004x_request_firmware[(]' drivers/media/pci/saa7134/saa7134-dvb.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tda1004x_request_firmware' drivers/media/pci/saa7134/saa7134-dvb.c
-    accept 'static[ ]int[ ]alps_tdlb7_request_firmware[(]' drivers/media/pci/ttpci/av7110.c
-    accept '[\t]\.request_firmware[ ]=[ ]alps_tdlb7_request_firmware[,]' drivers/media/pci/ttpci/av7110.c
-    accept 'static[ ]int[ ]philips_tu1216_request_firmware[(]' drivers/media/pci/ttpci/budget-av.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tu1216_request_firmware[,]' drivers/media/pci/ttpci/budget-av.c
-    accept 'static[ ]int[ ]philips_tdm1316l_request_firmware[(]' drivers/media/pci/ttpci/budget-ci.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tdm1316l_request_firmware[,]' drivers/media/pci/ttpci/budget-ci.c
-    accept 'static[ ]int[ ]alps_tdhd1_204_request_firmware[(]' drivers/media/pci/ttpci/budget.c
-    accept 'static[ ]int[ ]fimc_is_request_firmware[(]' drivers/media/platform/exynos4-is/fimc-is.c
-    accept '[\t]ret[ ]=[ ]fimc_is_request_firmware[(]' drivers/media/platform/exynos4-is/fimc-is.c
-    accept 'static[ ]int[ ]philips_tdm1316l_request_firmware[(]' drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tdm1316l_request_firmware[,]' drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-    accept '[\t][\t]pr_err[(]["][ ]request_firmware[ ]failed' drivers/misc/ti-st/st_kim.c
-    accept 'typhoon_request_firmware[(]' drivers/net/ethernet/3com/typhoon.c
-    accept '[\t]err[ ]=[ ]typhoon_request_firmware[(]' drivers/net/ethernet/3com/typhoon.c
-    accept '[\t][\t]goto[ ]request_firmware_exit[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept '[\t]BNX2X_ALLOC_AND_SET[(]init_data[,][ ]request_firmware_exit[,]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept 'request_firmware_exit:' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept 'static[ ]int[ ]bnx2_request_firmware[(]' drivers/net/ethernet/broadcom/bnx2.c
-    accept '[\t]rc[ ]=[ ]bnx2_request_firmware[(]' drivers/net/ethernet/broadcom/bnx2.c
-    accept 'static[ ]int[ ]tg3_request_firmware[(]' drivers/net/ethernet/broadcom/tg3.c
-    accept '[\t][\t]err[ ]=[ ]tg3_request_firmware[(]' drivers/net/ethernet/broadcom/tg3.c
-    accept 'static[ ]const[ ]struct[ ]firmware[ ][*]e100_request_firmware[(]' drivers/net/ethernet/intel/e100.c
-    accept '[\t]fw[ ]=[ ]e100_request_firmware[(]' drivers/net/ethernet/intel/e100.c
-    accept '[/][*][ ]Call[ ]this[]function[ ]from[ ]process[ ]context[,][ ]it[ ]will[ ]sleep[ ]in[ ]request_firmware[.]' drivers/net/wireless/ipw2x00/ipw2200.c
-    accept '[ ][*][ ]@request_firmware_complete:' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t][\t]lbs_deb_fw[(]["]request_firmware_nowait[ ]error' drivers/net/wireless/libertas/firmware.c
-    accept 'void[ ]netxen_request_firmware[(]' 'drivers/net/ethernet/qlogic/netxen/netxen_nic\(\.h\|_init\.c\)'
-    accept '[\t]netxen_request_firmware[(]' drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-    accept 'void[ ]qlcnic_request_firmware[(]' 'drivers/net/ethernet/qlogic/qlcnic/qlcnic\(\.h\|_init\.c\)'
-    accept '[\t][\t]qlcnic_request_firmware[(]' drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-    accept 'static[ ]void[ ]rtl_request_firmware[(]' drivers/net/ethernet/realtek/r8169.c
-    accept '[\t]rtl_request_firmware[(]' drivers/net/ethernet/realtek/r8169.c
-    accept 'static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[\t]INIT_WORK[(][&]wl->firmware_load[,][ ]b43_request_firmware[)]' drivers/net/wireless/b43/main.c
-    accept 'static[ ]void[ ]b43legacy_request_firmware[(]' drivers/net/wireless/b43legacy/main.c
-    accept '[\t]INIT_WORK[(][&]wl->firmware_load[,][ ]b43legacy_request_firmware[)]' drivers/net/wireless/b43legacy/main.c
-    accept 'il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
-    accept '[\t]if[ ][(]il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
-    accept '[\t]err[ ]=[ ]il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
-    accept 'static[ ]int[ ]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]if[ ][(]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]ret[ ]=[ ]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[ ][*][ ]@request_firmware_complete:' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]struct[ ]completion[ ]request_firmware_complete[;]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]\(complete\|\(init\|wait_for\)_completion\)[(][&]drv->request_firmware_complete[)]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t][ ][*][ ]Obtain[ ]NVM[ ]image[ ]via[ ]request_firmware[.]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]int[ ]mwl8k_request_firmware[(]' drivers/net/wireless/mwl8k.c
-    accept '[\t]rc[ ]=[ ]mwl8k_request_firmware[(]' drivers/net/wireless/mwl8k.c
-    accept 'static[ ]int[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
-    accept '[\t]ret[ ]=[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
-    accept 'static[ ]int[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firwmare.c
-    accept '[\t][\t]retval[ ]=[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firmware.c
-    accept '[\t][\t]wl1271_error[(]["]request_firmware_nowait[ ]failed' drivers/net/wireless/ti/wlcore/main.c
-    accept '[\t][\t]nfc_err[(][&]drv->pdev->dev[,][ ]["]request_firmware[ ]failed' drivers/nfc/nfcwilink.c
-    accept '[\t][\t][\t]["]request_firmware[ ]returned' drivers/nfc/nfcwilink.c
-    accept '[\t][\t]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    accept '[\t][\t]dev_err[(]dev[,][ ]["]request_firmware[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept 'static[ ]int[ ]asd_request_firmware[(]' drivers/scsi/aic94xx/aic94xx_seq.c
-    accept '[\t]err[ ]=[ ]asd_request_firmware[(]' drivers/scsi/aic94xx/aic94xx_seq.c
-    accept '[\t]uint32_t[ ]cfg_request_firmware_upgrade[;]' drivers/scsi/lpfc/lpfc.h
-    accept '[ ][*][ ]lpfc_request_firmware_store[ ]-[ ]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'lpfc_request_firmware_upgrade_store[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'lpfc_param_show[(]request_firmware_upgrade[)]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t]rc[ ]=[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[ ][*][ ]lpfc_request_firmware_upgrade_init[ ]-[ ]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'lpfc_request_firmware_upgrade_init[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t][\t]phba->cfg_request_firmware_upgrade[ ]=' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t][\t][ ]*lpfc_request_firmware_upgrade_\(show\|store\)[,)]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t]lpfc_request_firmware_upgrade_init[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'int[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_crtn.h
-    accept '[ ][*][ ]@fw:[ ]pointer[ ]to[ ]firmware[ ]image[ ]returned[ ]from[ ]request_firmware[.]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[ ][*][ ]lpfc_sli4_request_firmware_update[ ]-[ ]' drivers/scsi/lpfc/lpfc_init.c
-    accept 'lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[\t]if[ ][(]phba->cfg_request_firmware_upgrade[)]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[\t][\t]ret[ ]=[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[ ][*][ ]qla1280_request_firmware' drivers/scsi/qla1280.c
-    accept 'qla1280_request_firmware[(]' drivers/scsi/qla1280.c
-    accept '[\t]fw[ ]=[ ]qla1280_request_firmware[(]' drivers/scsi/qla1280.c
-    accept 'extern[ ]struct[ ]fw_blob[ ][*]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_gbl.h
-    accept '[\t]blob[ ]=[ ]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_init.c
-    accept '[\t]blob[ ]=[ ]ha->hablob[ ]=[ ]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_nx.c
-    accept 'qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_os.c
-    accept '[\t]-[ ]change[ ]firmware[ ]loading[ ]for[ ]usb[ ]driver[ ]to[ ]proper[ ]kernel[ ]method[ ][(]request_firmware[)]' drivers/staging/ft1000/TODO
-    accept '[\t][\t]pr_err[(]["]rtl8723au:[ ]request_firmware[ ]load' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-    accept '[\t ]*[*][ ]We[ ]call[ ]request_firmware_nowait[ ]instead[ ]of[ \t\n*]*request_firmware[ ]so[ ]that' drivers/tty/serial/ucc_uart.c
-    accept '[\t][\t]dev_err[(][&]dev->dev[,][ ]["]%d[,][ ]request_firmware[ ]failed' sound/pci/asihpi/hpidspcd.c
-    accept 'static[ ]int[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c
-    accept '[\t]err[ ]=[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c
-    # New in 3.19
-    blobname 'a420_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/adreno_device.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a4xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a4xx_gpu.c
-    defsnc 'static[ ]const[ ]u32[ ]gen9_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen9.c
-    defsnc 'nv50_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
-    defsnc 'nv84_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
-    defsnc 'nvd0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\(300\)\?[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
-    defsnc 'nve0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*300[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
-    # This reads from user-supplied filenames.
-    accept 'shadow_fw_init[(]struct[ ]nouveau_bios[ ][*]bios[,][ ]const[ ]char[ ][*]name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]int[ ]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ]dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/shadow.c
-    defsnc 'static[ ]const[ ]u32[ ]coef_lut_\(a_legacy\|b\|[cdef]_[yc]_legacy\)\[NB_COEF\][ ]=' drivers/gpu/drm/sti/sti_hqvdp_lut.h
-    blobname 'hqvdp-stih407\.bin' drivers/gpu/drm/sti/sti_hqvdp.c
-    defsnc '[\t]static[ ]const[ ]union[ ]sixaxis_output_report_01[ ]default_report[ ]=' drivers/hid/hid-sony.c
-    blobname 'elan_i2c\.bin' drivers/input/mouse/elan_i2c_core.c
-    blobname 'elants_i2c\.bin' drivers/input/touchscreen/elants_i2c.c
-    defsnc '[}][ ]QAM256_mod_tab_zv_mode\[\][ ]=' drivers/media/dvb-frontends/au8522_dig.c
-    blobname 'dvb-demod-m88rs6000\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88rs6000_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]\(luma\|chroma\)_ac_value\[162[ ][+][ ]2\][ ]=' drivers/media/platform/coda/coda-jpeg.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(luma\|chroma\)_q\[64\][ ]=' drivers/media/platform/coda/coda-jpeg.c
-    defsnc 'static[ ]const[ ]struct[ ]vin_coeff[ ]vin_coeff_set\[\][ ]=' drivers/media/platform/soc_camera/rcar_vin.c
-    defsnc 'const[ ]unsigned[ ]short[ ]tpg_\(rec709_to_linear\|linear_to_rec709\)\[255[ ][*][ ]16[ ][+][ ]1\][ ]=' drivers/media/platform/vivid/vivid-tpg-colors.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]m88rs6000t_reg_val[ ]reg_vals\[\][ ]=' drivers/media/tuners/m88rs6000t.c
-    blobna '[/][*][ ]cal-<bus>-<id>\.bin[ ][*][/]' drivers/net/wireless/ath/ath10k/core.c
-    blobname 'cal-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_\(common_wo_xlna_rx\|modes_\(no_\)\?xpa_tx\)_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    blobname 'mrvl[/]usb8766_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
-    defsc 'static[ ]const[ ]unsigned[ ]char[ ]opcode_ind_arr\[256\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]const[ ]struct[ ]quark_spi_rate[ ]quark_spi_rate_table\[\][ ]=' drivers/spi/spi-pxa2xx.c
-    blobname 'me4000_firmware\.bin' drivers/staging/comedi/drivers/me4000.c
-    defsnc '[\t]u8[ ]ConnectionMsg\[\][ ]=' drivers/staging/ft1000/ft1000-usb/ft1000_debug.c
-    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]fw_file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    blobname 'dvb-demod-mn88472-02\.fw' drivers/staging/media/mn88472/mn88472_priv.h
-    blobname 'dvb-demod-mn88473-01\.fw' drivers/staging/media/mn88472/mn88472_priv.h
-    accept '[\t][\t]goto[ ]err_request_firmware[;]' drivers/staging/media/mn88473/mn88473.c
-    accept 'err_request_firmware[:]' drivers/staging/media/mn88473/mn88473.c
-    blob 'The[ ]card[ ]requires[ ]firmware.*[\n]rm[ ]wd7296a\.sys' Documentation/scsi/wd719x.txt
-    blobname 'wd719x-\(wcs\|risc\)\.bin' drivers/scsi/wd719x.c
-    defsnc 'static[ ]const[ ]struct[ ]tsadc_table[ ]v2_code_table\[\][ ]=' drivers/thermal/rockchip_thermal.c
-    defsnc 'static[ ]const[ ]u8[ ]debug_pk\[64\][ ]=' net/bluetooth/smp.c
-    defsnc 'static[ ]const[ ]u8[ ]debug_sk\[32\][ ]=' net/bluetooth/smp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ad1980_reg_defaults\[\][ ]=' sound/soc/codecs/ad1980.c
-    blobname 'rt5677_dsp_fw[12]\.bin' sound/soc/codecs/rt5677.c
-    accept 'int[ ]sst_request_firmware_async[(]' sound/soc/intel/sst/sst.h
-    blobname 'intel[/]fw_sst_0f28\.bin-48kHz_i2s_master' sound/soc/intel/sst-acpi.c
-    blobname '\(intel[/]\)\?fw_sst_\(0f28\|22a8\)\.bin' sound/soc/intel/sst/sst_acpi.c
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][\n][ \t]*sst_drv_ctx->dev_id[,][ ]["]\.bin' sound/soc/intel/sst/sst_pci.c
-    accept '[\t]\?\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|[\t]call\(_path\)\?\)_file[ \t]*=[ ]open_output_file[(]["]\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|call\(_path\)\?\)_table\.bin["][)]' tools/perf/scripts/python/export-to-postgresql.py
-    # accept '\([*]\.\(bin\|elf\|fw\)\|\(setup\|wakeup\)\.\(bin\|elf\)\|vmlinux\.bin\.all\|tftpboot\.img\)[\n]' Documentation/dontdiff
-    ;;
-
-  */*freedo*.patch | */*logo*.patch)
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm
-    ;;
-
-  */patch*-3.1[467].*)
-    # False positives in patch-3.17.2, 3.16.7, 3.14.23 and newer.
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
-    # False positive in patch-3.17.6 and newer.
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]rt5670_reg\[\][ ]=[ ][{][*][/][;]' sound/soc/codecs/rt5670.c
-    ;;
-
-  */patch-3.13*)
-    # Introduced in 3.13.2.
-    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]wm5110_s[*][/][;]' sound/soc/codecs/wm5110.c
-    # New in 3.13.7.
-    accept '[\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\([\n][\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\)*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    ;;
-
-  */patch-3.12*)
-    # Introduced in 3.12.10.
-    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    # New in 3.13
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-drxk-01\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?firmware-2\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43\(143\|241b[04]\|29\|3[045]\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7265-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    accept '[\t][\t]brightness-levels[ ][=][ ][<][0-9 \t\n]*[>][;]' arch/arm/boot/dts/imx28-tx28.dts
-    accept '[\t]echo[ ]["]mic[/]uos\.img["][ ]' Documentation/mic/mpssd/micctrl
-    accept '[\t]mdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/host/mic_sysfs.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ \t\n]*mdev->\(ramdisk\|firmware\)[,][ ]mdev->sdev->parent[)][;]' drivers/misc/mic/host/mic_x100.c
-    accept '[\t]*["]\(ramdisk\|firmware\)[ ]request_firmware[ ]failed' drivers/misc/mic/host/mic_x100.c
-    defsnc 'static[ ]const[ ]struct[ ]dsi_clock_table[ ]dsi_clk_tbl\[\][ ]=' drivers/gpu/drm/i915/intel_dsi_pll.c
-    defsnc 'uint32_t[ ]nv108_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
-    defsnc 'uint32_t[ ]nva3_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
-    defsnc 'uint32_t[ ]nvc0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
-    defsnc 'uint32_t[ ]nvd0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_hawaii_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    accept '[\t]["]edid[/]\(1024x768\|1280x1024\|1600x1200\|1680x1050\|1920x1080\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc '[\t]unsigned[ ]char[ ]buf\[\][ ]=' drivers/hid/hid-sony.c
-    blobname 'dvb-fe-cx24117\.fw' drivers/media/dvb-frontends/cx24117.c
-    blobname 'vpdma-1b8\.bin' drivers/media/platform/ti-vpe/vpdma.c
-    defsnc 'static[ ]const[ ]u8[ ]ov361x_start_\(2048\|1600\|1024\|640\|320\|160\)\[\]\[2\][ ]=' drivers/media/usb/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]tuning_blk_pattern_[48]bit\[\][ ]=' drivers/mmc/host/dw_mmc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_8192_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc '[\t]static[ ]u8[ ]PN9Data\[\][ ]=' drivers/net/wireless/ath/ath9k/main.c
-    blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-    defsnc 'static[ ]s32[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rtlwifi[/]rtl8188eufw\.bin' drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc '[}][ ]test2\[\][ ]=' lib/random32.c
-    defsnc 'static[ ]const[ ]struct[ ]hda_verb[ ]hp_bnb13_eq_verbs\[\][ ]=' sound/pci/hda/patch_sigmatel.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]aic3x_reg\[\][ ]=' sound/soc/codecs/tlv320aic3x.c
-    blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    # Matches from earlier releases, for the patch from 3.12.
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    # Matches specific for the patch from 3.12.
-    accept '[\t]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware' drivers/base/firmware_class.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9462_2p1_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9485Modes_\(high_power_\|green_ob_db\|high_ob_db_\|green_spur_\)[*][/][;]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9565_1p0_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u16[ ]bios_to_linux_keycode\[2[*][/][;]' drivers/platform/x86/dell-wmi.c
-    # Matches for the reversed patch present in earlier releases.
-    defsnc 'const[ ]char[ ]_[zs]b_findmap\[\][ ]=' arch/s390/kernel/bitmap.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    # Matches specific for the reversed patch.
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=[\t][{][*][/][;]' drivers/staging/rtl8187se/r8185b_init.c
-    ;;
-
-  */patch-3.11*)
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load[(]' drivers/base/firmware_class.c
-    # Already present in 3.11, but modified in 3.12:
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    # New in 3.12.
-    blobname 's5p-mfc-v7\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
-    blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
-    defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    defsnc '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
-    defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a3xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    blobname 'a3[03]0_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_\(bonaire\|saturn\)_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]struct[ ]kv_lcac_config_values[ ]cpl_local_cac_cfg_kv\[\][ ]=' drivers/gpu/drm/radeon/kv_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]imx_i2c_clk_pair[ ]\(imx\|vf610\)_i2c_clk_div\[\][ ]=' drivers/i2c/busses/i2c-imx.c
-    defsnc 'static[ ]const[ ]u16[ ]apds9300_lux_ratio\[\][ ]=' drivers/iio/light/apds9300.c
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_4313_ipa_rev0_combo\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    accept '[	][	]adapter->firmware[ ]=[ ]NULL' drivers/net/wireless/mwifiex/main.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]const[ ]int[ ]bq24190_\(ccc_ichg\|cvc_vreg\)_values\[\][ ]=' drivers/power/bq24190_charger.c
-    blobname '[(]i\.e\.[ ]["]asfep\.bin["][)][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '[(]["][/]etc[/]dgap[/]xrfep\.bin["][)][;][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '["][/]lib[/]firmware[/]dgap[/]["]' drivers/staging/dgap/downld.c
-    blobname '\(fx\|cx\|cxp\|ibm\(cx\|en\)\|xr\|sx\|pci\)\(bios\|fep\|con\|host\)\.bin' drivers/staging/dgap/downld.c
-    defsnc 'static[ ]const[ ]struct[ ]msi3101_gain[ ]msi3101_gain_lut_\(120\|245\|1000\)\[\][ ]=' drivers/staging/media/msi3101/sdr-msi3101.c
-    defsnc 'static[ ]struct[ ]ch_freq[ ]ch_freq_map\[\][ ]=' drivers/staging/rtl8188eu/core/rtw_rf.c
-    defsnc 'static[ ]\(const\)\?[ ]\?u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u32[ ]T[ed]0\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u8[ ]Td4s\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]u32[ ]array_\(agc_tab\|phy_reg\)_\(1t\|pg\)_8188e\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_BB.c
-    defsnc 'static[ ]u32[ ]array_MAC_REG_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_RF.c
-    defsnc '[	]u8[	]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/HalPhyRf.c
-    defsnc 'static[ ]const[ ]u16[ ]dB_Invert_Table\[8\]\[12\][ ]=' drivers/staging/rtl8188eu/hal/odm.c
-    blobname 'rtl8188E[/\\]*rtl8188efw\.bin' drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-    defsnc 'static[ ]const[ ]unsigned[ ]long[ ]K\[64\][ ]=' drivers/staging/rtl8188eu/include/rtw_security.h
-    defsnc '[	]static[ ]const[ ]struct[ ]msm_baud_map[ ]table\[\][ ]=' drivers/tty/serial/msm_serial.c
-    defsnc 'static[ ]u8[ ]hx8369_seq_gamma_curve_related\[\][ ]=' drivers/video/backlight/hx8357.c
-    defsnc 'static[ ]const[ ]wchar_t[ ]t2_\(0[012345]\|1[def]\|2[14cd]\|a[67]\|ff\)\[256\][ ]=' fs/cifs/winucase.c
-    accept '[	]*\(\(el\)\?if[ ]\[[ ]-f\|cp[ ]-v[ ]--\)[ ]["][$][{]objtree[}][/]arch[/]mips[/]boot[/]\(compressed[/]\)\?vmlinux\.bin["]' scripts/package/buildtar
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]pcm1681_reg_defaults\[\][ ]=' sound/soc/codecs/pcm1681.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8997_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm8997.c
-    ;;
-
-  */patch-3.10*)
-    # Matches for the reversed patch.
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    accept '[	]return[ ]_request_firmware[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    # Matches of changes from 3.10 adjusted for patch.
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware[(]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9462_2p0_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]request_firmware_nowait[(]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[ ]request_firmware\?[(]' include/linux/firmware.h
-    # Present in 3.10, modified in 3.11 patch:
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_linux_clut224.ppm
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-    ;;
-
-  */patch-3.9*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load\(struct[*][/][;]\)\?' drivers/base/firmware_class.c
-    ;;
-
-  */patch-3.8*)
-    # Present in 3.8 but patched in stable releases.
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # Present in 3.8
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    # For 3.8-to-3.9 patch:
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_load\|_work_func\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_f\(c0011\[\][ ]=\)\?\(\([ ][{]\)\?[*][/][;]\)\?' drivers/media/dvb/frontends/af9033_priv.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=\([ ]\?[{]\?[*][/][;]\)\?' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[	]\.firmware[ ]=[ ]\(DW210[24]\|DW3101\|S630\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]\(P1100\|S660\|P7500\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_pos\(tamble\[\]\[5\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx\(_gain_table\[\]\[9\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=\([*][/][;]\)\?' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-    # Reverse 3.8-to-3.9 patch:
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_cleanup\|_prepare\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]*\(\(fw_priv\|ret\)[ ]=[ ]\)\?_\?request_firmware_\(load\|prepare\|cleanup\)' drivers/base/firmware_class.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    accept '[	]\.firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(SiS\|XGI\)_[ME]CLKData\(Struct\)\?[ ]XGI\(340\|27\)\(\(New\)\?_[ME]CLKData\[\][ ]*=\|N\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    ;;
-
-  */drm-qxl-driver.patch)
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    ;;
-
-  */patch-3.7*)
-    # Removed chunks matched by entries that don't appear in the patch context.
-    initnc '[	]0x019806b8[,][\n][	]0x1427f116[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0xf1160198[,][\n][	]0xb6041427[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    # Present in 3.7 and removed in the patch (for --reverse-patch).
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    # Chunks matched by other entries that don't appear in the patch context.
-    initnc '[	][{][ ]19200000[,][ ]216000000[,]' arch/arm/mach-tegra/tegra20_clocks_data.c
-    initnc '[	]0x16019806[,][\n][	]0x041427f1[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0x98069221[,][\n][	]0x27f11601[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '[	][{]0x0000a284\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    initnc '[	][{]0x0000a574\([,][ ]0x9c1fff0b\)*\([,][ ]0x5e001eeb\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a580[,][ ]0x00000000[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a584\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a0b4\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000982c\([,][ ]0x05eea6d4\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    initnc '[	][{][ ]184[,][ ]0x00[ ][}][,]' sound/soc/codecs/lm49453.c
-    # Already present in 3.7.
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-    ;;
-
-  */patch-3.6*)
-    # Present in patch for 3.6.4.
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # Present in patch for 3.6.5.
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    # Specific to the 3.7 patch
-    accept '[	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]7[)],[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][ ]request_firmware[(][)][ ]returns[ ]non-zero' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(]firmware_p[)][;]' drivers/base/firmware_class.c
-    accept '[ ][*][	]Asynchronous[ ]variant[ ]of[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware\(_nowait\)\?[(]' include/linux/firmware.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    accept '[	][{]0x00009e1c,[ ]0x0001cf9c,[ ]0x[0-9a-fx{},\n	 ]*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '[;][/][*]@@[ ]-391,17[ ][+]407,17[ ]@@[*][/][;][\n]\([ ]*[123],\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*1,\)*' scripts/dtc/dtc-lexer.lex.c_shipped
-    accept '[;][/][*]@@[ ]-395,16[ ][+]423,16[ ]@@[*][/][;][\n][ ]*0,\([ ]*2,\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*2,\)*' scripts/dtc/dtc-parser.tab.c_shipped
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[ 12][0-9],\)*[\n]\)*\([ ]*[12][0-9],\)*[ ]*24' scripts/dtc/dtc-parser.tab.c_shipped
-    
-    # Already in 3.6, but changed or moved thus present in patch to 3.7:
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    # Present in 3.6 but removed in the patch:
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    # Specific for the 3.7-to-3.6 reverse patch:
-    accept '[	]err[ ]=[ ]request_firmware[(]&fw,[ ]patch,[ ]dev[)][;]' sound/pci/hda/hda_hwdep.c
-    defsnc '\(static[ ]const[ ]struct[ ]\(stk1160\|saa7113\)config\|[}]\)[ ]\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    accept '[ ]kernel[(]driver[)]:[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[1-4],\)*[\n]\)*\([ ]*[ 1][0-9],\)*[ ]*12' scripts/dtc/dtc-parser.tab.c_shipped
-    ;;
-
-  */patch-3.5*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    # Present in 3.5 and in patch to 3.6:
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(high\|low\|mixed\)_\(power\|ob_db\)\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_wo_xlna_rx_gain\)\?_1_1\(_\(baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_1_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed[^\n]*[\n][	]*complete_all[(][&]rproc->firmware_loading_complete' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '[	][{]\(0x0000a288[,][ ]0x00000220\|0x0000a430[,][ ]0x1ce739ce\|0x0000a540[,][ ]0x\(49005e72\|4e02246c\)\|0x0000a5f4[,][ ]0x\(6f82bf16\|778a308c\)\|0x0000a50c[,][ ]0x10000023\|0x00009e04[,][ ]0x001c2020\|0x00009e44[,][ ]0x62321e27\)\([,][ ]0x[0-9a-f]*\)*[}][,]\([\n][	][{]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*[}][,]\)*' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    # For reversal of 3.5-to-3.6 patch only.
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc 'uint32_t[ ]nva3_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    initnc 'uint32_t[ ]nvc0_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc 'const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-    ;;
-
-  */patch-3.4*gnu*3.5*)
-    # This is far too general for deblobbing, but ok for patch checking.
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[*][/][;][\n][	][{]0x0000\(9830\|a288\|a0b4\|a138\)[,][ ]0x00000[0-9a-f]*[}]\?[,]' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    # Already present in 3.4, but moved or changed in 3.5:
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.SD31\|\.DB132\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-    # Required for reverse patch only:
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    ;;
-
-  */patch-3.3*gnu*)
-    # These patterns are *way* too broad for general use, but they're fine
-    # for patches between deblob-checked releases.
-    accept 'static[ ]\(int\|void\)[ ]_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware[(]const' drivers/base/firmware_class.c
-    accept '[	]*ret[ ]=[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]*_request_firmware_cleanup' drivers/base/firmware_class.c
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	]0x43[,][ ]11[,][	]0x00[,][0-9xa-f, 	\n]*' drivers/media/video/gspca/pac7302.c
-    accept '\([ 	][{][ ]0x[12][02][,][ ]0x[0-9a-f][0-9a-f][,][ ]0x[0-9a-f][0-9a-f][ ][}][,][\n]\?\)\+[	][{][ ]0[ ][}][ ][/][*][ ]TERMINATING[ ]ENTRY[ ][*][/]' sound/usb/6fire/control.c
-    # Some of the above were present before, but not covered by these
-    # specific patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # New in 3.4.
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-    # Removed in 3.4, for --reverse-patch only.
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    accept '-3[,]-2[,]-2[,]-1[,]-1[,]0[,][0-9,\n]*[}][;]' drivers/hwmon/via686a.c
-    accept '[	][{]0xa1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,]\([\n][	][{]0x[ac]1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,][}][,]\)*' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */3.4.1-stable-queue.patch* | */patch-3.4*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43legacy_request_firmware[(]s[^\n]*[*][/][;]' drivers/net/wireless/b43legacy/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    ;;
-
-  */atl1c_net_next_update-3.[34].patch)
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    ;;
-
-  */drivers-media-update.patch)
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    accept '[	]0x43,[ ]11,[	][0-9a-fx, 	\n]*' drivers/media/video/gspca/pac7302.c
-    # Entries above are in 3.3; below are for 3.4.
-    blobname 'dvb-usb-terratec-h7-drxk\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-terratec-h7-az6007\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-fe-xc5000\(-1\.6\.114\|c-41\.024\.5-31875\)\.fw' drivers/media/common/tuners/xc5000.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6007.c
-    accept '[	]*\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	]*\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/af9035.c
-    ;;
-
-  */brcm80211.patch)
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    ;;
-
-  */patch*-3.1.*)
-    defsnc 'static[ ]const[ ]u8[ ]ak4642_reg\[AK4642_CACHEREGNUM\][ ]=' sound/soc/codecs/ak4642.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */media-DiBcom*.patch)
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-3.1-rc*)
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/staging/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    defsnc '[ ][ ]static[ ]\(const[ ]\)\?unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=[ ][{][*][/][;]' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]config[ ]FIRMWARE_IN_KERNEL[*][/][;].*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/ov9740.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    # for reverse patch
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,]' drivers/firmware/sigma.c
-    accept '[	][	]pr_debug[(]["]%s:[ ]request_firmware[(][)][ ]failed' drivers/firmware/sigma.c
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    # this was a bug in an earlier deblob
-    accept '#define[ ]WL_4329_NVRAM_FILE[ ]["][^"]*["]' drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' drivers/staging/brcm80211/brcmfmac/bcmchip.h
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'static[ ]struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'u16[]LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057_rev5[ ]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'struct[ ]radio_\(20xx_\)\?regs[ ]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    ;;
-
-  */patch*-3.0-rc*)
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    ;;
-
-  */patch*-2.6.39-rc*)
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sn9c20x.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKDataStruct[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    # The above match the reversed patch
-    defsnc 'static[ ]unsigned[ ]char[ ]bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]\(firmware_p\|fw\),' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware_nowait[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    # New in 2.6.39 below, present in earlier versions above
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    ;;
-
-  */rtl8180*.patch)
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    ;;
-
-  */patch*-2.6.38-rc*)
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_asm.S
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|m[ec]\)\.bin' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_\(wo_xlna_\)\?rx_gain\)\?_1_0\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_\(high\|low\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # Above is for patterns new in 2.6.38, below is for older patterns.
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?const[ ]u32[ ]b43_ntab_framestruct\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/b43/tables_nphy.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]tones\[2048\][ ]=\([ ][{][*][/][;]\)\?' drivers/staging/easycap/easycap_testcard.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc '\(static[ ]\)\?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\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225\(z2\)\?_\(agc\|ofdm\|\(tx_\)\?\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    ;;
-
-  */patch*-2.6.38*)
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    ;;
-
-  */patch*-2.6.37-rc*) # up to -rc8-git3
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]const[ ]A_INT32[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)-0[-0-9]*\.fw' drivers/staging/brcm80211/README
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.bin' drivers/staging/brcm80211/brcmfmac/README
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-    # Above is for patterns new in 2.6.37, below is for older patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[pxm]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]int[ ]be_load_fw[(][^\n;{]*[)][*][/][;][\n][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware' drivers/net/benet/be_main.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([ ][{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    defsnc '\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    accept '[*][ ]drivers[/]staging[/]ft1000[/]ft1000-\(pcmcia\|usb\)[/]ft[13]000\.img:[ ]Removed\.' 'patch-libre.*'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    ;;
-
-  */patch*-2.6.36.*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    ;;
-
-  */patch*-2.6.36-rc*)
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?const[ ]u32[ ]r[67]xx_default_state\[\][ ]=\([*][/][;]\)\?' drivers/gpu/drm/radeon/r600_blit_shaders.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]void[ ]get_regs[(]struct[ ]net_device[ ][*]dev,\([^\n]*[*][/][;]\)\?' drivers/net/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]__devinit[ ]bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h 
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{]\([*][/][;]\)\?[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-    # New in 2.6.36-rc3:
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[px]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ][{][^}]*[}][ ]\(stk1160\|saa7113\)config\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    ;;
-
-  */hid-support*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-    ;;
-
-  */sched*)
-    accept 'CPU[ ]\+before[ ]\+after[\n]\([\n][01][0-9][ ]\+:[ ][0-9]\+[ ]\+:[ ][67]\)*'
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    accept '\(All[ ]CPUS[ ]idle[ ]for[ ]10[ ]seconds[ ][(]HZ=1000[)]\|One[ ]CPU[ ]busy[ ]rest[ ]idle[ ]for[ ]10[ ]seconds\|All[ ]CPUs[ ]busy[ ]for[ ]10[ ]seconds\)[\n][0-9 \n]*'
-    accept 'domainstats:[ ]*domain0[\n][ ]*cpu[ ]*cnt[ ]*bln[ ]*fld[ ]*imb[ ]*gain[ ]*hgain[ ]*nobusyq[ ]*nobusyg[\n 0-9:]*'    
-    ;;
-
-  */*-loongson.patch)
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]rtl8225bcd_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_agc\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'static[ ]u32[ ]MAC_REG_TABLE\[\]\[3\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]ZEBRA2_CCK_OFDM_GAIN_SETTING\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u16[ ]rtl8225z2_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]rtl8225z2_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    ;;
-
-  */patch*-2.6.34-rc*)
-    # New in 2.6.34, should be duplicated in the main pattern set.
-    blobname 'cxgb4[/]t4fw\.bin' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '#[ ]\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    # Pattern present prior to 2.6.34, or already adjusted for 2.6.34 in
-    # the main pattern set.
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blob 'sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|cx\(23\(1xx\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    accept '\([/][*][*][\n]\)\?[ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[ ]of[ ]request_firmware' drivers/base/firmware_class.c
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sunplus.c
-    # above is in -rc1, below in -rc2
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    blobname '%s%[du]%s["],[\n 	]*name_pre,[ ]\(priv->fw_\)\?index,[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    ;;
-
-  */patch*-2.6.33-rc*)
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\([\n]\+[}]\)\?' include/linux/firmware.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    defsnc 'struct[ ]nv17_tv_norm_params[ ]nv17_tv_norms\[NUM_TV_NORMS\][ ]=' drivers/gpu/drm/nouveau/nv17_tv_modes.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' drivers/net/wireless/prism54/islpci_dev.c
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func[(]void[ ][*]arg[)][*][/][;][\n]\([^\n]*[\n]\)\+\([	]ret[ ]=[ ]_request_firmware[(]\|request_firmware_nowait[(]\)\?' drivers/base/firmware_class.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ]af9015_properties\(\[\]\)\?[ ]=[ ][{][*][/][;][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]bridge_start_ov965x\[\]\[2\][ ]=[ ][{][*][/][;][\n]' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_init\[\]\[8\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271_1_0\[\]\[[26]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?int[ ]request_firmware\(_nowait\)\?[(]\(const[ ]struct[ ]firmware[ ][*][*]\|[\n][	]struct[ ]module[ ][*]\)' include/linux/firmware.h
-    blobname 'isl38\(77\|86\|90\)' drivers/net/wireless/prism54/islpci_dev.c
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    accept '#include[ ]["]rf\.h["][\n]#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt30[79]0[/]\)\?\)\?firmware\.h["]' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-    # The above are covered by the main Linux patterns.  The patterns
-    # below are to be kept in sync in the 2.6.33 block within the main
-    # Linux patterns, until 2.6.33 is released.
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'const[ ]static[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_largepage[ ]=' drivers/mtd/nand/mxc_nand.c
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' drivers/net/bnx2x_main.c
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' drivers/net/bnx2x_main.c
-    blob '#define[ ]FW_VERSION\([ ]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ ]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_302x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]u16[ ]bios_to_linux_keycode\[256\][ ]=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname 'sndscape\.co\([?dx01234]\|%d\)' 'sound/\(isa/\(Kconfig\|sscape\.c\)\|oss/README\.OSS\)'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    ;;
-
-  */patch*-2.6.27*|*/patch*-2.6.31.*)
-    accept '[	]request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-2.6.30*)
-    initnc '[}][ ]bclk_divs\[\][ ]=[ ][{]' sound/soc/codecs/wm8903.c
-    ;;
-
-  */patch*-2.6.28-rc*)
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]UINT32[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]snr_table[ ]\(qpsk\|qam\(16\|64\)\)_snr_table\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    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
-
-    # Non-Free license in entire file.
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]saharadbgdownload\.h["]' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-
-    # ok from earlier releases
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix.txt|Documentation/serial/specialix.txt'
-    defsnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/pci/delkin_cb\.c\|drivers/ide/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-
-    # These are removed in 2.6.28, they're here so --reverse-patch tests pass.
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    initc '[	]static[ ]const[ ]__u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov7630_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */patch*-2.6.27-rc* | */patch*-2.6.26-git* | */git-linus.diff)
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]des3_ede_cbc_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF[\n]' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    initnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    initnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    initnc 'static[ ]const[ ]__u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]spca561_init_data\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    initnc 'static[ ]const[ ]__u16[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[MAX_[A-Z]*\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]__u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(mi13[12]0\|po3130\|hv7131r\|ov76[67]0\)_\(\(soc\)\?initQ\?VGA_\(JPG\|data\)\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    initnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' 'Documentation/bt8xxgpio.txt'
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]=[*][/][;]' scripts/genksyms/parse.c_shipped
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" arch/arm/inlcude/asm/hardware/entry-macro-iomd.S
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\(60\|48\)\)_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    ;;
-
-  */linux-2.6-gspca-git.patch)
-    # Probably for 2.6.28 or .29.
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    # Already in 2.6.27.
-    initnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc '[	][/][*][ ]Some[ ]more[ ]unknown[ ]stuff[ ][*][/]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]ov7648_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # No merge needed
-    defsnc '#if[ ]0[\n][	][{]0x30,[ ]0x0154,[ ]0x0008[}],' drivers/media/video/gspca/sunplus.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
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    ;;
-
-  */patch*-2.6.26-rc*)
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    initnc 'static[ ]struct[ ]hash_testvec[ ]\(hmac_sha\(224\|256\)\|aes_xcbc128\|crc32c\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]\(bf_cbc\|serpent\|tnepres\|aes\(_\(cbc\|ctr\|xts\)\)\?\|x\?tea\|anubis\(_cbc\)\?\|xeta\|camellia_cbc\|cts_mode\)_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{"]' crypto/tcrypt.h
-    initnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' drivers/ide/legacy/umc8672.c
-    initnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]\(ini\|act\|rco\)_time_value\[\]\[8\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c
-    initnc 'u16[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    oprepline '#define[ ]AR5K_RATES_11[ABG][ ]' drivers/net/wireless/ath5k/ath5k.h
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]1000,[ ]2,[ ]139,[ ]1[ ][}],[	]' drivers/net/wireless/ath5k/ath5k.h
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    # new in 2.6.26
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]=' drivers/media/video/cx18/cx18-av-vbi.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    blob 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\)[ ]=[ ]'"$sepx$blobpat*$sepx[;]" drivers/s390/net/qeth_core_mpc.c # from drivers/s390/net/qeth_mpc.c in 2.6.25
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    accept "[ ][ ][{][ ]0x00014284,[ ][ ]19688[ ][}],[\n][ ][ ][{][ ]0x00011104,[ ][ ]20400[ ][}],[\n][ ][ ][{][ ]$blobpat*[ ][}]," drivers/video/geode/lxfb_ops.c # won't be necessary in rc3
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_blackfin_clut224.ppm
-    ;;
-  */patch*-2.6.25-rc*)
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]=[ ][{][*][/][;]'
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]='
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^[]*\[\][ ]='
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{]'
-    initnc 'static[ ]struct[ ][^\n]*_testvec[ ][^\n]*_tv_template\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]='
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11\([ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    accept '[ ][ ][ ][ ][ ]\([ ]49,\)*[\n]\([ 0-9,]*[\n]\)*[ ][ ][ ][ ][ ]\([ ]49,\)*$'
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]='
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$'
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    accept '[	]24[ ]=>[ ]\[[\n]\([^\n]*[\n]\)*[	]\]\(,[ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    accept '[	][	]'"[']"'0x[^\n]*[\n]\([^\n]*[\n]\)*[	]\]\([,][ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    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 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.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
-    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
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv1[07]_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-
-    # drm-upgrayedd.patch
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-
-    # Although the developers of the drivers are not trying to stop
-    # anyone from modifying it or understanding it, they acknowledge
-    # 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.
-
-    # initnc 'static[ ]uint32_t[ ]nv\(4[013467ace]\|49_4b\|8[46]\)_ctx_\(voodoo\|prog\)\[\][ ]=' 'drivers/char/drm/nv40_graph.c|.*'
-    ;;
-  */linux-2.6*-lirc.patch | */lirc-*.patch)
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    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
-    ;;
-  */v4l1*.patch)
-    accept '[(]at[ ]which[ ]point[ ]it[ ]should[ ]use[ ]request_firmware'
-    ;;
-  */linux-2.6-v4l-dvb*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-  # post 2.6.37 fixes start here
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_p1g_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.identify_state[ ]*=[ ]technisat_usb2_identify_state,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    # present in 2.6.37
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    # post 2.6.35 fixes start here
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxxx.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ][*][/][;][\n][	]\.firmware[ ]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["],[\n][	]\.download_firmware[ ]=[ ]m920x_firmware_download' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    blobname 'v4l-cx23885-enc\.fw' drivers/media/video/cx23885/cx23885-417.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]brit_7660\[\]\[7\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]contrast_7660\[\]\[31\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]colors_7660\[\]\[6\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    # removed bits
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    # post 2.6.33 fixes start here
-    defsnc 'static[ ]struct[ ]i2c_reg_u8[ ]ov9655_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # rebase-gspca-to-latest 2.6.33ish starts here
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov6650_sensor_init\[\]\[8\][ ]=[*][/][;]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]hv7131r_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]po1030_sensor_param1\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    # rebase-gspca-to-latest ends here
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u16[ ]spca508_vista_init_data\[\]\[3\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/spca508.c
-    defsc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]mi1310_socinitVGA_JPG\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/vc032x.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    ;;
-  */linux-2.6-modsign-mpilib.patch)
-    initnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]='
-    ;;
-  */linux-2.6-netdev*.patch | \
-  */linux-2.6.27-net-r8169-2.6.28.patch)
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    ;;
-  */linux-2.6-wireless*.patch | */linux-2.6-ath5k.patch | \
-  */git-wireless-dev.patch | */linux-2.6-zd1211rw-mac80211.patch)
-    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\)\[\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]='
-    initnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11A[ ]'
-    oprepline '#define[ ]AR5K_RATES_11B[ ]'
-    oprepline '#define[ ]AR5K_RATES_11G[ ]'
-    oprepline '#define[ ]AR5K_RATES_TURBO[ ]'
-    oprepline '#define[ ]AR5K_RATES_XR[ ]'
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c # ?
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-
-    # git logs
-    accept '[ ][ ][ ]sudo[ ]modprobe[ ]ath5k[ ]debug=0x00000400[\n][ 	]*[\n]\([ 	]*Band[^\n]*[\n]\([ 	]*\(\(channels\|rates\):\|[- 	0-9a-f]*\|\[\.\.\.[ ]etc[ ]\]\)[\n]\)\+\)\+[ ][ ][ ][ ][ ][ ][ ]540[ ]000c[ ]0000[ ]0000'
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]3000,[ ]1,[ ]150,[ ]3[ ][}],'
-
-    # Fedora 8ish kernel-xen builds
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5211_ini_mode\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5212_rf511[12]_ini_mode\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_gain_cck_ofdm\[\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]rf_vals_abg_5222\[\][ ]='
-    ;;
-
-  */linux-2.6-netdev-e1000e*.patch)
-    initnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    ;;
-
-  */deblob-check-testsuite/*)
-    accept 'accept[(][^)]*[)]'
-    blobname 'blob[(][^)]*[)]'
-    blobname 'blobeol[^\n]*[\n]'
-    ;;
-  esac
-}
-
-# Regular expression that matches a literal constant.
-constx="[0-9][0-9a-fA-FxX]*"
-# Regular expression that matches a separator between consecutive
-# literal constants.
-sepx="\\([ 	\\n]*\\(\\([ 	\\n]\\|[,:{}LlUu\"\'\\\\][,:{} 	\\nLlUu\"\'\\\\]*\\)[xX\$]\\?\\|[.][a-zA-Z][a-zA-Z0-9]*[ 	][ 	]*[\$]\\?\\)\\)"
-
-# Regular expression that matches a continuation of a blob, after an
-# initial constant.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobcont="\\($sepx$constx\\)"
-
-# Regular expression that matches the initial constant of a blob plus
-# its continuation.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobpat="$constx$blobcont"
-
-# Regular expression that matches a blob with at least the number of
-# constants specified as sensitivity.
-blobseq="$blobpat\\{$sens,\\}"
-
-# Regular expression that matches the beginning of the pattern or a
-# line break.  It must be \(\)ed, such that it can be named in
-# replacement patterns.
-bol="\\(^\\|[\\n]\\)"
-
-# Regular expression that matches the end of the pattern or a line
-# break.  It must be \(\)ed, such that it can be named in replacement
-# patterns.
-eol="\\([\\n]\\|\$\\)"
-
-# Regular expression that matches a C-style comment.
-comment="\\([/][*][^*]*\\([*]\\+[^*/][^*]*\\)*[*]\\+[/]\\|[/][/][^\\n]*[\\n]\\)"
-
-# Regular expression that matches comments typically used in assembly.
-asmcomment="\\($comment\\|[;#][^\\n]*[\\n]\\)"
-
-# Regular expression that matches a braced initializer containing at
-# least one blob.
-initblob="[^\\n=]*=\\([ 	\\n\\\\]\\|$comment\\)*[{]\\([^;]\\|$comment\\)*$blobseq\\([^;]\\|$comment\\)*[}]\\?\\([ 	\\n\\\\]*\\|$comment\\)[;]\\?"
-
-# Regular expression that matches a C (possibly multi-line) #define
-# that contains a blob.
-defineblob='[ 	]*#[ 	]*define[ 	][^\n]*\([\\][\n][^\n]*\)*'"$blobseq"'\([^\n]*\\[\n]\)*'
-
-# Regular expression that matches an assembly label followed by a blob
-# without any intervening label.
-asmblob="[a-zA-Z_.][^\\n:;#/ 	]*:\\([^:{}]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
-
-# Set up the sed script that will go through the (processed) input,
-# looking for sequences of blobs and printing whatever was requested.
-# It accepts 3 arguments.
-
-# $1 is the action in case blobs were found in the input.
-
-# $2 is the action in case no blobs were found, not even false positives.
-
-# $3 is the action in case false positives were located.
-
-# $4 is the action for every complete input pattern.
-
-set_sed_main () {
-  falsepos=`${SED-sed} -n 's,^[+]\^*,,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-  blobs=`${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-
-  # Regular expression that matches one or more blobs without
-  # intervening line breaks.
-  sblobctx="\\(\\([^\\n]\\|[/][*](DEBLOB-\\nBED)[*][/]\\)*$blobs\\)\\+"
-
-  # Regular expression that matches the context for a long blob match.
-  lblobctx="\\($initblob\\|$defineblob\\|$asmblob\\|$sblobctx\\)"
-
-  if test "X$falsepos" != X; then
-    check_false_positives="$v:???falsepos
-/$bol$falsepos/!b blob
-$v:+++falsepos
-h
-s/$bol$falsepos/\\1;\/**\/;/g
-# See if, after removing all matches, we end up without any blobs.
-$v:???blobs
-/$blobs/!{
-  g
-  b falsepos
-}
-g
-"
-  else
-    falsepos="$.^"
-    check_false_positives=
-  fi
-
-  $echo "#! /bin/sed -nf
-
-/^$/N
-/^[\\n]\\?;[/][*]\\(end .*\\)\\?[*][/];$/{
-  $4
-  d
-}
-# /^;[/][*]begin /!{
-#   : internal_error
-#   $v:internal_error
-#   s,.*,Internal error at\\n&[\\n]/*(DEBLOB-\\nERROR)*/,;
-#   q 2
-# }
-$v:reading file in
-h
-n
-: read_more
-/^;[/][*]end [^\\n]*[*][/];$/! {
-  H
-  n
-  b read_more
-}
-H
-g
-$4
-$v:read all
-s/^\\(;[/][*]begin [^\\n]*[\\n]\\)*//
-s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//
-$v:???!blobs
-/$blobs/!b clean
-$check_false_positives
-# Fall through.
-: blob
-$v:blob
-$1
-d
-: clean
-$v:clean
-$2
-d
-: falsepos
-$v:falsepos
-$3
-d
-
-: print_matches
-$v:print_matches
-/^$falsepos/! {
-  $v:delete unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  : print_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_matches_nomatch_loop
-  }
-  x
-  b print_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/ {
-  i\\
-::: $file :::
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_matches
-
-: print_marked_matches
-$v:print_marked_matches
-/^$falsepos/! {
-  h
-  s/[\\n]$falsepos.*//
-  : print_marked_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_matches_nomatch_loop
-  }
-  x
-  b print_marked_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  i\\
-::: $file :::
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_marked_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_matches
-
-: print_blobs
-$v:print_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_blobs_match_loop
-    }
-    G
-    b print_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_blobs_nomatch_loop
-  }
-  x
-  b print_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_blobs
-
-: print_marked_blobs
-$v:print_marked_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_blobs_match_loop
-    }
-    G
-    b print_marked_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^falsepos//
-    b print_marked_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_marked_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_blobs_nomatch_loop
-  }
-  x
-  b print_marked_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_marked_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_blobs
-
-: print_cblobs
-$v:print_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_cblobs_match_loop
-    }
-    G
-    b print_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_cblobs_nomatch_loop
-  }
-  x
-  b print_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_cblobs
-
-: print_marked_cblobs
-$v:print_marked_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_cblobs_match_loop
-    }
-    G
-    b print_marked_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_marked_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_marked_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_cblobs_nomatch_loop
-  }
-  x
-  b print_marked_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_marked_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_cblobs
-
-: print_both
-$v:print_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_both_nomatch_loop
-  }
-  x
-  b print_both_delete_to_eol
-}
-h
-i\\
-::: $file :::
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: print_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_both
-
-: list_matches
-$v:list_matches
-/^$falsepos/! {
-  $v:print unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  p
-  : list_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_matches_nomatch_loop
-  }
-  x
-  b list_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-}
-p
-g
-s/^\\($falsepos[^\\n]*\\)//
-: list_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_matches
-
-: list_blobs
-$v:list_blobs
-/^$falsepos/ {
-  $v:print false positive
-  # This is tricky.  We don't want to deblob the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:print false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1\\n/
-    : list_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      P
-      s/^[^\\n]*[\\n]//
-      x
-      b list_blobs_match_loop
-    }
-    G
-    b list_blobs_delete_to_eol
-  }
-  h
-  s/^\\($falsepos[^\\n]*\\)[\\n].*/\\1/
-  p
-  g
-  s/^\\($falsepos[^\\n]*\\)//
-  b list_blobs_delete_to_eol
-}
-/^[^\\n]*$blobs/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_blobs_nomatch_loop
-  }
-  x
-  b list_blobs_delete_to_eol
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: list_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_blobs
-
-: list_both
-$v:list_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_both_nomatch_loop
-  }
-  x
-  b list_both_delete_to_eol
-}
-h
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: list_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_both
-
-" > "$scriptname"
-
-  scriptcmd='${SED-sed} -n -f "$scriptname"'
-
-  case $vp in
-  [01]) xv= ;;
-  2) xv='# ';;
-  esac
-
-  sedunbreak='
-: restart
-/[/][*](DEBLOB-$/ {
-  N
-  /[/][*](DEBLOB-[\n]ERROR)[*][/]/{q 1;}'"
-$xv"'s,[/][*](DEBLOB-[\n]BED)[*][/],,
-  b restart
-}
-p
-'
-  scriptcmd2='${SED-sed} -n -e "$sedunbreak"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_python_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  cat >> "$scriptname" <<EOF
-#! /usr/bin/python
-
-import sys
-import re
-
-# Should we replace blobs and false positives with replacement?
-replace_blob = 0
-replace_falsepos = 0
-replacement = '/*(DEBLOBBED)*/'
-
-# Should we print lines containing blobs, false positives, and neither?
-print_blob = 0
-with_context = 0
-print_falsepos = 0
-print_nomatch = 0
-
-# Should we print the input stack if we find blobs or false positives?
-list_blob = 0
-list_falsepos = 0
-
-# Should we forget everything we know about false positives?
-falsepos = None
-no_falsepos = 0
-
-verbose = $vp
-
-# Which of the defaults above should we override?
-$@ = 1
-
-EOF
-
-  if test "X$DEBLOB_CHECK_PYTHON_REGEX" = Xdebug; then
-    ${SED-sed} -e 's,^[+-],,' -e "$adjust_rx" \
-	-e "s,.*,re.compile (r'&'),g" \
-	< "$regex_name" >> "$scriptname"
-  fi
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,falsepos = r'(?P<falsepos>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,blob = r'(?P<blob>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,cblob = r'(?P<cblob>\\1)'," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-if no_falsepos or falsepos is None:
-    falsepos = r'(?!)'
-
-rx = '^%s|%s' % (falsepos, blob)
-
-if with_context:
-    rx += '|^' + cblob
-
-rxc = re.compile('(?<=.)(?:%s)' % rx, re.M | re.S)
-
-filenames = None
-
-s = '\n'
-
-for line in sys.stdin:
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if line[:3] == ';/*' and line[-4:] == '*/;\n':
-        if line[3:9] == 'begin ':
-            nextfilenames = (line[9:-4], filenames)
-            if s == '\n':
-                filenames = nextfilenames
-                del nextfilenames
-                continue
-        elif line[3:7] == 'end ':
-	    #if print_blob and not print_nomatch:
-	    # from time import time
-	    # sys.stderr.write('%i %i %s\n' % (time(), len(s), filenames[0]))
-            assert line[7:-4] == filenames[0]
-            nextfilenames = filenames[1]
-        else:
-            assert filenames != None
-            s += line
-            continue
-    else:
-        assert filenames != None
-        s += line
-        continue
-
-    if verbose:
-            print('looking for matches')
-            sfilenames = filenames
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print(filenames[0] + ' within')
-                filenames = filenames[1]
-            filenames = sfilenames
-
-    if s[-1] == '\n':
-        s = s[:-1]
-
-    pp = 1
-    p = pend = 0
-    match = rxc.search (s, p)
-    while match != None:
-        firstmatch = match
-        blobs = falses = 0
-        while 1:
-            if verbose:
-                print('found match')
-            what = match.lastgroup
-
-            if what == 'cblob':
-                if verbose: print('match is a blob context')
-                pend = s.find ('\n', match.end()) + 1
-                if pend == 0:
-                    pend = len(s)
-                p = match.start() + 1
-                blob_p = 2
-            else:
-                blob_p = what == 'blob'
-                assert blob_p or what == 'falsepos'
-
-                if blob_p:
-                    if verbose: print('match is a blob')
-                    blobs += 1
-                else:
-                    if verbose: print('match is a false positive')
-                    falses += 1
-
-                if blob_p and replace_blob or not blob_p and replace_falsepos:
-                    s = s[:match.start(what)] + replacement + s[match.end(what):]
-                    p = match.start(what) + len(replacement)
-                    if pend > match.start(what):
-                        pend += p - match.end(what)
-                else:
-                    p = match.end(what)
-
-                if p > pend:
-                    pend = s.find ('\n', p) + 1
-                    if (pend == 0):
-                        pend = len(s)
-
-            match = rxc.search (s, p)
-            if match is None or match.start () >= pend or \
-	       (blob_p and not print_blob and not falses) or \
-	       (not blob_p and not print_falsepos and not blobs):
-                break
-
-        if print_nomatch:
-            sys.stdout.write (s[pp:firstmatch.start() + 1])
-            pp = firstmatch.start() + 1
-        else:
-            pp = s.rfind ('\n', 0, firstmatch.start () + 1) + 1
-
-        if print_blob and blobs or print_falsepos and falses:
-            if not print_nomatch:
-                sfilenames = filenames
-                while filenames != None:
-                    print('::: ' + filenames[0] + ' :::')
-                    filenames = filenames[1]
-                filenames = sfilenames
-            sys.stdout.write (s[pp:pend])
-            pp = pend
-
-        if list_blob and blobs or list_falsepos and falses:
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print (filenames[0] + ' within')
-                filenames = filenames[1]
-            exit (1)
-
-    if print_nomatch:
-        sys.stdout.write(s[pp:])
-
-    if verbose:
-        print('no further matches')
-
-    s = '\n'
-    filenames = nextfilenames
-    del nextfilenames
-
-assert filenames is None
-
-exit (0)
-EOF
-
-  scriptcmd="${PYTHON-python} "'"$scriptname"'
-}
-
-set_perl_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  # Add $ before arguments
-  set `echo "$@" | sed 's,\(^\|= *\),&$,g'`
-
-  cat >> "$scriptname" <<\EOF
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-# Should we replace blobs and false positives with replacement?
-my $replace_blob = 0;
-my $replace_falsepos = 0;
-my $replacement = '/*(DEBLOBBED)*/';
-
-# Should we print lines containing blobs, false positives, and neither?
-my $print_blob = 0;
-my $with_context = 0;
-my $print_falsepos = 0;
-my $print_nomatch = 0;
-
-# Should we print the input stack and exit if we find blobs or false positives?
-my $list_blob = 0;
-my $list_falsepos = 0;
-
-# Should we forget everything we know about false positives?
-my $falsepos;
-my $no_falsepos = 0;
-
-EOF
-
-  cat >> "$scriptname" <<EOF
-my \$verbose = $vp;
-
-# Which of the defaults above should we override?
-$@ = 1;
-
-EOF
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,\$falsepos = qr'(?<falsepos>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,my \$blob = qr'(?<blob>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,my \$cblob = qr'(?<cblob>\\1)'ms if \$with_context;," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-$falsepos = qr/(?<falsepos>(?!))/ if $no_falsepos || ! defined $falsepos;
-
-my $rx = qr/^$falsepos|$blob/ms;
-
-$rx = qr/$rx|^$cblob/ms if $with_context;
-
-my @filenames;
-my $nfilenames = 0;
-my $nextnfilenames;
-
-my $s = '';
-
-while (<STDIN>) {
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if (m:^[;][/][*](begin|end) (.*)[*][/][;]$:) {
-	if ($1 eq 'begin') {
-	    print "entering $2\n" if $verbose;
-	    $filenames[$nfilenames] = $2;
-	    $nextnfilenames = $nfilenames + 1;
-	    if ($s eq '') {
-		$nfilenames = $nextnfilenames;
-		next;
-	    }
-	} else {
-	    $nextnfilenames = $nfilenames - 1;
-	    print "processing $filenames[$nextnfilenames]\n" if $verbose;
-	}
-    } else {
-	$s .= $_;
-	next;
-    }
-
-    if ($verbose) {
-	print "looking for matches in\n";
-	for (my $i = $nfilenames; --$i > 0; ) {
-	    print $filenames[$i], " within\n";
-	}
-	print $filenames[0], "\n";
-    }
-
-    $s =~ s/[\n]$//;
-
-    my $pp = my $p = 0;
-
-    my $matchfound = substr ($s, $p) =~ /$rx/o;
-    while ($matchfound) {
-	print "found first match\n" if $verbose;
-	my $firstmatchstart = $-[0] + $p;
-	my $blobs = my $falses = 0;
-	my $matchstart = $-[0] + $p;
-	my $pend = -1;
-	my $blob_p;
-	do {{
-	    my $matchend = $+[0] + $p;
-	    print "found match $matchstart..$matchend\n" if $verbose;
-	    print "$&" if $verbose > 1;
-
-	    if (defined $+{'cblob'}) {
-		print "match is a blob context\n" if ($verbose);
-		$pend = index ($s, "\n", $matchend) + 1;
-		$pend = length $s if !$pend;
-	    }
-
-	    if (defined $+{'falsepos'}) {
-		print "match is a false positive\n" if ($verbose);
-		# $matchend -= $+[0] - $+[1];
-		$blob_p = 0;
-		$falses++;
-	    } elsif (defined $+{'blob'}) {
-		$blob_p = 1;
-		$blobs++;
-		print "match is a blob at $matchstart\n" if ($verbose);
-	    } else {
-		$blob_p = 2;
-		$p = $matchstart;
-		print "searching up to $pend\n" if $verbose;
-		next;
-	    }
-
-	    if ($blob_p ? $replace_blob : $replace_falsepos) {
-		substr ($s, $matchstart, $matchend - $matchstart,
-			$replacement);
-		$p = $matchstart + length $replacement;
-		$pend += $p - $matchend if $pend >= $matchstart;
-	    } else {
-		$p = $matchend;
-	    }
-
-	    $pend = index ($s, "\n", $p) + 1 if $p >= $pend;
-	    $pend = length $s if !$pend;
-	    print "searching up to $pend\n" if $verbose;
-	    $p--;
-	}} while (($matchfound = (substr ($s, $p) =~ /(?<=.)$rx/mso))
-		  && ($matchstart = $-[0] + $p) < $pend
-		  && !($blob_p
-		       ? (!$print_blob && !$falses)
-		       : (!$print_falsepos && !$blobs)));
-
-	print "last match before $pend\n" if $verbose;
-
-	if ($print_nomatch) {
-	    print substr ($s, $pp, $firstmatchstart - $pp);
-	    $pp = $firstmatchstart;
-	} elsif (($print_blob || $print_falsepos) && $firstmatchstart > 0) {
-	    $pp = rindex ($s, "\n", $firstmatchstart - 1) + 1;
-	}
-
-	if (($print_blob && $blobs) || ($print_falsepos && $falses)) {
-	    if (!$print_nomatch) {
-		for (my $i = $nfilenames; $i-- > 0;) {
-		    print "::: ", $filenames[$i], " :::\n";
-		}
-	    }
-
-	    print substr ($s, $pp, $pend - $pp);
-	    $pp = $pend;
-	}
-
-	if (($list_blob && $blobs) || ($list_falsepos && $falses)) {
-	    for (my $i = $nfilenames; --$i > 0;) {
-		print $filenames[$i], " within ";
-	    }
-	    print $filenames[0], "\n";
-	    exit (1);
-	}
-    }
-
-    print substr ($s, $pp) if $print_nomatch;
-
-    print "no further matches\n" if $verbose;
-
-    $s = '';
-    $nfilenames = $nextnfilenames;
-}
-
-exit (0);
-EOF
-
-  scriptcmd="${PERL-perl} "'"$scriptname"'
-}
-
-set_awk_main () {
-  adjust_rx='
-s,[$]$,([\\n]|$),;
-s,\[^\],[^\\],g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  case " = $@ = " in
-  *" = no_falsepos = "*) falsepos='$.^';;
-  *) falsepos=`
-    ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'
-    `
-     case $falsepos in "") falsepos='$.^';; esac;;
-  esac
-
-  blob=`
-    ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'`
-
-  case " = $@ = " in
-  *" = with_context = "*) cblob=`
-    $echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx"
-   `;;
-  *) cblob='$.^';;
-  esac
-
-  xrs= nrs="# " eor="RT" eormatch='RT ~ ' eornl='[\n]' eornlsz=1
-  # Uncomment the line below to disable the use of a regular
-  # expression for the awk Record Separator, a GNU awk extension.
-  # Using this extension appears to save a lot of memory for long
-  # deblob-check runs.
-  # xrs="# " nrs= eor='$0' eormatch='' eornl= eornlsz=0
-
-  cat >> "$scriptname" <<EOF
-#! /bin/gawk --re-interval -f
-
-BEGIN {
-    # Should we replace blobs and false positives with replacement?
-    replace_blob = 0;
-    replace_falsepos = 0;
-    replacement = "/*(DEBLOBBED)*/";
-
-    # Should we print lines containing blobs, false positives, and neither?
-    print_blob = 0;
-    with_context = 0;
-    print_falsepos = 0;
-    print_nomatch = 0;
-
-    # Should we print the input stack and exit if we find blobs or
-    # false positives?
-    list_blob = 0;
-    list_falsepos = 0;
-
-    # Should we forget everything we know about false positives?
-    no_falsepos = 0;
-
-    verbose = $vp;
-
-    nfilenames = 0;
-    s = "\n";
-
-    # Which of the defaults above should we override?
-    $@ = 1;
-
-    # requires GNU awk RS extension:
-$xrs	RS = "[;][/][*](begin|end) [^\n]*[*][/][;][\n]";
-}
-# requires GNU awk RS extension:
-$xrs { s = s \$0; }
-# does not require GNU awk RS extension:
-$nrs !/^[;][/][*].*[*][/][;]$/ {
-$nrs	 s = s \$0 "\n";
-$nrs	 next;
-$nrs }
-$eormatch /^[;][/][*]begin .*[*][/][;]$eornl$/ {
-    filenames[nfilenames] = substr($eor, 10, length ($eor) - 12 - $eornlsz);
-    if (verbose) print "entering " nfilenames ": " filenames[nfilenames];
-    nextnfilenames = nfilenames + 1;
-    if (s == "\n") {
-	nfilenames = nextnfilenames;
-	next;
-    }
-}
-$eormatch /^[;][/][*]end .*[*][/][;]$eornl$/ {
-    nextnfilenames = nfilenames - 1;
-    if (verbose)
-	print "got to the end of " nextnfilenames ": " filenames[nextnfilenames];
-}
-{
-    if (verbose) {
-	print "looking for matches";
-	for (i = nfilenames; --i > 0;)
-	    print filenames[i] " within";
-	print filenames[0]
-    }
-
-    s = substr (s, 1, length (s) - 1)
-
-    pp = 2;
-    p = pend = 1;
-    if (verbose > 1) print "searching starting at", substr (s, p, 10)
-    matchfound = match (substr (s, p),
-			/[\n]($falsepos)|[\n]($cblob)|.($blob)/);
-    while (matchfound) {
-	blobs = falses = 0;
-	firstmatchstart = RSTART + p;
-	for (;;) {
-	    matchstart = RSTART + p - 1;
-	    matchlen = RLENGTH;
-	    if (verbose) {
-		print "found match", matchstart, matchlen;
-		if (verbose > 1)
-		    print substr (s, matchstart + 1, matchlen - 1);
-	    }
-
-	    if (match (substr (s, matchstart, matchlen), /^[\n]($falsepos)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a false positive of length", matchlen;
-		blob_p = 0;
-		falses++;
-	    } else if (match (substr (s, matchstart, matchlen), /^.($blob)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a blob of length", matchlen;
-		blob_p = 1;
-		blobs++;
-	    } else if (match (substr (s, matchstart, matchlen), /^[\n]($cblob)$/) == 1) {
-		if (verbose) print "match is a blob context";
-		pend = index (substr (s, matchstart + matchlen), "\n");
-		if (pend)
-		    pend += matchstart + matchlen;
-		else
-		    pend = length (s);
-		p = matchstart + 1;
-		blob_p = 2;
-		if (verbose > 1) print "range is:", substr (s, p, pend - p);
-	    }
-
-	    if (blob_p < 2) {
-		if (blob_p ? replace_blob : replace_falsepos) {
-		    s = substr (s, 1, matchstart)		\\
-			replacement				\\
-			substr (s, matchstart + matchlen);
-		    p = matchstart + length (replacement) - 1;
-		    pend += (p + 1 - matchstart - matchlen);
-		} else
-		    p = matchstart + matchlen - 1;
-
-		if (p >= pend) {
-		    i = index (substr (s, p + 1), "\n");
-		    if (i)
-			pend = p + 1 + i;
-		    else
-			pend = length (s)
-		}
-	    }
-
-	    if (verbose) print "search until", pend;
-
-	    if (!(matchfound = match (substr (s, p),
-				      /[\n]($falsepos)|[\n]($cblob)|.($blob)/)) ||
-		p + RSTART >= pend ||
-		(blob_p ?
-		 (!print_blob && !falses) :
-		 (!print_falsepos && !blobs)))
-		break;
-	}
-
-	if (print_nomatch)
-	    printf "%s", substr (s, pp, firstmatchstart - pp);
-	else if (print_blob || print_falsepos) {
-	    lastline = substr (s, pp, firstmatchstart - pp);
-	    sub (/.*[\n]/, "", lastline);
-	    if (verbose) print "lastline: " lastline "\\\\n"
-	    firstmatchstart -= length (lastline);
-	}
-	pp = firstmatchstart;
-
-	if (verbose) print "match set range:", pp, pend
-
-	if ((print_blob && blobs) || (print_falsepos && falses)) {
-	    if (!print_nomatch)
-		for (i = nfilenames; i-- > 0;)
-		    print "::: " filenames[i] " :::";
-	    printf "%s", substr (s, pp, pend - pp);
-	    pp = pend;
-	}
-
-	if ((list_blob && blobs) || (list_falsepos && falses)) {
-	    for (i = nfilenames; --i > 0;)
-		print filenames[i] " within";
-	    print filenames[0];
-	    exit (1);
-	}
-    }
-
-    if (print_nomatch)
-	printf "%s", substr (s, pp)
-
-    if (verbose)
-	print "no further matches";
-
-    s = "\n";
-    nfilenames = nextnfilenames;
-    next;
-}
-EOF
-
-  scriptcmd="${AWK-gawk} --re-interval -f "'"$scriptname"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_save_script_input_main () {
-  savename=`mktemp -t deblob-check-input-XXXXXX`
-  scriptcmd="{ echo saving input in $savename && cat > $savename && echo done; }"
-}
-
-# Process an input file named in $1 and run it through the blob
-# recognizer.  Functions set_except and set_sed_cmd provide additional
-# arguments on a per-file and per-action basis.
-
-check () {
-  case "$#" in 1) ;; *) echo ICE >&2; exit 1;; esac
-
-  input=$1
-
-  # Add $1 to falsepos.  Its usage makes it implicitly anchored to the
-  # beginning of the line.  $2, if present, will some day narrow the
-  # falsepos matches to files that match it.
-  addx () {
-    $echo "+^$1" >> $regex_name
-  }
-
-  # Add $1 to falseneg.  Unlike addx, it is NOT implicitly anchored to
-  # the beginning of the line.  $2, if present, will some day narrow
-  # the falseneg matches to files that match it.
-  badx () {
-    $echo "-$1" >> $regex_name
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';'.  $2 may optionally name the files in which this
-  # match is to be disregarded as a potential blob.
-  initnc () {
-    addx "$1[^;]*[;]\\?" $2
-  }
-
-  # Same as initnc, but require the terminating semicolon.
-  defsnc () {
-    addx "$1[^;]*[;]" $2
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';' that's not within comments.
-  initc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]\\?" $2
-  }
-
-  # Same as initc, but require the terminating semicolon.
-  defsc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]" $2
-  }
-
-  # Accept as a non-blob an expression $1 that would have otherwise
-  # triggered blob detection.  The expression must end in a way that
-  # would trigger the blob detection machinery.
-  accept () {
-    addx "$1" $2
-  }
-
-  # Match up to the end a comment started in $1.
-  ocomment () {
-    addx "$1[/]*\\([*]*[^*/][/]*\\)*[*]\+[/]" $2
-  }
-
-  # Match $1 followed by backslash-terminated lines and a last
-  # non-backslash-terminated line.
-  oprepline () {
-    addx "$1\\([^\\\\\\n]*[\\\\][\\n]\\)*[^\\\\\\n]*$" $2
-  }
-
-  # Match $1 in $2 as a blob.  Not anchored.
-  blobna () {
-    badx "$1" $2
-  }
-
-  # Match $1 as a blob anywhere.  $2 is just for documentation purposes.
-  blobname () {
-    badx "$1"
-  }
-
-  # Match $1 in $2 as a blob.  The expectation is a match in the
-  # beginning of line, but we don't do anchoring of blob patterns ATM.
-  blob () {
-    badx "$1" $2
-  }
-
-  regex_name=`mktemp -t deblob-check-regex-XXXXXX`
-  tempfiles="$regex_name"
-
-  set_except "$input"
-
-  # Check that all regular expressions match our requirements.
-  ${SED-sed} -n '
-s,^\(-\^\?\|[+]\^\),,
-h
-s,[$]$,,
-s,\([^\\]\|^\)\(\(\\\\\)*\)\(\[^\?[]]\?[^]]\+\]\([*]\|\\[+?]\)\?\(\\\\\)*\)\+,\1\2,g
-/\([^\\]\|^\)\(\\\\\)*\([{(|)}?+^$"'"'"'; 	]\)\|^$/{
-  g
-  i\
-BAD regular expression:
-  p
-  q 1
-}' $regex_name >&2 || exit 1
-
-  scriptname=`mktemp -t deblob-check-script-XXXXXX`
-  tempfiles="$tempfiles $scriptname"
-
-  scriptcmd=false
-  scriptcmd2=
-
-  $set_cmd "$input"
-
-  for f in $tempfiles; do
-    case $f in "$scriptname") ;;
-    *) rm -f "$f" ;;
-    esac
-  done
-  tempfiles="$scriptname"
-
-  # Choose the input source...
-  case $input in
-  -) in= ;;
-  *) in='< "$input"' ;;
-  esac
-
-  set fnord # shifted out below
-
-  # Decompress as needed...
-  case $input in
-  *.bz2) cmd='bunzip2' ;;
-  *.xz) cmd='unxz' ;;
-  *.lz) cmd='lzip -d' ;;
-  *.gz | *.tgz) cmd='gunzip' ;;
-  *) cmd= ;;
-  esac
-  if test -n "$cmd"; then
-    set "$@" "$cmd"
-  fi
-
-  # Extract or otherwise munge...
-  case /$input in
-  *.tar*)
-    tarwrap=`mktemp -t deblob-check-tarwrap-XXXXXX`
-    tempfiles="$tempfiles $tarwrap"
-    
-    cat >> $tarwrap <<EOF
-#! /bin/sh
-echo='$echo' &&
-\$echo ";/*begin \$1*/;" &&
-cat &&
-echo &&
-\$echo ";/*end \$1*/;"
-EOF
-    chmod +x $tarwrap
-    cmd="tar -xf - --to-command='$tarwrap \"\$TAR_FILENAME\"'"
-    ;;
-  *.patch | *.patch.*z* | */patch-* | *.diff | *.diff.*z*)
-    if $reverse_patch; then
-      s=- r=+
-    else
-      s=+ r=-
-    fi
-    sedpatch="
-      /^[$r]/b testlastline;
-      # /^[*!]/ {
-      # 	s,^,context diffs are not properly supported\\n,;
-      # 	W /dev/stderr
-      # 	d;
-      # }
-      /^\\(@@ \\|$s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^\\($s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^$s$s$s / {
-	H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	s,^$s$s$s \\(.*\\)$,;/*begin \\1*/;,;
-	p;
-	d;
-      }
-      /^@@ / {
-        H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	# A number of patterns for patches depend on the ;/*@@ lines for
-	# context.
-	s,^.*$,;/*begin &*/;\\n;/*&*/;,;
-	p;
-	d;
-      }
-      s,^[ !$s],,
-      p;
-      :testlastline
-      $ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      d;"
-    cmd='${SED-sed} "$sedpatch"'
-    ;;
-  *)
-    cmd='cat'
-    ;;
-  esac
-  cmd="{ echo \";/*begin $input*/;\"; $cmd; echo; echo \";/*end $input*/;\"; }"
-  set "$@" "$cmd"
-
-  case $input in
-  *.tar*)
-    cmd="{ cat; cat > /dev/null; }"
-    set "$@" "$cmd"
-    ;;
-  esac
-
-  # Then run through the selected action.
-  set "$@" "$scriptcmd"
-
-  case $scriptcmd2 in "" | cat) ;;
-  *) set "$@" "$scriptcmd2"
-  esac
-
-  # test $# = 1 || set "$@" "cat"
-
-  shift # fnord goes out here
-
-  pipe=
-  for cmd
-  do
-    if test -z "$pipe"; then
-      pipe="$cmd $in"
-    else
-      pipe="$pipe | $cmd"
-    fi
-  done
-
-  eval "$pipe"
-  status=$?
-
-  $rm $tempfiles
-  tempfiles=
-
-  (exit $status)
-}
-
-# If no input given, use stdin.
-case $# in
-0)
-  test -t 0 && echo reading from standard input >&2
-  set fnord -
-  shift
-  ;;
-esac
-
-# The lines below commented out out #list: can be used to get a list
-# of matching inputs.  ATM this is useless, so we just use a shell
-# boolean.
-
-#list: n=$#
-pass=:
-
-tempfiles=
-trap "status=$?; test -z \"$tempfiles\" || rm -f $tempfiles; (exit $status); exit" 0 1 2 15
-
-process_arg=
-
-# Go through each of the input files in the command line.
-for file
-do
-  case $process_arg in
-  "") ;;
-  --implied-prefix | --prefix | -i)
-    prefix=$file
-    case $prefix in
-    /*/) ;;
-    */) prefix=/$prefix ;;
-    /*) prefix=$prefix/ ;;
-    *) prefix=/$prefix/ ;;
-    esac
-    process_arg=
-    continue
-    ;;
-  *)
-    echo Internal error with process_arg=$process_arg >&2
-    exit 1
-    ;;
-  esac
-
-  case $sawdashdash$file in
-  --implied-prefix | --prefix | -i)
-    process_arg=$file
-    continue
-    ;;
-  esac
-
-  # If we print anything whatsoever (even a blank line) while
-  # processing it, we've failed.
-  if check "$file"; then
-    :
-  else
-    pass=false
-    #list: set fnord "$@" "$file"
-    #list: shift
-  fi
-done
-
-case $process_arg in
-"") ;;
-*)
-  echo Missing argument to $process_arg >&2
-  exit 1
-  ;;
-esac
-
-#list: shift $n
-
-#list: exec test $# = 0
-$pass
-exit
diff --git a/helpers/DATA/linux-lts-wily/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch b/helpers/DATA/linux-lts-wily/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch
deleted file mode 100644
index 0b06e092a..000000000
--- a/helpers/DATA/linux-lts-wily/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r8-for-3.19.0.patch
+++ /dev/null
@@ -1,1220 +0,0 @@
-From 22fc9f99fad0088bd21ca943e0c5e5a87aa1ef65 Mon Sep 17 00:00:00 2001
-From: Mauro Andreolini <mauro.andreolini@unimore.it>
-Date: Fri, 5 Jun 2015 17:45:40 +0200
-Subject: [PATCH 3/3] block, bfq: add Early Queue Merge (EQM) to BFQ-v7r8 for
- 3.19.0
-
-A set of processes may happen  to  perform interleaved reads, i.e.,requests
-whose union would give rise to a  sequential read  pattern.  There are two
-typical  cases: in the first  case,   processes  read  fixed-size chunks of
-data at a fixed distance from each other, while in the second case processes
-may read variable-size chunks at  variable distances. The latter case occurs
-for  example with  QEMU, which  splits the  I/O generated  by the  guest into
-multiple chunks,  and lets these chunks  be served by a  pool of cooperating
-processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
-available  process. CFQ  uses actual  queue merging  for the  first type of
-rocesses, whereas it  uses preemption to get a sequential  read pattern out
-of the read requests  performed by the second type of  processes. In the end
-it uses  two different  mechanisms to  achieve the  same goal: boosting the
-throughput with interleaved I/O.
-
-This patch introduces  Early Queue Merge (EQM), a unified mechanism to get a
-sequential  read pattern  with both  types of  processes. The  main idea is
-checking newly arrived requests against the next request of the active queue
-both in case of actual request insert and in case of request merge. By doing
-so, both the types of processes can be handled by just merging their queues.
-EQM is  then simpler and  more compact than the  pair of mechanisms used in
-CFQ.
-
-Finally, EQM  also preserves the  typical low-latency properties of BFQ, by
-properly restoring the weight-raising state of a queue when it gets back to
-a non-merged state.
-
-Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
----
- block/bfq-iosched.c | 750 +++++++++++++++++++++++++++++++++++++---------------
- block/bfq-sched.c   |  28 --
- block/bfq.h         |  54 +++-
- 3 files changed, 580 insertions(+), 252 deletions(-)
-
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-index 773b2ee..71b51c1 100644
---- a/block/bfq-iosched.c
-+++ b/block/bfq-iosched.c
-@@ -573,6 +573,57 @@ static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
- 	return dur;
- }
- 
-+static inline unsigned
-+bfq_bfqq_cooperations(struct bfq_queue *bfqq)
-+{
-+	return bfqq->bic ? bfqq->bic->cooperations : 0;
-+}
-+
-+static inline void
-+bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	if (bic->saved_idle_window)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+	if (bic->saved_IO_bound)
-+		bfq_mark_bfqq_IO_bound(bfqq);
-+	else
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+	/* Assuming that the flag in_large_burst is already correctly set */
-+	if (bic->wr_time_left && bfqq->bfqd->low_latency &&
-+	    !bfq_bfqq_in_large_burst(bfqq) &&
-+	    bic->cooperations < bfqq->bfqd->bfq_coop_thresh) {
-+		/*
-+		 * Start a weight raising period with the duration given by
-+		 * the raising_time_left snapshot.
-+		 */
-+		if (bfq_bfqq_busy(bfqq))
-+			bfqq->bfqd->wr_busy_queues++;
-+		bfqq->wr_coeff = bfqq->bfqd->bfq_wr_coeff;
-+		bfqq->wr_cur_max_time = bic->wr_time_left;
-+		bfqq->last_wr_start_finish = jiffies;
-+		bfqq->entity.ioprio_changed = 1;
-+	}
-+	/*
-+	 * Clear wr_time_left to prevent bfq_bfqq_save_state() from
-+	 * getting confused about the queue's need of a weight-raising
-+	 * period.
-+	 */
-+	bic->wr_time_left = 0;
-+}
-+
-+/* Must be called with the queue_lock held. */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
- /* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
- static inline void bfq_reset_burst_list(struct bfq_data *bfqd,
- 					struct bfq_queue *bfqq)
-@@ -817,7 +868,7 @@ static void bfq_add_request(struct request *rq)
- 		bfq_rq_pos_tree_add(bfqd, bfqq);
- 
- 	if (!bfq_bfqq_busy(bfqq)) {
--		bool soft_rt,
-+		bool soft_rt, coop_or_in_burst,
- 		     idle_for_long_time = time_is_before_jiffies(
- 						bfqq->budget_timeout +
- 						bfqd->bfq_wr_min_idle_time);
-@@ -841,11 +892,12 @@ static void bfq_add_request(struct request *rq)
- 				bfqd->last_ins_in_burst = jiffies;
- 		}
- 
-+		coop_or_in_burst = bfq_bfqq_in_large_burst(bfqq) ||
-+			bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh;
- 		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
--			!bfq_bfqq_in_large_burst(bfqq) &&
-+			!coop_or_in_burst &&
- 			time_is_before_jiffies(bfqq->soft_rt_next_start);
--		interactive = !bfq_bfqq_in_large_burst(bfqq) &&
--			      idle_for_long_time;
-+		interactive = !coop_or_in_burst && idle_for_long_time;
- 		entity->budget = max_t(unsigned long, bfqq->max_budget,
- 				       bfq_serv_to_charge(next_rq, bfqq));
- 
-@@ -864,11 +916,20 @@ static void bfq_add_request(struct request *rq)
- 		if (!bfqd->low_latency)
- 			goto add_bfqq_busy;
- 
-+		if (bfq_bfqq_just_split(bfqq))
-+			goto set_ioprio_changed;
-+
- 		/*
--		 * If the queue is not being boosted and has been idle
--		 * for enough time, start a weight-raising period
-+		 * If the queue:
-+		 * - is not being boosted,
-+		 * - has been idle for enough time,
-+		 * - is not a sync queue or is linked to a bfq_io_cq (it is
-+		 *   shared "for its nature" or it is not shared and its
-+		 *   requests have not been redirected to a shared queue)
-+		 * start a weight-raising period.
- 		 */
--		if (old_wr_coeff == 1 && (interactive || soft_rt)) {
-+		if (old_wr_coeff == 1 && (interactive || soft_rt) &&
-+		    (!bfq_bfqq_sync(bfqq) || bfqq->bic != NULL)) {
- 			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
- 			if (interactive)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-@@ -882,7 +943,7 @@ static void bfq_add_request(struct request *rq)
- 		} else if (old_wr_coeff > 1) {
- 			if (interactive)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
--			else if (bfq_bfqq_in_large_burst(bfqq) ||
-+			else if (coop_or_in_burst ||
- 				 (bfqq->wr_cur_max_time ==
- 				  bfqd->bfq_wr_rt_max_time &&
- 				  !soft_rt)) {
-@@ -901,18 +962,18 @@ static void bfq_add_request(struct request *rq)
- 				/*
- 				 *
- 				 * The remaining weight-raising time is lower
--				 * than bfqd->bfq_wr_rt_max_time, which
--				 * means that the application is enjoying
--				 * weight raising either because deemed soft-
--				 * rt in the near past, or because deemed
--				 * interactive a long ago. In both cases,
--				 * resetting now the current remaining weight-
--				 * raising time for the application to the
--				 * weight-raising duration for soft rt
--				 * applications would not cause any latency
--				 * increase for the application (as the new
--				 * duration would be higher than the remaining
--				 * time).
-+				 * than bfqd->bfq_wr_rt_max_time, which means
-+				 * that the application is enjoying weight
-+				 * raising either because deemed soft-rt in
-+				 * the near past, or because deemed interactive
-+				 * a long ago.
-+				 * In both cases, resetting now the current
-+				 * remaining weight-raising time for the
-+				 * application to the weight-raising duration
-+				 * for soft rt applications would not cause any
-+				 * latency increase for the application (as the
-+				 * new duration would be higher than the
-+				 * remaining time).
- 				 *
- 				 * In addition, the application is now meeting
- 				 * the requirements for being deemed soft rt.
-@@ -947,6 +1008,7 @@ static void bfq_add_request(struct request *rq)
- 					bfqd->bfq_wr_rt_max_time;
- 			}
- 		}
-+set_ioprio_changed:
- 		if (old_wr_coeff != bfqq->wr_coeff)
- 			entity->ioprio_changed = 1;
- add_bfqq_busy:
-@@ -1167,90 +1229,35 @@ static void bfq_end_wr(struct bfq_data *bfqd)
- 	spin_unlock_irq(bfqd->queue->queue_lock);
- }
- 
--static int bfq_allow_merge(struct request_queue *q, struct request *rq,
--			   struct bio *bio)
-+static inline sector_t bfq_io_struct_pos(void *io_struct, bool request)
- {
--	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_io_cq *bic;
--	struct bfq_queue *bfqq;
--
--	/*
--	 * Disallow merge of a sync bio into an async request.
--	 */
--	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
--		return 0;
--
--	/*
--	 * Lookup the bfqq that this bio will be queued with. Allow
--	 * merge only if rq is queued there.
--	 * Queue lock is held here.
--	 */
--	bic = bfq_bic_lookup(bfqd, current->io_context);
--	if (bic == NULL)
--		return 0;
--
--	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
--	return bfqq == RQ_BFQQ(rq);
--}
--
--static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
--				       struct bfq_queue *bfqq)
--{
--	if (bfqq != NULL) {
--		bfq_mark_bfqq_must_alloc(bfqq);
--		bfq_mark_bfqq_budget_new(bfqq);
--		bfq_clear_bfqq_fifo_expire(bfqq);
--
--		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
--
--		bfq_log_bfqq(bfqd, bfqq,
--			     "set_in_service_queue, cur-budget = %lu",
--			     bfqq->entity.budget);
--	}
--
--	bfqd->in_service_queue = bfqq;
--}
--
--/*
-- * Get and set a new queue for service.
-- */
--static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
--						  struct bfq_queue *bfqq)
--{
--	if (!bfqq)
--		bfqq = bfq_get_next_queue(bfqd);
-+	if (request)
-+		return blk_rq_pos(io_struct);
- 	else
--		bfq_get_next_queue_forced(bfqd, bfqq);
--
--	__bfq_set_in_service_queue(bfqd, bfqq);
--	return bfqq;
-+		return ((struct bio *)io_struct)->bi_iter.bi_sector;
- }
- 
--static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
--					  struct request *rq)
-+static inline sector_t bfq_dist_from(sector_t pos1,
-+				     sector_t pos2)
- {
--	if (blk_rq_pos(rq) >= bfqd->last_position)
--		return blk_rq_pos(rq) - bfqd->last_position;
-+	if (pos1 >= pos2)
-+		return pos1 - pos2;
- 	else
--		return bfqd->last_position - blk_rq_pos(rq);
-+		return pos2 - pos1;
- }
- 
--/*
-- * Return true if bfqq has no request pending and rq is close enough to
-- * bfqd->last_position, or if rq is closer to bfqd->last_position than
-- * bfqq->next_rq
-- */
--static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+static inline int bfq_rq_close_to_sector(void *io_struct, bool request,
-+					 sector_t sector)
- {
--	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+	return bfq_dist_from(bfq_io_struct_pos(io_struct, request), sector) <=
-+	       BFQQ_SEEK_THR;
- }
- 
--static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd, sector_t sector)
- {
- 	struct rb_root *root = &bfqd->rq_pos_tree;
- 	struct rb_node *parent, *node;
- 	struct bfq_queue *__bfqq;
--	sector_t sector = bfqd->last_position;
- 
- 	if (RB_EMPTY_ROOT(root))
- 		return NULL;
-@@ -1269,7 +1276,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 	 * next_request position).
- 	 */
- 	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	if (blk_rq_pos(__bfqq->next_rq) < sector)
-@@ -1280,7 +1287,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 		return NULL;
- 
- 	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	return NULL;
-@@ -1289,14 +1296,12 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- /*
-  * bfqd - obvious
-  * cur_bfqq - passed in so that we don't decide that the current queue
-- *            is closely cooperating with itself.
-- *
-- * We are assuming that cur_bfqq has dispatched at least one request,
-- * and that bfqd->last_position reflects a position on the disk associated
-- * with the I/O issued by cur_bfqq.
-+ *            is closely cooperating with itself
-+ * sector - used as a reference point to search for a close queue
-  */
- static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
--					      struct bfq_queue *cur_bfqq)
-+					      struct bfq_queue *cur_bfqq,
-+					      sector_t sector)
- {
- 	struct bfq_queue *bfqq;
- 
-@@ -1316,7 +1321,7 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	 * working closely on the same area of the disk. In that case,
- 	 * we can group them together and don't waste time idling.
- 	 */
--	bfqq = bfqq_close(bfqd);
-+	bfqq = bfqq_close(bfqd, sector);
- 	if (bfqq == NULL || bfqq == cur_bfqq)
- 		return NULL;
- 
-@@ -1343,6 +1348,315 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	return bfqq;
- }
- 
-+static struct bfq_queue *
-+bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return NULL;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return NULL;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return NULL;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+
-+	/*
-+	 * Merging is just a redirection: the requests of the process
-+	 * owning one of the two queues are redirected to the other queue.
-+	 * The latter queue, in its turn, is set as shared if this is the
-+	 * first time that the requests of some process are redirected to
-+	 * it.
-+	 *
-+	 * We redirect bfqq to new_bfqq and not the opposite, because we
-+	 * are in the context of the process owning bfqq, hence we have
-+	 * the io_cq of this process. So we can immediately configure this
-+	 * io_cq to redirect the requests of the process to new_bfqq.
-+	 *
-+	 * NOTE, even if new_bfqq coincides with the in-service queue, the
-+	 * io_cq of new_bfqq is not available, because, if the in-service
-+	 * queue is shared, bfqd->in_service_bic may not point to the
-+	 * io_cq of the in-service queue.
-+	 * Redirecting the requests of the process owning bfqq to the
-+	 * currently in-service queue is in any case the best option, as
-+	 * we feed the in-service queue with new requests close to the
-+	 * last request served and, by doing so, hopefully increase the
-+	 * throughput.
-+	 */
-+	bfqq->new_bfqq = new_bfqq;
-+	atomic_add(process_refs, &new_bfqq->ref);
-+	return new_bfqq;
-+}
-+
-+/*
-+ * Attempt to schedule a merge of bfqq with the currently in-service queue
-+ * or with a close queue among the scheduled queues.
-+ * Return NULL if no merge was scheduled, a pointer to the shared bfq_queue
-+ * structure otherwise.
-+ *
-+ * The OOM queue is not allowed to participate to cooperation: in fact, since
-+ * the requests temporarily redirected to the OOM queue could be redirected
-+ * again to dedicated queues at any time, the state needed to correctly
-+ * handle merging with the OOM queue would be quite complex and expensive
-+ * to maintain. Besides, in such a critical condition as an out of memory,
-+ * the benefits of queue merging may be little relevant, or even negligible.
-+ */
-+static struct bfq_queue *
-+bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+		     void *io_struct, bool request)
-+{
-+	struct bfq_queue *in_service_bfqq, *new_bfqq;
-+
-+	if (bfqq->new_bfqq)
-+		return bfqq->new_bfqq;
-+
-+	if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
-+		return NULL;
-+
-+	in_service_bfqq = bfqd->in_service_queue;
-+
-+	if (in_service_bfqq == NULL || in_service_bfqq == bfqq ||
-+	    !bfqd->in_service_bic ||
-+	    unlikely(in_service_bfqq == &bfqd->oom_bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_idle(in_service_bfqq) || bfq_class_idle(bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_rt(in_service_bfqq) != bfq_class_rt(bfqq))
-+		goto check_scheduled;
-+
-+	if (in_service_bfqq->entity.parent != bfqq->entity.parent)
-+		goto check_scheduled;
-+
-+	if (bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
-+	    bfq_bfqq_sync(in_service_bfqq) && bfq_bfqq_sync(bfqq)) {
-+		new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
-+		if (new_bfqq != NULL)
-+			return new_bfqq; /* Merge with in-service queue */
-+	}
-+
-+	/*
-+	 * Check whether there is a cooperator among currently scheduled
-+	 * queues. The only thing we need is that the bio/request is not
-+	 * NULL, as we need it to establish whether a cooperator exists.
-+	 */
-+check_scheduled:
-+	new_bfqq = bfq_close_cooperator(bfqd, bfqq,
-+					bfq_io_struct_pos(io_struct, request));
-+	if (new_bfqq && likely(new_bfqq != &bfqd->oom_bfqq))
-+		return bfq_setup_merge(bfqq, new_bfqq);
-+
-+	return NULL;
-+}
-+
-+static inline void
-+bfq_bfqq_save_state(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic == NULL, the queue is already shared or its requests
-+	 * have already been redirected to a shared queue; both idle window
-+	 * and weight raising state have already been saved. Do nothing.
-+	 */
-+	if (bfqq->bic == NULL)
-+		return;
-+	if (bfqq->bic->wr_time_left)
-+		/*
-+		 * This is the queue of a just-started process, and would
-+		 * deserve weight raising: we set wr_time_left to the full
-+		 * weight-raising duration to trigger weight-raising when
-+		 * and if the queue is split and the first request of the
-+		 * queue is enqueued.
-+		 */
-+		bfqq->bic->wr_time_left = bfq_wr_duration(bfqq->bfqd);
-+	else if (bfqq->wr_coeff > 1) {
-+		unsigned long wr_duration =
-+			jiffies - bfqq->last_wr_start_finish;
-+		/*
-+		 * It may happen that a queue's weight raising period lasts
-+		 * longer than its wr_cur_max_time, as weight raising is
-+		 * handled only when a request is enqueued or dispatched (it
-+		 * does not use any timer). If the weight raising period is
-+		 * about to end, don't save it.
-+		 */
-+		if (bfqq->wr_cur_max_time <= wr_duration)
-+			bfqq->bic->wr_time_left = 0;
-+		else
-+			bfqq->bic->wr_time_left =
-+				bfqq->wr_cur_max_time - wr_duration;
-+		/*
-+		 * The bfq_queue is becoming shared or the requests of the
-+		 * process owning the queue are being redirected to a shared
-+		 * queue. Stop the weight raising period of the queue, as in
-+		 * both cases it should not be owned by an interactive or
-+		 * soft real-time application.
-+		 */
-+		bfq_bfqq_end_wr(bfqq);
-+	} else
-+		bfqq->bic->wr_time_left = 0;
-+	bfqq->bic->saved_idle_window = bfq_bfqq_idle_window(bfqq);
-+	bfqq->bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq);
-+	bfqq->bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq);
-+	bfqq->bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node);
-+	bfqq->bic->cooperations++;
-+	bfqq->bic->failed_cooperations = 0;
-+}
-+
-+static inline void
-+bfq_get_bic_reference(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic has a non-NULL value, the bic to which it belongs
-+	 * is about to begin using a shared bfq_queue.
-+	 */
-+	if (bfqq->bic)
-+		atomic_long_inc(&bfqq->bic->icq.ioc->refcount);
-+}
-+
-+static void
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)new_bfqq->pid);
-+	/* Save weight raising and idle window of the merged queues */
-+	bfq_bfqq_save_state(bfqq);
-+	bfq_bfqq_save_state(new_bfqq);
-+	if (bfq_bfqq_IO_bound(bfqq))
-+		bfq_mark_bfqq_IO_bound(new_bfqq);
-+	bfq_clear_bfqq_IO_bound(bfqq);
-+	/*
-+	 * Grab a reference to the bic, to prevent it from being destroyed
-+	 * before being possibly touched by a bfq_split_bfqq().
-+	 */
-+	bfq_get_bic_reference(bfqq);
-+	bfq_get_bic_reference(new_bfqq);
-+	/*
-+	 * Merge queues (that is, let bic redirect its requests to new_bfqq)
-+	 */
-+	bic_set_bfqq(bic, new_bfqq, 1);
-+	bfq_mark_bfqq_coop(new_bfqq);
-+	/*
-+	 * new_bfqq now belongs to at least two bics (it is a shared queue):
-+	 * set new_bfqq->bic to NULL. bfqq either:
-+	 * - does not belong to any bic any more, and hence bfqq->bic must
-+	 *   be set to NULL, or
-+	 * - is a queue whose owning bics have already been redirected to a
-+	 *   different queue, hence the queue is destined to not belong to
-+	 *   any bic soon and bfqq->bic is already NULL (therefore the next
-+	 *   assignment causes no harm).
-+	 */
-+	new_bfqq->bic = NULL;
-+	bfqq->bic = NULL;
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_bfqq_increase_failed_cooperations(struct bfq_queue *bfqq)
-+{
-+	struct bfq_io_cq *bic = bfqq->bic;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	if (bic && bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh) {
-+		bic->failed_cooperations++;
-+		if (bic->failed_cooperations >= bfqd->bfq_failed_cooperations)
-+			bic->cooperations = 0;
-+	}
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	/*
-+	 * We take advantage of this function to perform an early merge
-+	 * of the queues of possible cooperating processes.
-+	 */
-+	if (bfqq != NULL) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, bio, false);
-+		if (new_bfqq != NULL) {
-+			bfq_merge_bfqqs(bfqd, bic, bfqq, new_bfqq);
-+			/*
-+			 * If we get here, the bio will be queued in the
-+			 * shared queue, i.e., new_bfqq, so use new_bfqq
-+			 * to decide whether bio and rq can be merged.
-+			 */
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfq_get_next_queue(bfqd);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
- /*
-  * If enough samples have been computed, return the current max budget
-  * stored in bfqd, which is dynamically updated according to the
-@@ -1488,61 +1802,6 @@ static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
- 	return rq;
- }
- 
--/* Must be called with the queue_lock held. */
--static int bfqq_process_refs(struct bfq_queue *bfqq)
--{
--	int process_refs, io_refs;
--
--	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
--	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
--	BUG_ON(process_refs < 0);
--	return process_refs;
--}
--
--static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
--{
--	int process_refs, new_process_refs;
--	struct bfq_queue *__bfqq;
--
--	/*
--	 * If there are no process references on the new_bfqq, then it is
--	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
--	 * may have dropped their last reference (not just their last process
--	 * reference).
--	 */
--	if (!bfqq_process_refs(new_bfqq))
--		return;
--
--	/* Avoid a circular list and skip interim queue merges. */
--	while ((__bfqq = new_bfqq->new_bfqq)) {
--		if (__bfqq == bfqq)
--			return;
--		new_bfqq = __bfqq;
--	}
--
--	process_refs = bfqq_process_refs(bfqq);
--	new_process_refs = bfqq_process_refs(new_bfqq);
--	/*
--	 * If the process for the bfqq has gone away, there is no
--	 * sense in merging the queues.
--	 */
--	if (process_refs == 0 || new_process_refs == 0)
--		return;
--
--	/*
--	 * Merge in the direction of the lesser amount of work.
--	 */
--	if (new_process_refs >= process_refs) {
--		bfqq->new_bfqq = new_bfqq;
--		atomic_add(process_refs, &new_bfqq->ref);
--	} else {
--		new_bfqq->new_bfqq = bfqq;
--		atomic_add(new_process_refs, &bfqq->ref);
--	}
--	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
--		new_bfqq->pid);
--}
--
- static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
- {
- 	struct bfq_entity *entity = &bfqq->entity;
-@@ -2269,7 +2528,7 @@ static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-  */
- static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- {
--	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct bfq_queue *bfqq;
- 	struct request *next_rq;
- 	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
- 
-@@ -2279,17 +2538,6 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 
- 	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
- 
--	/*
--         * If another queue has a request waiting within our mean seek
--         * distance, let it run. The expire code will check for close
--         * cooperators and put the close queue at the front of the
--         * service tree. If possible, merge the expiring queue with the
--         * new bfqq.
--         */
--        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
--        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
--                bfq_setup_merge(bfqq, new_bfqq);
--
- 	if (bfq_may_expire_for_budg_timeout(bfqq) &&
- 	    !timer_pending(&bfqd->idle_slice_timer) &&
- 	    !bfq_bfqq_must_idle(bfqq))
-@@ -2328,10 +2576,7 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 				bfq_clear_bfqq_wait_request(bfqq);
- 				del_timer(&bfqd->idle_slice_timer);
- 			}
--			if (new_bfqq == NULL)
--				goto keep_queue;
--			else
--				goto expire;
-+			goto keep_queue;
- 		}
- 	}
- 
-@@ -2340,40 +2585,30 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 	 * for a new request, or has requests waiting for a completion and
- 	 * may idle after their completion, then keep it anyway.
- 	 */
--	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
--	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+	if (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq))) {
- 		bfqq = NULL;
- 		goto keep_queue;
--	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
--		/*
--		 * Expiring the queue because there is a close cooperator,
--		 * cancel timer.
--		 */
--		bfq_clear_bfqq_wait_request(bfqq);
--		del_timer(&bfqd->idle_slice_timer);
- 	}
- 
- 	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
- expire:
- 	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
- new_queue:
--	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfqq = bfq_set_in_service_queue(bfqd);
- 	bfq_log(bfqd, "select_queue: new queue %d returned",
- 		bfqq != NULL ? bfqq->pid : 0);
- keep_queue:
- 	return bfqq;
- }
- 
--static void bfq_update_wr_data(struct bfq_data *bfqd,
--			       struct bfq_queue *bfqq)
-+static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
- {
--	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
--		struct bfq_entity *entity = &bfqq->entity;
--
-+	struct bfq_entity *entity = &bfqq->entity;
-+	if (bfqq->wr_coeff > 1) { /* queue is being weight-raised */
- 		bfq_log_bfqq(bfqd, bfqq,
- 			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
--			jiffies_to_msecs(jiffies -
--				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
- 			jiffies_to_msecs(bfqq->wr_cur_max_time),
- 			bfqq->wr_coeff,
- 			bfqq->entity.weight, bfqq->entity.orig_weight);
-@@ -2382,12 +2617,16 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 		       entity->orig_weight * bfqq->wr_coeff);
- 		if (entity->ioprio_changed)
- 			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+
- 		/*
- 		 * If the queue was activated in a burst, or
- 		 * too much time has elapsed from the beginning
--		 * of this weight-raising, then end weight raising.
-+		 * of this weight-raising period, or the queue has
-+		 * exceeded the acceptable number of cooperations,
-+		 * then end weight raising.
- 		 */
- 		if (bfq_bfqq_in_large_burst(bfqq) ||
-+		    bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh ||
- 		    time_is_before_jiffies(bfqq->last_wr_start_finish +
- 					   bfqq->wr_cur_max_time)) {
- 			bfqq->last_wr_start_finish = jiffies;
-@@ -2396,11 +2635,13 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 				     bfqq->last_wr_start_finish,
- 				     jiffies_to_msecs(bfqq->wr_cur_max_time));
- 			bfq_bfqq_end_wr(bfqq);
--			__bfq_entity_update_weight_prio(
--				bfq_entity_service_tree(entity),
--				entity);
- 		}
- 	}
-+	/* Update weight both if it must be raised and if it must be lowered */
-+	if ((entity->weight > entity->orig_weight) != (bfqq->wr_coeff > 1))
-+		__bfq_entity_update_weight_prio(
-+			bfq_entity_service_tree(entity),
-+			entity);
- }
- 
- /*
-@@ -2647,6 +2888,25 @@ static inline void bfq_init_icq(struct io_cq *icq)
- 	struct bfq_io_cq *bic = icq_to_bic(icq);
- 
- 	bic->ttime.last_end_request = jiffies;
-+	/*
-+	 * A newly created bic indicates that the process has just
-+	 * started doing I/O, and is probably mapping into memory its
-+	 * executable and libraries: it definitely needs weight raising.
-+	 * There is however the possibility that the process performs,
-+	 * for a while, I/O close to some other process. EQM intercepts
-+	 * this behavior and may merge the queue corresponding to the
-+	 * process  with some other queue, BEFORE the weight of the queue
-+	 * is raised. Merged queues are not weight-raised (they are assumed
-+	 * to belong to processes that benefit only from high throughput).
-+	 * If the merge is basically the consequence of an accident, then
-+	 * the queue will be split soon and will get back its old weight.
-+	 * It is then important to write down somewhere that this queue
-+	 * does need weight raising, even if it did not make it to get its
-+	 * weight raised before being merged. To this purpose, we overload
-+	 * the field raising_time_left and assign 1 to it, to mark the queue
-+	 * as needing weight raising.
-+	 */
-+	bic->wr_time_left = 1;
- }
- 
- static void bfq_exit_icq(struct io_cq *icq)
-@@ -2660,6 +2920,13 @@ static void bfq_exit_icq(struct io_cq *icq)
- 	}
- 
- 	if (bic->bfqq[BLK_RW_SYNC]) {
-+		/*
-+		 * If the bic is using a shared queue, put the reference
-+		 * taken on the io_context when the bic started using a
-+		 * shared bfq_queue.
-+		 */
-+		if (bfq_bfqq_coop(bic->bfqq[BLK_RW_SYNC]))
-+			put_io_context(icq->ioc);
- 		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
- 		bic->bfqq[BLK_RW_SYNC] = NULL;
- 	}
-@@ -2952,6 +3219,10 @@ static void bfq_update_idle_window(struct bfq_data *bfqd,
- 	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
- 		return;
- 
-+	/* Idle window just restored, statistics are meaningless. */
-+	if (bfq_bfqq_just_split(bfqq))
-+		return;
-+
- 	enable_idle = bfq_bfqq_idle_window(bfqq);
- 
- 	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-@@ -2999,6 +3270,7 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- 	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
- 	    !BFQQ_SEEKY(bfqq))
- 		bfq_update_idle_window(bfqd, bfqq, bic);
-+	bfq_clear_bfqq_just_split(bfqq);
- 
- 	bfq_log_bfqq(bfqd, bfqq,
- 		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-@@ -3059,12 +3331,47 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- static void bfq_insert_request(struct request_queue *q, struct request *rq)
- {
- 	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq), *new_bfqq;
- 
- 	assert_spin_locked(bfqd->queue->queue_lock);
- 
-+	/*
-+	 * An unplug may trigger a requeue of a request from the device
-+	 * driver: make sure we are in process context while trying to
-+	 * merge two bfq_queues.
-+	 */
-+	if (!in_interrupt()) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
-+		if (new_bfqq != NULL) {
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) != bfqq)
-+				new_bfqq = bic_to_bfqq(RQ_BIC(rq), 1);
-+			/*
-+			 * Release the request's reference to the old bfqq
-+			 * and make sure one is taken to the shared queue.
-+			 */
-+			new_bfqq->allocated[rq_data_dir(rq)]++;
-+			bfqq->allocated[rq_data_dir(rq)]--;
-+			atomic_inc(&new_bfqq->ref);
-+			bfq_put_queue(bfqq);
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) == bfqq)
-+				bfq_merge_bfqqs(bfqd, RQ_BIC(rq),
-+						bfqq, new_bfqq);
-+			rq->elv.priv[1] = new_bfqq;
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
- 	bfq_add_request(rq);
- 
-+	/*
-+	 * Here a newly-created bfq_queue has already started a weight-raising
-+	 * period: clear raising_time_left to prevent bfq_bfqq_save_state()
-+	 * from assigning it a full weight-raising period. See the detailed
-+	 * comments about this field in bfq_init_icq().
-+	 */
-+	if (bfqq->bic != NULL)
-+		bfqq->bic->wr_time_left = 0;
- 	rq->fifo_time = jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
- 	list_add_tail(&rq->queuelist, &bfqq->fifo);
- 
-@@ -3226,18 +3533,6 @@ static void bfq_put_request(struct request *rq)
- 	}
- }
- 
--static struct bfq_queue *
--bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
--		struct bfq_queue *bfqq)
--{
--	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
--		(long unsigned)bfqq->new_bfqq->pid);
--	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
--	bfq_mark_bfqq_coop(bfqq->new_bfqq);
--	bfq_put_queue(bfqq);
--	return bic_to_bfqq(bic, 1);
--}
--
- /*
-  * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-  * was the last process referring to said bfqq.
-@@ -3246,6 +3541,9 @@ static struct bfq_queue *
- bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
- {
- 	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+
-+	put_io_context(bic->icq.ioc);
-+
- 	if (bfqq_process_refs(bfqq) == 1) {
- 		bfqq->pid = current->pid;
- 		bfq_clear_bfqq_coop(bfqq);
-@@ -3274,6 +3572,7 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
- 	struct bfq_queue *bfqq;
- 	struct bfq_group *bfqg;
- 	unsigned long flags;
-+	bool split = false;
- 
- 	might_sleep_if(gfp_mask & __GFP_WAIT);
- 
-@@ -3291,25 +3590,26 @@ new_queue:
- 	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
- 		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
- 		bic_set_bfqq(bic, bfqq, is_sync);
-+		if (split && is_sync) {
-+			if ((bic->was_in_burst_list && bfqd->large_burst) ||
-+			    bic->saved_in_large_burst)
-+				bfq_mark_bfqq_in_large_burst(bfqq);
-+			else {
-+			    bfq_clear_bfqq_in_large_burst(bfqq);
-+			    if (bic->was_in_burst_list)
-+			       hlist_add_head(&bfqq->burst_list_node,
-+				              &bfqd->burst_list);
-+			}
-+		}
- 	} else {
--		/*
--		 * If the queue was seeky for too long, break it apart.
--		 */
-+		/* If the queue was seeky for too long, break it apart. */
- 		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
- 			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
- 			bfqq = bfq_split_bfqq(bic, bfqq);
-+			split = true;
- 			if (!bfqq)
- 				goto new_queue;
- 		}
--
--		/*
--		 * Check to see if this queue is scheduled to merge with
--		 * another closely cooperating queue. The merging of queues
--		 * happens here as it must be done in process context.
--		 * The reference on new_bfqq was taken in merge_bfqqs.
--		 */
--		if (bfqq->new_bfqq != NULL)
--			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
- 	}
- 
- 	bfqq->allocated[rw]++;
-@@ -3320,6 +3620,26 @@ new_queue:
- 	rq->elv.priv[0] = bic;
- 	rq->elv.priv[1] = bfqq;
- 
-+	/*
-+	 * If a bfq_queue has only one process reference, it is owned
-+	 * by only one bfq_io_cq: we can set the bic field of the
-+	 * bfq_queue to the address of that structure. Also, if the
-+	 * queue has just been split, mark a flag so that the
-+	 * information is available to the other scheduler hooks.
-+	 */
-+	if (likely(bfqq != &bfqd->oom_bfqq) && bfqq_process_refs(bfqq) == 1) {
-+		bfqq->bic = bic;
-+		if (split) {
-+			bfq_mark_bfqq_just_split(bfqq);
-+			/*
-+			 * If the queue has just been split from a shared
-+			 * queue, restore the idle window and the possible
-+			 * weight raising period.
-+			 */
-+			bfq_bfqq_resume_state(bfqq, bic);
-+		}
-+	}
-+
- 	spin_unlock_irqrestore(q->queue_lock, flags);
- 
- 	return 0;
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-index c343099..d0890c6 100644
---- a/block/bfq-sched.c
-+++ b/block/bfq-sched.c
-@@ -1085,34 +1085,6 @@ static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
- 	return bfqq;
- }
- 
--/*
-- * Forced extraction of the given queue.
-- */
--static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
--				      struct bfq_queue *bfqq)
--{
--	struct bfq_entity *entity;
--	struct bfq_sched_data *sd;
--
--	BUG_ON(bfqd->in_service_queue != NULL);
--
--	entity = &bfqq->entity;
--	/*
--	 * Bubble up extraction/update from the leaf to the root.
--	*/
--	for_each_entity(entity) {
--		sd = entity->sched_data;
--		bfq_update_budget(entity);
--		bfq_update_vtime(bfq_entity_service_tree(entity));
--		bfq_active_extract(bfq_entity_service_tree(entity), entity);
--		sd->in_service_entity = entity;
--		sd->next_in_service = NULL;
--		entity->service = 0;
--	}
--
--	return;
--}
--
- static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
- {
- 	if (bfqd->in_service_bic != NULL) {
-diff --git a/block/bfq.h b/block/bfq.h
-index dd1a5b1..3970ec8 100644
---- a/block/bfq.h
-+++ b/block/bfq.h
-@@ -218,18 +218,21 @@ struct bfq_group;
-  *                      idle @bfq_queue with no outstanding requests, then
-  *                      the task associated with the queue it is deemed as
-  *                      soft real-time (see the comments to the function
-- *                      bfq_bfqq_softrt_next_start()).
-+ *                      bfq_bfqq_softrt_next_start())
-  * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-  *                      idle to backlogged
-  * @service_from_backlogged: cumulative service received from the @bfq_queue
-  *                           since the last transition from idle to
-  *                           backlogged
-+ * @bic: pointer to the bfq_io_cq owning the bfq_queue, set to %NULL if the
-+ *	 queue is shared
-  *
-- * A bfq_queue is a leaf request queue; it can be associated with an io_context
-- * or more, if it is async or shared between cooperating processes. @cgroup
-- * holds a reference to the cgroup, to be sure that it does not disappear while
-- * a bfqq still references it (mostly to avoid races between request issuing and
-- * task migration followed by cgroup destruction).
-+ * A bfq_queue is a leaf request queue; it can be associated with an
-+ * io_context or more, if it  is  async or shared  between  cooperating
-+ * processes. @cgroup holds a reference to the cgroup, to be sure that it
-+ * does not disappear while a bfqq still references it (mostly to avoid
-+ * races between request issuing and task migration followed by cgroup
-+ * destruction).
-  * All the fields are protected by the queue lock of the containing bfqd.
-  */
- struct bfq_queue {
-@@ -269,6 +272,7 @@ struct bfq_queue {
- 	unsigned int requests_within_timer;
- 
- 	pid_t pid;
-+	struct bfq_io_cq *bic;
- 
- 	/* weight-raising fields */
- 	unsigned long wr_cur_max_time;
-@@ -298,12 +302,42 @@ struct bfq_ttime {
-  * @icq: associated io_cq structure
-  * @bfqq: array of two process queues, the sync and the async
-  * @ttime: associated @bfq_ttime struct
-+ * @wr_time_left: snapshot of the time left before weight raising ends
-+ *                for the sync queue associated to this process; this
-+ *		  snapshot is taken to remember this value while the weight
-+ *		  raising is suspended because the queue is merged with a
-+ *		  shared queue, and is used to set @raising_cur_max_time
-+ *		  when the queue is split from the shared queue and its
-+ *		  weight is raised again
-+ * @saved_idle_window: same purpose as the previous field for the idle
-+ *                     window
-+ * @saved_IO_bound: same purpose as the previous two fields for the I/O
-+ *                  bound classification of a queue
-+ * @saved_in_large_burst: same purpose as the previous fields for the
-+ *                        value of the field keeping the queue's belonging
-+ *                        to a large burst
-+ * @was_in_burst_list: true if the queue belonged to a burst list
-+ *                     before its merge with another cooperating queue
-+ * @cooperations: counter of consecutive successful queue merges underwent
-+ *                by any of the process' @bfq_queues
-+ * @failed_cooperations: counter of consecutive failed queue merges of any
-+ *                       of the process' @bfq_queues
-  */
- struct bfq_io_cq {
- 	struct io_cq icq; /* must be the first member */
- 	struct bfq_queue *bfqq[2];
- 	struct bfq_ttime ttime;
- 	int ioprio;
-+
-+	unsigned int wr_time_left;
-+	bool saved_idle_window;
-+	bool saved_IO_bound;
-+
-+	bool saved_in_large_burst;
-+	bool was_in_burst_list;
-+
-+	unsigned int cooperations;
-+	unsigned int failed_cooperations;
- };
- 
- enum bfq_device_speed {
-@@ -536,7 +570,7 @@ enum bfqq_state_flags {
- 	BFQ_BFQQ_FLAG_idle_window,	/* slice idling enabled */
- 	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
- 	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
--	BFQ_BFQQ_FLAG_IO_bound,         /*
-+	BFQ_BFQQ_FLAG_IO_bound,		/*
- 					 * bfqq has timed-out at least once
- 					 * having consumed at most 2/10 of
- 					 * its budget
-@@ -549,12 +583,13 @@ enum bfqq_state_flags {
- 					 * bfqq has proved to be slow and
- 					 * seeky until budget timeout
- 					 */
--	BFQ_BFQQ_FLAG_softrt_update,    /*
-+	BFQ_BFQQ_FLAG_softrt_update,	/*
- 					 * may need softrt-next-start
- 					 * update
- 					 */
- 	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
--	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be split */
-+	BFQ_BFQQ_FLAG_just_split,	/* queue has just been split */
- };
- 
- #define BFQ_BFQQ_FNS(name)						\
-@@ -583,6 +618,7 @@ BFQ_BFQQ_FNS(in_large_burst);
- BFQ_BFQQ_FNS(constantly_seeky);
- BFQ_BFQQ_FNS(coop);
- BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(just_split);
- BFQ_BFQQ_FNS(softrt_update);
- #undef BFQ_BFQQ_FNS
- 
--- 
-2.1.4
-
diff --git a/helpers/DATA/linux-lts-wily/deblob-check b/helpers/DATA/linux-lts-wily/deblob-check
deleted file mode 100644
index c6cee8235..000000000
--- a/helpers/DATA/linux-lts-wily/deblob-check
+++ /dev/null
@@ -1,8449 +0,0 @@
-#! /bin/sh
-
-# deblob-check version 2015-08-15 + 2015-09-22's r12444
-# Inspired in gNewSense's find-firmware script.
-# Written by Alexandre Oliva <lxoliva@fsfla.org>
-
-# Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer
-# versions.
-
-# Copyright 2008-2015 Alexandre Oliva <lxoliva@fsfla.org>
-#
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-
-# usage: deblob-check [-S] [-v] [-v] [-s S] [--reverse-patch] \
-#        [--use-...|--gen-flex] [-lDdBbCcXxPpFftVh?H] \
-#        *.tar* patch-* [-i prefix/] *.patch *.diff...
-
-# Look for and report too-long undocumented sequences of numbers
-# (generally blobs in disguise) in source files, as well as requests
-# for loading non-Free firmware.
-
-# The order of command line flags is significant.  Flags given out of
-# the order above won't be handled correctly, sorry.
-
-# -s --sensitivity: Specifies the number of consecutive integral or
-#		character constants that trigger the blob detector.
-#	        Must be followed by a blank and a number.
-
-#    --reverse-patch: Test the removed parts of a patch, rather than
-#		the added ones.
-
-#    --use-awk: Choose the internal GNU awk script for the bulk of the
-#		work.  This is the default option, if GNU awk is found.
-#		The awk interpreter is named gawk, unless AWK is set.
-
-#    --use-sed: Choose the internal GNU sed script for the bulk of the
-#		work.  This is the default option, if GNU awk is not
-#		found.
-
-#    --use-python: Choose the internal python script.  This is not
-#		recommended, because the regular expressions we use
-#		invoke exponential behavior in the python engine.
-
-#    --use-perl: Choose the internal perl script.  This is not
-#		recommended, because our regular expressions exceed
-#		some limits hard-coded into perl.
-
-#    --save-script-input: Save the input that would have been fed to
-#		any of the engines above.
-
-#    --gen-flex: Generate a flex input file with all known blob and
-#		false positive patterns.  It would have been a fast
-#		regular expression processor if only the flex program
-#		completed in reasonable time.
-
-
-# The default sensitivity is 32 constants.
-
-# The sensitivity, if present, must be the first option.  The action
-# selection, if present, must be the first argument, except for the
-# sensitivity and verbosity.
-
-# The default can be overridden with one of:
-
-# -l --list-blobs: list files that contain sequences that match the
-#		blob detector test and that are not known to be false
-#		positives.  This is the default option.
-
-# -d --deblob --mark-blobs: print the processed input, replacing
-#		sequences that match the blob detector test and that
-#		are NOT known to be false positives with
-#		/*(DEBLOBBED)*/.
-
-# -D --cat: print the processed input, as it would have been fed to
-#		the blob detector script.  Use -S to save the sed
-#		script used to process it, and search for `sedcat:' in
-#		comments to locate the relevant adaptation points.
-
-# -b --print-marked-blobs: like -d, but print only the matching
-#		sequences.
-
-# -B --print-blobs: like -b, but do not deblob the sequences.
-
-# -c --print-marked-blobs-with-context: like -b, but try to maximize
-#		the context around the blobs.  This maximization will
-#		sometimes disregard known false positives, if they
-#		happen to be contained within the extended match.
-#		This is probably an indication that the false positive
-#		matching rule could be improved.
-
-# -C --print-blobs-with-context: like -B, but try to maximize the
-#		context around the blobs.
-
-# -X --print-all-matches: print all blobs, be they known false
-#		positives or actual blobs.
-
-# -x --list-all-matches: list files that contain sequences that appear
-#		to be blobs, be they known false positives or not.
-
-# -p --mark-false-positives: print the processed input, replacing
-#		sequences that match the blob detector test, even those
-#		known to be false positives, with /*(DEBLOBBED)*/.
-
-# -P --list-false-positives: list files that contain false positives.
-
-# -f --print-marked-false-positives: like -p, but print only the
-#		matching sequences.
-
-# -F --print-false-positives: like -f, but do not deblob the sequences.
-
-# -t --test: run (very minimal) self-test.
-
-# -V --version: print a version number
-
-# -h -? -H --help: print short or long help message
-
-
-# debugging options:
-
-# -S --save-scripts: save scripts and temporary files.
-
-# -v --verbose: increase verbosity level, for internal debugging.  May
-#		be given at most twice.
-
-
-# file options:
-
-# --: Don't process command-line options any further.  All following
-#		arguments are taken as filenames.
-
-# -i --implied-prefix --prefix: prepend the given prefix to each filename
-#		listed after this option, when configuring false positives
-#		and negatives.
-
-# *.tar*: iterate over all files in the named tar file.
-
-# *.patch, patch-*, *.diff: Look for blobs in the [ +] parts of the
-# 		*patch, unless --reverse-patch is given, in which case
-# 		the [ -] parts will be used.
-
-# Anything else is assumed to be a source file.
-
-# *.gz | *.bz2 | *.xz | *.lz: Decompress automatically.
-
-
-# The exit status is only significant for the --list options: it will
-# be true if nothing was found, and false otherwise.
-
-: # Mark the end of the help message.
-
-# TODO:
-
-# - Improve handling of command-line arguments, so as to not make the
-# order relevant.
-
-# - Add an option for the user to feed their own false positive
-# patterns.
-
-# - Add support to recognize known blobs (or other non-Free
-# signatures, really), to speed up the scanning of files containing
-# blobs, and to avoid attempts to disguise blobs.
-
-# - Factor out the code in the various print_* and list_* parts of the
-# sed script, at least in the shell sources.  Make sure they're all
-# included and expanded in a saved --cat script though.
-
-# - Add support for file name tagging in patterns, such that blobs or
-# false positives are recognized only when handling the specific
-# filename, be it stand-alone, as part of a patch or a tarball.  This
-# should help avoid recognition of actual blobs as false positives
-# just because there's a symbol with a different name elsewhere.
-
-#   It is convenient that the patterns provided by the user to
-# recognize file names can be empty (for backward compatibility), but
-# this should ideally be phased out in favor of more precise matches.
-# It's important that files can be recognized with leading tarball or
-# patch names, that the filename used within the tarball contain
-# leading garbage, and even that a partial pathname be recognizable
-# (say recognize drivers/net/whatever.c when the input file is named
-# ../net/whatever.c).
-
-#   Rather than using regular expressions to recognize multiple files
-# it's convenient (but not quite essential) that filename patterns be
-# specifiable as regular expressions, rather than simple filenames,
-# but there are other ways around this.
-
-#   Maintaining begin/end markers in a stack-like fashion as part of
-# the processed stream, and using the names in them as (optional) part
-# of the recognition patterns, would enable us to do it.
-
-#   Introducing annotations next to the false positives (and recognized
-# blobs) as an early part of the process may speed things up and
-# enable fast processing, but how to introduce the annotations quickly
-# in the first place?  Given patterns such as
-
-#   \(\(file1\)\(.*\)\(pat1\)\|\(file2\)\(.*\)\(pat2\)\|...\)
-
-# how do we get sed to introduce a marker that contains file2 right
-# before or right after pat2, without turning a big efficient regexp
-# into a slowish sequence of s/// commands?
-
-# - Re-check and narrow false-positive patterns to make sure they
-# apply only to the relevant content.
-
-# - Scripting abilities, so as to be able to automate the removal of
-# source files or of blobs from source files in a tarball without
-# having to extract the entire tarball (as in tar --update/--delete)
-# would be nice.  Carrying over removed files automatically into
-# patches would also be great, and this sort of script would be
-# perfect to document what has been done to a tarball plus a set of
-# patches.  Something like deblob.script:
-#
-#   tarball linux-2.6.24.tar.bz2
-#   delete net/wireloss/freedom.c drivers/me/crazy.c
-#   deblob include/linux/slab-blob-kfree.h
-#   deconfig drivers/char/drm DRM_IS_BAD
-#
-#   patch patch-2.6.25-rc7.bz2
-#   delete arch/power/over/you.c
-
-# such that the deletes from an earlier file would carry over into the
-# subsequent ones, and new tarballs and patch files would be generated
-# with the libre- prefix in their basename, and the xdeltas between
-# the original files and the modified files would be minimal, and
-# redundant with this script and the input script while at that.
-
-# - Improve documentation of the code.
-
-# - Write a decent testsuite.
-
-# - Insert your idea here. :-)
-
-# Yeah, lots of stuff to do.  Want to help?
-
-# This makes it much faster, and mostly immune to non-ASCII stuff, as
-# long as a 8-bit-safe sed is used.  Probably a safe assumption these
-# days.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-rm="rm -f"
-
-for echo in 'echo' 'printf %s\n'; do
-  case `$echo '\nx'` in
-  '\nx') break;;
-  esac
-done
-case `$echo '\nx'` in
-'\nx') ;; *) echo Cannot find out what echo to use >&2; exit 1;;
-esac
-
-for echo_n in "echo -n" "printf %s"; do
-  case `$echo_n '\na'; $echo_n '\nb'` in
-  '\na\nb') break;;
-  esac
-done
-case `$echo_n a; $echo_n b` in
-'ab') ;; *) echo Cannot find out an echo -n equivalent to use >&2; exit 1;;
-esac
-
-case $1 in
---save-scripts | -S)
-  shift
-  rm="echo preserving"
-  ;;
-esac
-
-# Choose verbosity level for sed script debugging and performance
-# analysis.
-case $1 in
---verbose | -v)
-  shift
-  case $1 in
-  --verbose | -v)
-    shift
-    v="i\\
-:
-p
-i\\
-"
-    vp="2"
-    ;;
-  *)
-    v="P;i\\
-"
-    vp="1"
-    ;;
-  esac
-  ;;
-*)
-  v="# "
-  vp="0"
-  ;;
-esac
-
-sens=31 # 32 - 1
-case $1 in
---sensitivity | -s)
-  sens=$2;
-  shift 2 || exit 1
-
-  if test "$sens" -gt 0 2>/dev/null; then
-    :
-  else
-    echo invalid sensitivity: $sens >&2
-    exit 1
-  fi
-
-  sens=`expr $sens - 1`
-  ;;
-esac
-
-reverse_patch=false
-case $1 in
---reverse-patch)
-  reverse_patch=:
-  shift;
-  ;;
-esac
-
-prefix=/
-case $1 in
---implied-prefix | --prefix| -i)
-  prefix=$2
-  case $prefix in
-  /*/) ;;
-  */) prefix=/$prefix ;;
-  /*) prefix=$prefix/ ;;
-  *) prefix=/$prefix/ ;;
-  esac
-  shift 2 || exit 1
-  ;;
-esac
-
-test_mode=false
-
-name=deblob-check
-
-set_eqscript_main () {
-  $set_main_cmd "$@"
-}
-
-set_eqscript_cmd () {
-  set_eqscript_main "list_blob"
-}
-
-set_sed_cmd () {
-  set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-}
-
-set_flex_cmd () {
-  set_flex_main
-}
-
-set_save_script_input_cmd () {
-  set_save_script_input_main
-}
-
-set_cmd=set_eqscript_cmd
-if (${PYTHON-python} --version) > /dev/null 2>&1; then
-  # Python will exhibit exponential behavior processing some regular
-  # expressions, but we may have already fixed them all.  (see
-  # http://swtch.com/~rsc/regexp/regexp1.html for details)
-  set_main_cmd=set_python_main
-elif (${AWK-gawk} --re-interval --version) > /dev/null 2>&1; then
-  # GNU awk works fine, but it requires --re-interval to accept regexp
-  # ranges, which we rely on to match blobs.  We could expand the blob
-  # on our own, but, yuck.
-  set_main_cmd=set_awk_main
-elif (${PERL-false} --version) > /dev/null 2>&1; then
-  # Don't choose perl by default.  Besides the potential for
-  # exponential behavior, we exceed some internal recursion limits.
-  set_main_cmd=set_perl_main
-else
-  # Sed takes GBs of RAM to compile all the huge regexps in the sed
-  # script we generate with all known false positives and blobs in
-  # Linux.  However, it is somewhat faster than GNU awk and even
-  # python for long runs.
-  # Try it: deblob-check --use-sed linux-2.6.32.tar.bz2
-  set_cmd=set_sed_cmd
-fi
-
-case $1 in
---use-python)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_python_main;
-  ;;
-
---use-perl)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_perl_main;
-  ;;
-
---use-awk)
-  shift;
-  set_cmd=set_eqscript_cmd;
-  set_main_cmd=set_awk_main;
-  ;;
-
---use-sed)
-  shift;
-  set_cmd=set_sed_cmd;
-  ;;
-
---gen-flex)
-  shift;
-  set_cmd=set_flex_cmd;
-  ;;
-
---save-script-input)
-  shift;
-  set_cmd=set_save_script_input_cmd;
-  ;;
-esac
-
-case $1 in
---version | -V)
-  ${SED-sed} -e '/^# '$name' version /,/^# Written by/ { s/^# //; p; }; d' < $0
-  exit 0
-  ;;
-
--\? | -h)
-  ${SED-sed} -n -e '/^# usage:/,/# -h/ { /^# -/,/^$/{s/^# \(-.*\):.*/\1/p; d; }; s/^\(# \?\)\?//p; }' < $0 &&
-  echo
-  echo "run \`$name --help | more' for full usage"
-  exit 0
-  ;;
-
---help | -H)
-  ${SED-sed} -n -e '/^# '$name' version /,/^[^#]/ s/^\(# \?\)\?//p' < $0
-  exit 0
-  ;;
-
---test | -t)
-  test_mode=:
-  ;;
-
---mark-false-positives | -p)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_both" "p" "b list_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = without_falsepos"
-  }
-  ;;
-
---print-marked-false-positives | -f)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_matches" "" "b print_marked_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_falsepos = print_falsepos"
-  }
-  ;;
-
---print-false-positives | -F)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_matches" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_falsepos"
-  }
-  ;;
-
---deblob | --mark-blobs | -d)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b list_blobs" "p" "p"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---cat | -D)
-  shift;
-  set_sed_cmd () {
-    set_sed_main \
-      "# sedcat: Actual blob detected, but there may be false positives." \
-      "# sedcat: No blob whatsoever found." \
-      "# sedcat: False positives found." \
-      "p
-d
-# sedcat: Just print stuff, remove this line to run the actual script."
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos = print_nomatch"
-  }
-  ;;
-
---print-marked-blobs | -b)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs | -B)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_blobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob"
-  }
-  ;;
-
---print-marked-blobs-with-context | -c)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_marked_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = replace_blob = print_blob"
-  }
-  ;;
-
---print-blobs-with-context | -C)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_cblobs"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "with_context = print_blob"
-  }
-  ;;
-
---list-false-positives | -P)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_falsepos"
-  }
-  ;;
-
---list-all-matches | -x)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1" "" "
-i\\
-$file\\
-/*(DEBLOB-\\
-ERROR)*/
-q 1"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "list_blob = list_falsepos"
-  }
-  ;;
-
---print-all-matches | -X)
-  shift;
-  set_sed_cmd () {
-    set_sed_main "b print_both" "" "b print_matches"
-  }
-  set_eqscript_cmd () {
-    set_eqscript_main "print_blob = print_falsepos"
-  }
-  ;;
-
-*)
-  case $1 in
-  --list-blobs | -l) shift;;
-  esac
-  case $1 in
-  -- | --implied-prefix | --prefix | -i) ;;
-  -*)
-    if test ! -f "$1"; then
-      echo "$name: \`$1' given too late or out of the proper sequence." >&2
-      echo "$name: The order of arguments is significant, see the usage." >&2
-      exit 1
-    fi
-    ;;
-  esac
-  ;;
-
-esac
-
-case $1 in
---)
-  sawdashdash=t
-  shift;;
-esac
-
-if $test_mode; then
- allpass=:
- for tool in awk perl python sed; do
-  echo testing $tool...
-
-  targs="-s 4 -i /deblob-check-testsuite/ --use-$tool"
-
-  pass=:
-
-
-  # Exercise some nasty inputs to see that we
-  # recognize them as blobs with full context.
-  test="positive context"
-  for string in \
-    "1,2,3,4" \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-    ".long 1,2
-     .long \$3,\$4" \
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-    "= {
-blob(
-)
-accept(
-)
-1, 2, 3, 4
-}" \
-  ; do
-    case `echo "$string" | $0 $targs -C` in
-    "::: - :::
-$string") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we do not recognize these as blobs.
-  test=negative
-  for string in \
-    "#define X { 1, 2 }
-#define Y { 3, 4 }" \
-    " 0x00, 0x00, 0x00 " \
-    "accept(1, 2, 3,
-4, 5, 6)" \
-  ; do
-    case `echo "$string" | $0 $targs` in
-    "") ;;
-    *) echo "failed $test test for:
-$string" >&2
-       pass=false;;
-    esac
-  done
-
-  # Make sure we print only the lines with blobs.
-  test="only blob"
-  odd=:
-  for string in \
-    "= {
-1, 0x2, 03, L'\x4'
-}" \
-	"1, 0x2, 03, L'\x4'" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long 1,2
-     .long \$3,\$4" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { 1, 2, \\
-		 3, 4, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   0x4c00c000, 0x00000000, 0x00060000, 0x00000000," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6, 7, 8;
-9, 10, 11" \
-      "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-::: - :::
-1, 2, 3, 4; 5, 6, 7, 8;" \
-\
-    "= {
-blob()
-accept()
-1, 2, 3, 4
-}" \
-	"blob()
-::: - :::
-1, 2, 3, 4" \
-\
-    "a blobeol y
-x" \
-	"a blobeol y
-x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -B` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # Make sure we deblob only the blobs.
-  test="deblobs"
-  odd=:
-  for string in \
-    "= { 1, 0x2, 03, L'\x4' }" \
-	"= { /*(DEBLOBBED)*/' }" \
-\
-    "=
-{
-  '\\x1', '\\002'
-  ,
-  {
-    { \"\\x3\", },
-    \"\\004\"
-  },
-};" \
-	"  '\\x/*(DEBLOBBED)*/\"" \
-\
-    ".long 1,2
-     .long \$3,\$4" \
-	".long /*(DEBLOBBED)*/" \
-\
-    "#define X { 1, 2, \\
-		 3, 4, /* comment */ \\
-	       }" \
-	"#define X { /*(DEBLOBBED)*/, /* comment */ \\" \
-\
-    "= {
-/*
- * multi-line
- * comment
- */
- {
-   0x4c00c000, 0x00000000, 0x00060000, 0x00000000,
- },
-}" \
-	"   /*(DEBLOBBED)*/," \
-\
-    "MODULE_FIRMWARE(x);
-MODULE_FIRMWARE(y);
-1, 2, 3, 4; 5, 6; 7, 8, 9, 10;
-9, 10, 11" \
-      "/*(DEBLOBBED)*/
-::: - :::
-/*(DEBLOBBED)*/; 5, 6; /*(DEBLOBBED)*/;" \
-\
-    "= {
-accept() blob() x blob(
-) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "= {
-accept() blob() x blob(
-w) y
-}" \
-	"accept() /*(DEBLOBBED)*/ x /*(DEBLOBBED)*/ y" \
-\
-    "a blobeol y
-x" \
-	"a /*(DEBLOBBED)*/x" \
-\
-  ; do
-    if $odd; then
-      input=$string odd=false
-      continue
-    fi
-    case `echo "$input" | $0 $targs -b` in
-    "::: - :::
-$string") ;;
-    *)
-      echo "failed $test test for:
-$input" >&2
-      pass=false
-      ;;
-    esac
-    odd=:
-  done
-  $odd || { echo "internal testsuite failure in $test" >&2; }
-
-  # How did we do?
-  if $pass; then
-    echo success for $tool
-  else
-    allpass=$pass
-  fi
- done
- $allpass
- exit
-fi
-
-# Call addx as needed to set up more patterns to be recognized as
-# false positives.  Takes the input filename in $1.
-
-set_except () {
-  blob "$blobseq"
-  # We leave out the initial and final letters of request_firmware so
-  # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
-  blobna 'equest_firmwar'
-  blobna 'equest_ihex_firmwar'
-  blobna 'MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\([ 	\n]*MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\)*'
-  blobna 'DEFAULT_FIRMWARE'
-  blobna '\([.]\|->\)firmware[ 	\n]*=[^=]'
-  blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\|dlmem\|cld\)[\\]\?["]'
-  # Ideally we'd whitelist URLs that don't recommend non-Free
-  # Software, but there are just too many URLs in Linux, and most are
-  # fine, so we just blacklist when we find undesirable URLs.
-  # Please report if you find any inappropriate URL in Linux-libre
-  # deblobbed documentation, sources or run-time log messages.
-  # blobna '\(f\|ht\)tp:[/]\([/]\+[^/ \n ]\+\)\+'
-
-  case $prefix$1 in
-  */*linux*.tar* | */*kernel*.tar* | */*linux-*.*/*)
-    # false alarms, contain source
-    # drivers/net/wan/wanxlfw.inc_shipped -> wanxlfw.S
-    accept 'static[ ]u8[ ]firmware\[\]=[{][\n]0x60,\(0x00,\)*0x16,\(0x00,\)*\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*[\n]0x23,0xFC,0x00,0x00,0x00,0x01,0xFF,0xF9,0x00,0xD4,0x61,0x00,0x06,0x74,0x33,0xFC,\([\n]\(0x[0-9A-F][0-9A-F],\)*\)*0x00[\n][}][;]'
-    # drivers/usb/serial/xircom_pgs_fw.h -> xircom_pgs.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]xircom_pgs_firmware\[\][ ]='
-    # drivers/usb/serial/keyspan_pda_fw_h -> keyspan_pda.S
-    initnc 'static[ ]const[ ]struct[ ]ezusb_hex_record[ ]keyspan_pda_firmware\[\][ ]='
-    # arch/m68k/ifpsp060/*.sa -> src/*.s
-    accept '[	]\.long[	]0x60ff0000,0x02360000,0x60ff0000,0x16260000[\n]'"$sepx$blobpat*"
-    accept '[	]\.long[	]0x60ff0000,0x17400000,0x60ff0000,0x15f40000[\n]'"$sepx$blobpat*"
-    # arch/powerpc/platforms/cell/spufs/spu_save_dump.h_shipped -> spu_save.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_save_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped -> spu_restore.c
-    initnc 'static[ ]unsigned[ ]int[ ]spu_restore_code\[\][ ][ ]__attribute__[(][(]__aligned__[(]128[)][)][)][ ]='
-    # drivers/net/ixp2000/ixp2400_tx.ucode -> ixp2400_tx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    # drivers/net/ixp2000/ixp2400_rx.ucode -> ixp2400_rx.uc
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-
-
-    # checked:
-
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    accept '__clz_tab:[\n][	]\.byte[	]0\(,[0-5]\)\+'"$sepx$blobpat*" arch/sparc/lib/divdi3.S
-    accept 'PITBL:[\n][ ][ ]\.long[ ][ ]0xC0040000,0xC90FDAA2,'"$blobpat*" arch/sparc/lib/divdi3.S
-    accept '\(0x[0F][0F],\)\+\\[\n]\(\(0x[0F][0F],\)\+\\[\n]\)*\(0x[0F][0F],\)\+0x00' arch/m68k/mac/mac_penguin.S
-    accept '\.lowcase:[\n][	]\.byte[ ]0x00\(,0x0[1-7]\)\+'"$sepx$blobpat*"'$' arch/s390/kernel/head.S
-    accept '_zb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]0\(,[123],0\)\+,4'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '_sb_findmap:[\n][ ][ ][ ][ ][ ][ ][ ][ ][ ]\.byte[ ][ ]8\(,0,[123]\)\+,0'"$sepx$blobpat*"'$' arch/s390/kernel/bitmap.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]cpu_745x\[2\]\[16\][ ]=' arch/ppc/platforms/ev64260.c
-    initnc 'const[ ]unsigned[ ]char[ ]__flsm1_tab\[256\][ ]=' arch/alpha/lib/fls.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    initc '[	]static[ ]int[ ][ ][ ][ ][ ][ ]init_values_b\[\][ ]=' sound/oss/ad1848.c
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set2_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'drivers/usb/serial/\(keyspan_pda\|xircom_pgs\).S'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix\.txt|Documentation/serial/specialix\.txt'
-    accept '[ ][ ][ ][ ][ ][ ][ ][ ][ ]:[ ][ ][ ]3600000[ ][ ][ ]3400000[ ][ ][ ]3200000[ ][ ][ ]3000000[ ][ ][ ]2800000[ ]' Documentation/cpu-freq/cpufreq-stats.txt
-    accept '00[ ]00[\n]64[ ]01[\n]8e[ ]0b[\n][\n][0-9a-f \n]*fe[ ]fe' 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0f[ ]00[ ]08[ ]08[ ]64[ ]00[ ]0a[ ]00[ ]-[ ]id[ ]0[\n]'"$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept 'default[ ]nvram[ ]data:'"$sepx$blobpat*" 'Documentation/scsi/\(sym\|ncr\)53c8xx_2.txt'
-    accept '0x0458[ ][ ][ ][ ][ ]0x7025[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    accept '[ ][ ][(]gdb[)][ ]x[/]100x[ ][$]25[\n][ ][ ]0x507d2434:[ ][ ][ ][ ][ ]0x507d2434[ ][ ][ ][ ][ ][ ]0x00000000[ ][ ][ ][ ][ ][ ]0x08048000[ ][ ][ ][ ][ ][ ]0x080a4f8c'"$sepx$blobpat*" Documentation/uml/UserModeLinux-HOWTO.txt
-    accept '[ ][ ][ ][ ][ ][ ]1[ ][ ]0[ ][ ]0[ ][ ]0[ ][ ]0x308'"$sepx$blobpat*" Documentation/isdn/README.inc
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$' Documentation/sched-stats.txt
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync.c|net/sctp/sm_make_chunk.c|include/linux/scpt.h'
-    accept '[ ][*][ ][ ]1[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]1[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0[ ]0' arch/x86/lguest/boot.c
-    ocomment '[	][/][*][ ]Configure[ ]the[ ]PCI[ ]bus[ ]bursts[ ]and[ ]FIFO[ ]thresholds.' drivers/net/fealnx.c
-    ocomment '[/][*][ ]the[ ]original[ ]LUT[ ]values[ ]from[ ]Alex[ ]van[ ]Kaam[ ]<darkside@chello\.nl>' drivers/hwmon/via686a.c
-    initc 'static[ ]const[ ]unsigned[ ]char[ ]init\[\][ ]=[ ][{][^;]*MODE=0[ ][;].*SAA_7114_NTSC_HSYNC_START' drivers/media/video/saa7114.c
-
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    # initnc '[ 	]*\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ \n	]*=[ ][{"]' 'crypto/\(tcrypt\|testmgr\).h'
-
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/delkin_cb\.c\|drivers/ide/pci/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]u8[ ]tas3004_treble_table\[\][ ]=' sound/aoa/codecs/tas-basstreble.h
-
-    # This file contains firmwares that we deblob with high
-    # sensitivity, so make sure the sequences of numbers that are not
-    # blobs are not deblobbed.  FIXME: we should have patterns to
-    # recognize the blobs instead.
-    defsnc '[	]static[ ]const[ ]u32[ ]test_pat\[4\]\[6\][ ]=' drivers/net/tg3.c
-    accept "[	][}]\\(,\\?[ ]mem_tbl_5\\(70x\\|705\\|755\\|906\\)\\[\\][ ]=[ ][{]$sepx$blobpat*$sepx[}]\\)*[;]" drivers/net/tg3.c
-
-    # end of generic checked expressions.
-    # version-specific checked bits start here
-
-    # removed in 2.6.28
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    # removed in 2.6.24
-    accept "[ ]Psize[ ][ ][ ][ ]Ipps[ ][ ][ ][ ][ ][ ][ ]Tput[ ][ ][ ][ ][ ]Rxint[ ][ ][ ][ ][ ]Txint[ ][ ][ ][ ]Done[ ][ ][ ][ ][ ]Ndone[\\n][ ]---------------------------------------------------------------\\([\\n][ 0-9]\\+\\)\\+"'$'
-    initnc 'static[ ]u_short[ ]ataplain_map\[NR_KEYS\][ ]__initdata[ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]char[ ]invert5\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]alpa2target\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]target2alpa\[\][ ]='
-    oprepline '#define[ ]INIT_THREAD[ ][{0},]\+[ 	]*\\[\n][ 	]*[{0},]\+'
-    initnc 'static[ ]uint[ ]tas300\(1c\|4\)_\(master\|mixer\|treble\|bass\)_tab\[\]='
-    initnc 'static[ ]short[ ]dmasound_[au]law2dma16\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]DACVolTable\[101\][ ]='
-
-    # removed in 2.6.23
-    initnc 'static[ ]const[ ]UQItype[ ]__clz_tab\[\][ ]=' arch/arm26/lib/udivdi3.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]scale\[101\][ ]=' sound/oss/opl3sa2.c
-    initnc '[}][ ]syncs\[\][ ]=' drivers/scsi/53c7xx.c
-    initnc 'genoa_md:'"$sepx$blobpat*"'[\n][	]\.ascii[	]["]Genoa["]' arch/i386/boot/video.S
-
-    # removed in 2.6.22
-    initnc 'Vendor[ ]ID[ ][ ]Product[ ]ID[\n]-\+[ ][ ]-\+[\n]'"$blobpat*" Documentation/video4linux/sn9c102.txt
-    defsnc 'static[ ]short[ ][au]law2dma16\[\]' arch/ppc/8xx_io/cs4218_tdm.c
-    defsnc '[	]static[ ]const[ ]char[ ]minimal_ascii_table\[\]' drivers/ieee1394/csr1212.c
-    defsnc 'static[ ]u16[ ]key_map[ ]\[256\][ ]=' drivers/media/dvb/ttpci/av7110_ir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]gf64_inv\[64\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]short[ ]err_pos_lut\[4096\][ ]=' drivers/mtd/nand/cafe_ecc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]testdata\[TESTDATA_LEN\][ ]=' fs/jffs2/comprtest.c
-
-    # added in 2.6.25
-    accept "%canned_values[ ]=[ ][(][\\n][	]\\([0-9]\\+[ ]=>[ ]\\[[ 	\\n]\\+\\(\\([0-9]\\+\\|\\'0x[0-9a-f]\\+\\'\\),[ 	\\n]*\\)*\\]\\(,[ ]\\|[\\n]\\)\\)*[)][;]"
-
-    # from 2.6.25-rc* patches
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]=' drivers/net/wireless/ath/ath5k/rfbuffer.h
-
-    # new in 2.6.26
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf24\(13\|25\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-
-    # new in 2.6.27
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca561\|rev72a\)_init_data3\?\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]\(__\)\?u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_\(agc\|ofdm\|power_cck\(_ch14\)\?\)\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' Documentation/bt8xxgpio.txt
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]\(UINT32\|u32\)[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_b\[\][ ]=' drivers/net/wireless/rt2x00/rt2400pci.c
-
-    # request_firmware matches for 2.6.28
-    accept 'D:[ ]Firmware[ ]loader[ ][(]request_firmware[)]' CREDITS
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept 'This[ ]driver[ ]requires[ ]a[ ]patch[ ]for[ ]firmware_class[^\n]*[\n]request_firmware_nowait[ ]function\.' Documentation/dell_rbu.txt
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept 'Still,[ ]there[ ]are[ ]kernel[ ]threads[ ]that[ ]may[ ]want.*For[ ]example,[ ]if[ ]request_.*_firmware[(][)][ ]will[ ]fail[ ]regardless' Documentation/power/freezing-of-tasks.txt
-    accept 'Also,[ ]there[ ]may[ ]be[ ]some[ ]operations,.*calling[ ]request_firmware[(][)][ ]from[ ]their[ ].resume[(][)][ ]routines' Documentation/power/notifiers.txt
-    accept 'There[ ]is[ ]an[ ]USB[ ]interface[ ]for[ ]downloading[/]uploading.*request_firmware[ ]interface\.' Documentation/video4linux/si470x.txt
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    accept 'config[ ]FIRMWARE_IN_KERNEL.*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware:[ ]-[ ]send[ ]firmware[ ][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[/][*][*][\n][ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[^{]*[\n][{]\([\n]\+[^\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][	]return[ ]-EINVAL[;][\n][}]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-
-    accept 'static[ ]inline[ ]int[ ]request_ihex_firmware\?[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' include/linux/ihex.h
-    ocomment '[/][*][ ]Optional[ ]firmware\([^\n]*[\n][ ][*]\)*[^\n]*[ ]MODULE_FIRMWARE[(][)]'
-    oprepline '#define[ ]MODULE_FIRMWARE[(]_firmware[)]' include/linux/module.h
-    accept '[ ][*][ ]Sample[ ]code[ ]on[ ]how[ ]to[ ]use[ ]request_firmware[(][)][ ]from[ ]drivers\.' samples/firmware_class/firmware_sample_driver.c
-    accept '[	]\(retval\|error\)[ ]=[ ]request_firmware\(_nowait\)\?[(][^;]*["]sample_driver_fw["],[^;]*[)][;]' samples/firmware_class/firmware_sample_driver.c
-    ocomment '[	][/][*][ ]request_firmware[ ]blocks[ ]until[ ]userspace[ ]finished' samples/firmware_class/firmware_sample_driver.c
-    accept '[	][	][ 	]*["][ ]request_firmware_nowait[ ]failed' samples/firmware_class/firmware_sample_driver.c
-
-    # We used to remove these in early versions of Linux-libre.
-    # They're now believed to be mere initialization data, rather than
-    # code disguised as such, and they're not long enough so as to
-    # render the software non-Free.
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\|IPA_PDU_HEADER\|\(READ\|WRITE\)_CCW\)\[\][ ]=' drivers/net/qeth_core_mpc.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]\(sync\|magic[0-3]\)_data\[\][ ]=' arch/sh/boards/mach-migor/lcd_qvga.c
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ov772x_magic\[\][ ]=' arch/sh/boards/mach-migor/setup.c
-    defsnc 'static[ ]struct[ ]chips_init_reg[ ]chips_init_[sgacfx]r\[\][ ]=' 'drivers/video/\(asiliant\|chips\)fb.c'
-
-    # This one is quite suspicious, but it's small enough (64 bytes
-    # total) that it's believable that it could be actual source code.
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-
-    # Hunting down non-Free firmware-loading code and instructions.
-    # Firmware names are to be caught anywhere.
-
-    # 2.6.26 but not later
-
-    blobname 'atmsar1[12]\.\(x\|start\|regions\|data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|ambassador\.c\)'
-    blob '#\(define\|include\)[ ]UCODE2\?[(][^\n]*' drivers/atm/ambassador.c
-    blob 'static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]' drivers/atm/ambassador.c
-    blob '\(#\(ifdef[ ]AMB_NEW_MICROCODE\|else\|endif\)[\n]#\(define\|include\)[ ]UCODE2\?[(][^\n]*[\n]\)\+\([\n]*static[ ]\(u32\|region\)[ ]__devinitdata[ ]ucode_\(start\|\(regions\|data\)\[\]\)[ ]=[^;]*[;]\)*' drivers/atm/ambassador.c
-
-    blobname '\(pca\|sba\)200e\(_ecd\)\?\.\(data\|bin[12]\?\)' 'drivers/atm/\(Makefile\|fore200e\(_mkfirm\)\?\.c\)'
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*PCA-200E[ ]firmware[ ][*][/]' drivers/atm/fore200e_mkfirm.c
-    blobna '_fore200e_\(pca\|sba\)_fw_\(data\|size\)' drivers/atm/fore200e.c
-    blob '#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\([\n]\+#ifdef[ ]CONFIG_ATM_FORE200E_\(PCA\|SBA\)\([\n]extern[ ]const[ ]unsigned[ ]\(char\|int\)[ ]*_fore200e_\(pca\|sba\)_fw_\(data\[\]\|size\)[;]\)\+[\n]#endif\)*' drivers/atm/fore200e.c
-
-    # 2.6.27 but not later
-
-    blob 'cas_saturn_patch_t[ ]cas_saturn_patch\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/cassini.h
-    accept '[	][ ][ ]firmware[ ]files[ ]--[ ]the[ ]same[ ]names[ ]which[ ]appear[ ]in[ ]MODULE_FIRMWARE[(][)]' drivers/base/Kconfig
-
-    # 2.6.28 or earlier
-
-    blobname 'atmsar11\.fw' drivers/atm/ambassador.c
-
-    blob '\(#ifdef[ ]__\(LITTLE\|BIG\)_ENDIAN[\n]\)\?#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\([\n]#else[\n]#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\)*\([\n]#endif\)\?' drivers/atm/fore200e.c
-    blobna 'sprintf[(][^;]*fore200[^;]*FW_EXT[^;]*[)][;]' drivers/atm/fore200e.c
-    blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]\?' drivers/atm/fore200e.c
-    blobna 'The[ ]supplied[ ]firmware[ ]images.*https\?:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
-
-    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[ ]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]\+[}]\)\([\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]*\)*[^\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]*[\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]_\(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}][^\n]*\)*cp_microcode[^\n]*\([\n]\+[^\n}][^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    blobna 'Please[ ]use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
-    blob 'To[ ]extract[ ]the[ ]firmware[^\n]*Opera[ ]DVB-S1[ ]USB-Box.*[/]lib[/]firmware[/][ ]\.' Documentation/dvb/opera-firmware.txt
-    blobname '\(dvb-usb-opera[^\n]*\.fw\|2830S[^\n]*2\.sys\)' Documentation/dvb/opera-firmware.txt
-    blob 'Getting[ ]the[ ]Firmware\([\n][^\n]\+\)*' Documentation/dvb/ttusb-dec.txt
-
-    blob '[/][*][\n 	]*File[ ]automatically[ ]generated[ ]by[ ]createinit\.py[ ]using[ ]data[\n 	]*extracted[ ]from[ ]AF05BDA\.sys.*[}][;]' drivers/media/dvb/dvb-usb/af9005-script.h
-    blob '#include[ ]["]af9005-script\.h["]' drivers/media/dvb/dvb-usb/af9005-fe.c
-    blobna '[\n][	]scriptlen[ ]=[ ]sizeof[(]script[)][^;]*[;][\n][	]for[^{]*scriptlen[^{]*[{][^}]*[^\n	}]' drivers/media/dvb/dvb-usb/af9005-fe.c
-
-    accept 'struct[ ]\(sp8870\|tda1004x\)_config[\n][{][^}]*[(][*]request_firmware[)][^}]*[\n][}][;]' 'drivers/media/dvb/frontends/\(sp8870\|tda1004x\)\.h'
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*get_dvb_firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n]\(#define[ ]\(\([^\n 	]*_DEFAULT\|NONFREE\)_FIRMWARE\|["][^"]*["]\)[ ]\([^\n]\|[\\][\n]\)*\|[/][*][(]DEBLOBBED[)][*][/]\)\)*' 'drivers/media/dvb/frontends/\(nxt200x\|or51211\|sp887[0x]\|tda1004[8x]\)\.c'
-    blobname 'dvb-fe-sp8870\.fw' drivers/media/dvb/frontends/sp8870.c
-    blobname 'dvb-fe-tda1004[56]\.fw' drivers/media/dvb/frontends/tda1004x.c
-
-    # This bootcode is actually Free Software under GPLv2, but since it's
-    # being distributed without source code, we're taking it out.
-    blob 'static[ ]u8[ ]bootcode\[\][ ]=[ ][{][^}]*[}][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    blobname 'dvb-ttpci-01\.fw' drivers/media/dvb/ttpci/av7110.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-
-    blobname 'ttusb-budget[/]dspbootcode\.bin' drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-
-    blobname 'cpia2[/]stv0672_vp4\.bin' drivers/media/video/cpia2/cpia2_core.c
-
-    blobname 'dabusb[/]\(firmware\.fw\|bitstream\.bin\)' drivers/media/video/dabusb.c
-
-    blob 'static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\([\n]static[ ]u32[ ]tigon2\?Fw\(Text\|Rodata\|Data\)\[[(]MAX_\(TEXT\|RODATA\|DATA\)_LEN[/]4[)][ ][+][ ]1\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]\)*' drivers/net/acenic_firwmare.h
-    blob '#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\([\n]#define[ ]tigon2\?Fw[^ ]*\(Addr\|Len\)[ ]0x[^\n]*\)\+' drivers/net/acenic_firmware.h
-    blob '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Do[ ]not[ ]try[ ]to[ ]clear[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n][	]\)\?ace_clear[^;]*[;][\n]\([^}]*[{][^}]*ace_copy[^}]*tigon2\?Fw[^}]*[}]\)*[\n]\+[	]return[ ]0[;][\n][}]' drivers/net/acenic.c
-    blob 'if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\([\n][	]if[ ][(]\(ACE_IS_TIGON_I[(]ap[)]\|ap->version[ ]==[ ]2\)[)][\n][	][	]writel[(]tigon2\?FwStartAddr,[ ][&]regs->Pc[)][;]\)*' drivers/net/acenic.c
-
-    blob '#include[ ]["]starfire_firmware\.h["]' drivers/net/starfire.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Load[ ]Rx[/]Tx[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\([\n][	]for[ ][(][^)]*FIRMWARE_[RT]X_SIZE[^)]*[)][\n][	][	]writel[^;]*firmware_[rt]x[^;]*[;]\)\+' drivers/net/starfire.c
-
-    blob 'static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]\(u8\|const[ ]u32\|struct[ ]fw_info\)[ ]bnx2_\(\(COM\|CP\|[RT]XP\|TPAT\)_b0[69]Fw\(Text\|Data\|Rodata\)\|\(xi_\)\?rv2p_proc[12]\|\(com\|cp\|[rt]xp\|tpat\)_fw_0[69]\)\(\[[^]};]*\]\)*[ ]=[ ][{][^}]*[}][;]\)*' 'drivers/net/bnx2_fw2\?.h'
-    blob '#include[ ]["]bnx2_fw\.h["][\n][\n]*#include[ ]["]bnx2_fw2\.h["]' drivers/net/bnx2.c
-    blob 'static[ ]void[\n]load_rv2p_fw[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-    blob 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/bnx2.c
-
-    # init_data_e1h? might actually be just data, but it doesn't
-    # really matter.
-    blob 'static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]\(init\?\|[tucx]sem_\(int_table\|pram\)\)_data_e1h\?\[\][ ]=[ ][{][^}]*[}][;]\)*' drivers/net/bnx2x_init_values.h
-    blob 'static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\([\n][\n]*static[ ]\(void[ ]\|const[ ]u32[ ][*]\)bnx2x_\(sel_blob\|init_wr_wb\|init_block\)[(][^{]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]\)*' 'drivers/net/bnx2x_init\(_ops\)\?\.h'
-
-    blobname 'sun[/]cassini\.bin' drivers/net/cassini.c
-
-    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 '\(cxgb3[/]\)\?t3\(fw\|\(%c\|.\)_p\(rotocol_\)\?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]*[/][*][^*]*\([*]\+\([^/*]\|[/][\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
-
-    blob 'static[ ]unsigned[ ]char[ ]__devinitdata[ ]lanai4_\(code\|data\)\[[0-9]*\][ ]=[ ][{][^;]*[}][;]' drivers/net/myri_code.h
-    blob '#include[ ]["]myri_code\.h["]' drivers/net/myri_sbus.c
-    blobna '\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_code_off[^;]*[;]\([\n	 ]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n	 ]*\)\?for[ ][(][^\n]*sizeof[(]lanai4_\(code\|data\)[^\n]*[)][\n][^\n]*sbus_writeb[^;]*lanai4_\(code\|data\)[^;]*lanai4_\(code\|data\)_off[^;]*[;]\)*' drivers/net/myri_sbus.c
-
-    blob 'static[ ]u32[ ]s_firmLoad\[\][ ]=[ ][{][^;]*[}][;]' drivers/net/tehuti_fw.h
-    blobna 'bdx_tx_push_desc_safe[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-    blobna 'for[ ][(][^\n]*ARRAY_SIZE[(]s_firmLoad[)][^\n]*[)][\n	 ]*s_firmLoad[^;]*=[^;]*s_firmLoad[^;]*[;]' drivers/net/tehuti.c
-
-    blob '[ ][*][ ]Firmware[ ]is:[\n][ ][*][	]Derived[ ]from[ ]proprietary[^/]*notice[ ]is[ ]accompanying[ ]it\.[\n][ ][*][/]' drivers/net/tg3.c
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blob '\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\([\n][\n]*\(static[ ]const[ ]u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;]\|#if[ ]0\([ ][/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?[\n]\(static[ ]const[ ]\)\?u32[ ]tg3\(Tso5\?\)\?Fw\(Text\|Rodata\|Data\)\[[^{]*\][ ]=[ ][{][^}]*[}][;][\n]#endif\)\)*' drivers/net/tg3.c
-
-    blob 'static[ ]const[ ]u8[ ]typhoon_firmware_image\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/typhoon-firmware.h
-
-    blobna 'licensed[^\n]*strictly[ ]for[ ]use[^\n]*[\n]*[^\n]*COPS[ ]LocalTalk' 'drivers/net/appletalk/cops_\(ff\|lt\)drv\.h'
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]ffdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ffdrv.h
-    blob 'static[ ]const[ ]unsgined[ ]char[ ]ltdrv_code\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/appletalk/cops_ltdrv.h
-    blob '#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*#include[ ]["]cops_\(lt\|ff\)drv\.h["][ 	]*\([/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Firmware[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/net/appletalk/cops.c
-
-    blob 'static[ ]unsigned[ ]char[ ]bits_1200\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam1200.h
-    blob 'static[ ]unsigned[ ]char[ ]bits_9600\[\][ ]*=[ ][{][^}]*[}][;]' drivers/net/hamradio/yam9600.h
-    blob '#include[ ]["]yam\(96\|12\)00\.h["]\([\n][\n]*#include[ ]["]yam\(96\|12\)00\.h["]\)*' drivers/net/hamradio/yam.c
-
-    blobna 'static[ ]const[ ]u_char[ ]__Xilinx7OD\[\][ ]=[ ][{][^}]*[}][;]' drivers/net/pcmcia/ositech.h
-    blob '#include[ ]["]ositech\.h["]' drivers/net/pcmcia/smc91c92_cs.c
-    blobna '\([/][*][ ]Download[ ]the[ ]Seven[ ]of[ ]Diamonds[ ]firmware[^/]*[*][/][\n	 ]*\)\?for[ ]*[(][^\n]*__Xilinx7OD[^{}]*[{][\n][	 ]*outb[ ]*[(]__Xilinx7OD[^}]*[}]' drivers/net/pcmcia/smc91c92_cs.c
-
-    blob 'static[ ]const[ ]u8[ ]microcode\[\][ ]=[ ][{][^}]*[}][ ]*[;]' drivers/net/tokenring/3c359_microcode.h
-    blob '#include[ ]["]3c359_microcode\.h["]' drivers/net/tokenring/3c359.c
-    blobna 'start[ ]=[ ][(]0xFFFF[ ]-[ ][(]mc_size[)][^;]*[;][\n 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n 	]*printk[(]KERN_INFO[ ]["]3C359:[ ]Uploading[ ]Microcode:[ ]["][)][;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\([\n][ 	]*printk[^\n]*[;][\n 	]*for[ ][(][^{]*\(mc_size[^{]*[)][ ][{][^}]*writeb[(]microcode\[\|[)][ ][{][^}]*writeb[(]microcode\[mc_size\)[^}]*[}]\)*' drivers/net/tokenring/3c359.c
-
-    blobname 'tr_smctr\.bin' drivers/net/tokenring/smctr.c
-
-    blobname 'kaweth[/]\(new\|trigger\)_code\(_fix\)\?\.bin' drivers/net/usb/kaweth.c
-
-
-    blobname '\(agere\|prism\)_\(sta\|ap\)_fw\.bin' 'drivers/net/wireless/\(orinico/\)\?\(orinoco\|fw\)\.c'
-    blobname 'symbol_sp24t_\(prim\|sec\)_fw' 'drivers/net/wireless/\(\(orinico/\)\?orinoco\.c\|spectrum_cs\.c\)'
-
-    blob 'unsigned[ ]short[ ]sbus_risc_code01\[\][ ]__devinitdata[ ]=[ ][{][^}]*[}][;]' drivers/scsi/qlogicpti_asm.c
-    blob '#include[ ]["]qlogicpti_asm\.c["]' drivers/scsi/qlogicpti.c
-
-    blob '\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\([\n][\n]*\([/][*][ ]Microcode[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/][\n]*\)\?static[ ]\(u\(nsigned[ ]\)\?char\|unsigned[ ]short\|ADV_DCNT\)[ ]_\(asc_mcode\|adv_asc3\(550\|8C\(08\|16\)00\)\)_\(buf\[\][ ]=[ ][{][^}]*[}]\|size[ ]=[ ]sizeof[^;]*\|chksum[ ]=[ ]0x[^;]*\)[;]\([ 	]*[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]\)\?\)*' drivers/scsi/advansys.c
-
-    blob '\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc\|fw12\(80e\|160\)i\)_code01\[\][ ]=[ ][{]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code01\[\][ ]=[ ][{][\n]#endif[\n]\)\?[^}]*[}][;]\([\n][\n]*\(#ifdef[ ]UNIQUE_FW_NAME[\n]\)\?static[ ]unsigned[ ]short[ ]\(risc_code\|fw12\(80e\|160\)i\)_length01[ ]=[ ][^;]*[;]\([\n]#else[\n]static[ ]unsigned[ ]short[ ]risc_code_length01[ ]=[ ][^;]*[;][\n]#endif\)\?\)\?' 'drivers/scsi/ql1\(04\|2\(8\|16\)\)0_fw\.h'
-
-    blobname 'emi26[/]\(bitstream\|firmware\|loader\)\.fw' drivers/usb/misc/emi26.c
-
-    blobname 'emi62[/]\(bitstream\|midi\|spdif\|loader\)\.fw' drivers/usb/misc/emi62.c
-
-    blobname 'keyspan[/]\(mpr\|usa\(18x\|19\(q[iw]\|w\)\?\|28\(x\(a\|b\)\?\)\?\|49w\(lc\)\?\)\)\.fw' drivers/usb/serial/keyspan.c
-
-    accept '[	][	]fw_name[ ]=[ ]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][;]' drivers/usb/serial/keyspan_pda.c
-    blobna 'fw_name[ ]=[ ][^\n]*\([\n]\+[^\n}][^\n]*\)*\([/][*]KEYSPAN_PDA[*][/]\)\?request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-
-    blobname 'edgeport[/]\(boot\|down\)2\?\.fw' drivers/usb/serial/io_edgeport.c
-    blobname 'edgeport[/]down3\.bin' drivers/usb/serial/io_ti.c
-
-    blobname 'ti_\(usb-\)\?\(%d\|3410\|5052\)\.\(fw\|bin\)' drivers/usb/serial/ti_usb_3410_5052.c
-
-    blobname 'whiteheat\(_loader\(_debug\)\?\)\?\.fw' drivers/usb/serial/whiteheat.c
-
-    blob 'static[ ]struct[ ]BA1struct[ ]BA1Struct[ ]=[ ][{][^;]*[}][;]' sound/pci/cs46xx/cs46xx_image.h
-
-    blob 'static[ ]u32[ ]cwc\(4630\|async\|snoop\)_\(code\|parameter\)\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(4630\|async\|snoop\)\.h'
-    # cwcbinhack appears to have been created by hand.
-    # cwcdma has sources (not verified) in cwcdma.asp.
-    accept 'static[ ]u32[ ]cwc\(binhack\|dma\)_code\[\][ ]=[ ][{][^;]*[}][;]' 'sound/pci/cs46xx/imgs/cwc\(binhack\|dma\)\.h'
-    blob '#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\([\n][\n]*#include[ ]["]\(cs46xx_image\|imgs[/]cwc\(4630\|async\|snoop\)\)\.h["]\)*' sound/pci/cs46xx/cs46xx_lib.c
-
-    blobname 'korg[/]k1212\.dsp' sound/pci/korg1212/korg1212.c
-
-    blobname 'ess[/]maestro3_assp_\(kernel\|minisrc\)\.fw' sound/pci/maestro3.c
-
-    blobname 'yamaha[/]ds1e\?_\(ctrl\|dsp\)\.fw' sound/pci/ymfpci/ymfpci_main.c
-
-    blobname 'sb16[/]\(\(a\|mu\)law_main\|ima_adpcm_\(init\|capture\|playback\)\)\.csp' sound/isa/sb/sb16_dsp.c
-
-    blob 'static[ ]const[ ]struct[ ][{][^}]*[}][ ]yss225_registers\[\][ ]__devinitdata[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/yss225.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    blobna 'firmware[ ]=[ ][&]yss225_registers_firmware[;]' sound/isa/wavefront/wavefront_fx.c
-    blob 'static[ ]const[ ]struct[ ]firmware[ ]yss225_registers_firmware[ ]=[ ][{][^;]*[}][;]' sound/isa/wavefront/wavefront_fx.c
-    blobna '\(ospath[	 ]*-[ ]Pathname[^\n]*ICS2115[^-]*wavefront\.os\|Note:[ ]the[ ]firmware[ ]file[ ]["]wavefront\.os["]\)[^-]*[/]lib[/]firmware\.\([^.]*after[ ]upgrading[ ]the[ ]kernel\)\?' Documentation/sound/alsa/ALSA-Configuration.txt
-    blobname 'wavefront\.os' sound/isa/wavefront/wavefront_synth.c
-
-    blobna 'and[\n]require[ ]the[ ]use[ ]of[^\n]*propr\?ietary[^:]*' Documentation/arm/IXP4xx
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-
-    blobname 'xc\(%d\|[0-9]*\)\.bin' arch/arm/mach-netx/include/mach/xc.h
-    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 'iop_fw_load_[sm]pu' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'int[ ]iop_fw_load_[sm]pu[(]' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept '[	]retval[ ]=[ ]request_firmware[^;]*[&]iop_[sm]pu_device' arch/cris/arch-v32/drivers/iop_fw_load.c
-    accept 'EXPORT_SYMBOL[(]iop_fw_load_[sm]pu[)][;]' arch/cris/arch-v32/drivers/iop_fw_load.c
-
-    accept '[/][*][ ]fake[ ]device[ ]for[ ]request_firmware[ ][*][/]' arch/x86/kernel/microcode_core.c
-
-    blobname 'amd-ucode[/]microcode_amd\.bin' arch/x86/kernel/microcode_amd.c
-
-    blobname 'intel-ucode[/]\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)-\([0-9a-f][0-9a-f]\|%02x\)' 'arch/x86/kernel/microcode\(_intel\)\?\.c'
-
-    blobname 'BCM2033-\(MD\.hex\|FW\.bin\)' drivers/bluetooth/bcm203x.c
-
-    blobname 'bfubase\.frm' drivers/bluetooth/bfusb.c
-
-    blobname 'BT3CPCC\.bin' drivers/bluetooth/bt3c_cs.c
-
-    blobname 'cyzfirm\.bin' drivers/char/cyclades.c
-
-    accept 'MODULE_FIRMWARE[(]["]dsp56k[/]bootstrap\.bin["][)][;]' drivers/char/dsp56k.c
-    blobna 'const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-    accept '[	]const[ ]char[ ]fw_name\[\][ ]=[ ]["]dsp56k[/]bootstrap\.bin["][;][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[	]err[ ]=[ ]request_firmware[(][&]fw,[ ]fw_name,[ ]' drivers/char/dsp56k.c
-
-    blobname 'isi\(6\(08\|\(08\|16\)em\)\|46\(08\|16\)\)\.bin' drivers/char/isicom.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
-    # only issues a firmware request if specifically told to.  It
-    # doesn't require any non-Free firwmare to function, and it
-    # doesn't actually recommend users to perform updates, so I'm
-    # leaving it in.
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    accept '[	]*["]dell_rbu:%s[ ]request_firmware_nowait["]' drivers/firmware/dell_rbu.c
-
-    blobname 'xc3028-v27\.fw' drivers/media/common/tuners/tuner-xc2028.h
-    blobname 'xc3028L-v36\.fw' drivers/media/common/tuners/tuner-xc2028.h
-
-    blobname 'dvb-fe-xc5000-1\.1\.fw' drivers/media/common/tuners/xc5000.c
-
-    blobname '4210\(100[12]\|%4X\)\.sb' drivers/net/irda/irda-usb.c
-    blobna '[/][*][ 	\n*]*[ ]Known[ ]firmware[^*]*\([*]\+[^/*][^*]*\)*[*]*\(STIR421x\|4210\(100[12]\|%4X\)\.sb\)[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/irda/irda-usb.c
-
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobna 'If[ ]the[ ]driver[ ]can[ ]neither[ ]enable[ ]ECRC[^*]*\([*]\+[^/*][^*]*\)*[*]*myri10ge_\(rss_\)\?ethp\?_z8e\.dat[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/myri10ge.c
-
-    blobname 'spider_fw\.bin' drivers/net/spider_net.h
-
-    blobname 'tms380tr\.bin' drivers/net/tokenring/tms380tr.c
-
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    accept '[	]*priv->firmware[ ]=[ ]\(NULL\|new_firmware\)[;]' drivers/net/wireless/atmel.c
-
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname 'pcm5\.fw' drivers/net/wireless/b43/main.c
-    blobna 'b43legacyerr[(][^;]*must[ ]go[ ]to[ ]http[^;]*b43#devicefirmware[^;]*[)][;]' drivers/net/wireless/b43legacy/main.c
-    blobna 'You[ ]must[ ]go[ ]to[^;]*b43#devicefirmware[^;]*[^";)]' drivers/net/wireless/b43/main.c
-    blobna 'http:[/][/]wireless[^ ";)]*b43#devicefirmware' drivers/net/wireless/b43/main.c
-
-    blob '#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\([\n][\n]*#define[ ]IPW2100_FW_\(\(\(MAJOR\|MINOR\)_VERSION\|\(MAJOR\|MINOR\)[(]x[)]\)\|VERSION\)\([^\n]*\\[\n]\)*[^\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname 'ipw2100-\(["]\([^"\n]\|[\\][\n]\)*["]\([^"]\|[\\]["]\)*\)\+' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '__stringify[(]IPW2100_FW_MINOR_VERSION[)]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[ ]*Portions[ ]of[ ]ipw2100_\(do_\)\?mod_firmware_load[, 	]*\(ipw2100_\(do_\)\?mod_firmware_load[, 	and\n]*\)*' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]ipw2100_mod_firmware_load[(]fw[)][;]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobna 'if[ ][(]IPW2100_FW_MAJOR[^{]*[{][^}]*[	][}]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    blobname '["]["][ ]x[ ]["]\.fw["]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-
-    accept '[/][*][ ]Call[ ]this[ ]function[ ]from[ ]process[ ]context[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    blobname 'ipw2200-\(i\?bss\|sniffer\)\.fw' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-    accept '[	][	]IPW_ERROR[(]["]%s[ ]request_firmware[ ]failed' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2200.c'
-
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname 'iwlwifi-3945-' drivers/net/iwlwifi/iwl-3945.h
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    accept '#define\([ ]_\?IWL3945_MODULE_FIRMWARE[(]api[)]\)\+' drivers/net/iwlwifi/iwl-3945.h
-    accept '[	][ ][*][ ]request_firmware[(][)][ ]is[ ]synchronous' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\)\.c'
-    blobname 'iwlwifi-4965-' drivers/net/iwlwifi/iwl-4965.c
-    blobname 'iwlwifi-5\(00\|15\)0-' drivers/net/iwlwifi/iwl-5000.c
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\|idx\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'usb8388\(-5\.126\.0\.p5\)\?\.bin' drivers/net/wireless/libertas/if_usb.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*usb8388\(-5\.126\.0\.p5\)\?\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]lbs_pr_err[(]["]request_firmware\([(][)]\)\?[ ]failed' 'drivers/net/wireless/if_\(spi\|usb\)\.c'
-    blobna 'o\.[ ]Copy[ ]the[ ]firmware[ ]image[^\n]*usb8388\([^\n]\|[\n][ 	]*[^ 	\n]\)*' drivers/net/wireless/libertas/README
-    blobna '\[fw_name=usb8388[^]]*\]' drivers/net/wireless/libertas/README
-
-    blobname 'usb8388\.bin' drivers/base/Kconfig
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-
-    blobname 'lbtf_usb\.bin' drivers/net/wireless/libertas_tf/if_usb.c
-
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' '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 'rt2[56]61s\?\.bin' drivers/net/wireless/rt2x00/rt61pci.h
-    blobname 'rt73\.bin' drivers/net/wireless/rt2x00/rt73usb.h
-
-    blobname 'zd1201\(-ap\)\?\.fw' drivers/net/wireless/zd1201.c
-
-    blobname 'zd1211[/]zd1211b\?_\(u\([rb]\|phr\)\?\)\?' drivers/net/wireless/zd1211/zd_usb.c
-
-    # ??? gotta introduce some means to match false-positives
-    # including post context containing blobs, so that the macro name
-    # is not flagged or deblobbed, but the blob name is.
-    # blobna 'PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)'
-    # accept '[	]    PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(][^)]*, ["][/][*][(]DEBLOBBED[)][*][/]["][)]'
-    # accept '#define PCMCIA_\([PM]FC_\)\?DEVICE_CIS_\(MANF_CARD\|PROD_ID[1-4]*\)[(]' include/pcmcia/device_id.h
-
-    # These are not software; they're Free, but GPLed without in-tree sources.
-    # blobname '\(cis[/]\)\?3CCFEM556\.cis' drivers/net/pcmcia/3c574_cs.c
-    # blobname '\(cis[/]\)\?3CXEM556\.cis' drivers/net/pcmcia/3c589_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis' drivers/net/pcmcia/pcnet_cs.c
-    # blobname '\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\)\.cis' drivers/serial/serial_cs.c
-    # These are not software; they're Free, but GPLed without textual sources.
-    # It is safe to assume that these binaries *are* sources, since they
-    # can be trivially converted back to a textual form, without loss.
-    # blobname '\(cis[/]\)\?SW_\([78]xx\|555\)_SER\.cis' drivers/serial/serial_cs.c
-
-    accept '[	]\(ds_\)\?\(dev_\)\?dbg[(]\(1[,][ ]\)\?\([&]dev->dev,[ ]\)\?["]trying[ ]to[ ]load[ ]\(CIS[ ]file\|firmware\)[ ]%s[\\]n["],[ ]filename[)][;][\n]*[	]if[ ][(]\(strlen[(]filename[)][^\n]*\([{][^}]*[	][}]\|[)][\n][	]*return[^\n]*[;]\)[\n]*[	]snprintf[(]path,[ ]\(20\|sizeof[(]path[)]\),[^\n]*,[ ]filename[)][;][\n]*[	]if[ ][(]request_firmware[(][&]fw,[ ]path\|request_firmware[(][&]fw,[ ]filename\),[ ][&]dev->dev[)][^\n]*[)][ ][{][\n][	]*if[ ][(]fw->size[ ]>=[ ]CISTPL_MAX_CIS_SIZE[)]' drivers/pcmcia/ds.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|LA-PCM\|PE520\|NE2K\|PE-200\|tamarack\)\.cis["][)][;]\)*' drivers/net/pcnet_cs.c
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]err[ ]=[ ]request_firmware[(][&]asd_ha->bios_image,[\n 	]*filename_ptr,[\n 	]*[&]asd_ha->pcidev->dev[)][;]' drivers/scsi/aic94xx/aic94xx_init.c
-    blobname 'aic94xx-seq\.fw' drivers/scsi/aic94xx/aic94xx_seq.h
-
-    # This enables but does not encourage firmware updates.
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-
-    accept '[	]res[ ]=[ ]request_firmware[(]&fw,[ ]["]sas_addr["],[ ]&shost->shost_gendev[)][;]' drivers/scsi/libsas/sas_scsi_host.c
-
-    blobname 'ql\(2\([12345]00\|322\)\|8[12]00\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]\(.*linux-firmware[ ]tree[ ]as[ ]well\.\)\?' drivers/scsi/qla2xxx/Kconfig
-
-    blobname 'icom_\(asc\|res_dce\|call_setup\)\.bin' drivers/serial/icom.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\|net/wireless\)/at76_usb/at76_usb\.c\|at76c50x-usb\.c\)'
-
-    accept 'static[ ]struct[ ]go7007_usb_board[ ]board_\(matrix_\(ii\|reload\|revolution\)\|star_trek\|px_tv402u\|xmen\|lifeview_lr192\|endura\|adlink_mpg24\|sensoray_2250\)[ ]=[ ][{][\n]\([	]\.flags[ 	]*=[ ][^",]*,[\n]*\)*[	]\.main_info[ 	]*=[ ][{][\n][	][	]\.firmware[ 	]*=[ ]' drivers/staging/go7007/go7007-usb.c
-    accept 'static[ ]struct[ ]go7007_board_info[ ]board_voyager[ ]=[ ][{][\n][	]\.firmware[	 ]*=[ ]' drivers/staging/go7007/saa7134-go7007.c
-    blobname 'go7007\(fw\|tv\)\.bin' 'drivers/staging/go7007/\(go7007-\(driver\|usb\)\|saa7134-go7007\)\.c'
-
-    blobname 'cxacru-\(%s\|fw\|bp\|cf\)\.bin' drivers/usb/atm/cxacru.c
-
-    blobname 'speedtch-\(%d\|[0-9]*\)\.bin\(\.\(%x\|\(0x\)\?[0-9a-fA-F]*\)\(\.\(%02x\|[0-9a-fA-F][0-9a-fA-F]\)\)\?\)\?' drivers/usb/atm/speedtch.c
-
-    blobname 'ueagle-atm[/]' drivers/usb/atm/ueagle-atm.c
-    blobname '\(adi930\|eagle\(I*\|IV\)\)\.fw' drivers/usb/atm/ueagle-atm.c
-    blobname 'DSP[49e][ip]\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname '930-fpga\.bin' drivers/usb/atm/ueagle-atm.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-
-    blobname 'isight\.fw' drivers/usb/misc/isight_firwmare.c
-
-    blobname '\(i1480-\(pre-phy\|usb\|phy\)\|ptc\)-0\.0\.bin' drivers/uwb/i1480/dfu/usb.c
-
-    accept '[	]retval[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]metronome\.wbf["],[ ][&]dev->dev[)][;]' drivers/video/metronomefb.c
-
-    blobname '\(vx[/]\)\?\(bx_1_v\(xp\|p4\)\.b56\|x1_\(1_v\(x[2p]\|p4\)\|2_v22\)\.xlx\|bd56\(002\|3v2\|3s3\)\.boot\|l_1_v\(x[2p]\|p4\|22\)\.d56\)' sound/drivers/vx/vx_hwdep.c
-
-    blobname '\(ea[/]\)\?darla20_dsp\.fw' sound/pci/echoaudio/darla20.c
-    blobname '\(ea[/]\)\?darla24_dsp\.fw' sound/pci/echoaudio/darla24.c
-    blobname '\(ea[/]\)\?\(\(loader\|echo3g\)_dsp\|3g_asic\)\.fw' sound/pci/echoaudio/echo3g.c
-    blobname '\(ea[/]\)\?gina20_dsp\.fw' sound/pci/echoaudio/gina20.c
-    blobname '\(ea[/]\)\?\(\(loader\|gina24_3[06]1\)_dsp\|gina24_3[06]1_asic\)\.fw' sound/pci/echoaudio/gina24.c
-    blobname '\(ea[/]\)\?\(loader\|indigo\)_dsp\.fw' sound/pci/echoaudio/indigo.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_dj\)_dsp\.fw' sound/pci/echoaudio/indigodj.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_io\)_dsp\.fw' sound/pci/echoaudio/indigoio.c
-    blobname '\(ea[/]\)\?layla20_\(dsp\|asic\)\.fw' sound/pci/echoaudio/layla20.c
-    blobname '\(ea[/]\)\?\(\(loader\|layla24\)_dsp\|layla24_\(1\|2[AS]\)_asic\)\.fw' sound/pci/echoaudio/layla24.c
-    blobname '\(ea[/]\)\?\(loader\|mia\)_dsp\.fw' sound/pci/echoaudio/mia.c
-    blobname '\(ea[/]\)\?\(\(loader\|mona_3[06]1\)_dsp\|mona_3[06]1\(_1\)\?_asic_\(48\|96\)\|mona_2_asic\)\.fw' sound/pci/echoaudio/gina24.mona
-    blobname 'ea[/]%s' sound/pci/echoaudio/echoaudio.c
-
-    blobname 'emu[/]\(hana\|\(audio\|micro\)_dock\|emu\(0404\|1010\(b\|_notebook\)\)\)\.fw' sound/pci/emu10k1/emu10k1_main.c
-
-    blobname '\(mixart[/]\)\?miXart8\(AES\)\?\.\(xlx\|elf\)' sound/pci/mixart/mixart_hwdep.c
-
-    blobname '\(pcxhr[/]\)\?\(x[ic]_1_882\|[ebd]321_512\|xlxint\|\(xlxc\|dsp[ebd]\)\(882\|1\?222\|924\)\(e\|hr\)\?\)\(\.dat\|\.[ebd]56\)' sound/pci/pcxhr/pcxhr_hwdep.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
-    blobna 'chip->firmware[ ]=[ ]firmware[;]' sound/pci/riptide/riptide.c
-
-    blobname '\(multi\|digi\)face_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-
-    blobname 'aica_firmware\.bin' sound/sh/aica.c
-
-    accept '[ ][*][^*]*\([*]\+[^/*][^*]*\)*[*]*Caution:[ ]This[ ]API[^*]*\([*]\+[^/*][^*]*\)*[*]*request_firmware.' sound/sound_firmware.c
-    accept 'static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'int[ ]mod_firmware_load[(]' sound/sound_firmware.c
-    accept '[	]r[ ]=[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    accept 'EXPORT_SYMBOL[(]mod_firmware_load[)][;]' sound/sound_firmware.c
-    accept 'extern[ ]int[ ]mod_firmware_load[(]' sound/oss/sound_firmware.h
-
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]PERMCODESIZE[ ]=[ ]mod_firmware_load[(]PERMCODEFILE,[ ][&]PERMCODE[)][;]' sound/oss/msnd_pinnacle.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?pndsp\(ini\|erm\)\.bin' '\(sound/oss/msnd_pinnacle.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' '\(sound/oss/msnd_classic.h\|Documentation/sound/alsa/ALSA-Configuration.txt\)'
-    blobna '\(Important[ ]Notes[ ]-[ ]Read[ ]Before[ ]Using\|Obtaining[ ]and[ ]Creating[ ]Firmware[ ]Files\)[\n]#[ ][ ]~*\([^\n]\|[\n]#[ ]*\([\n]#[ ]*\([\n]#[ ]*For[ ]the[^\n]*[\n]#[ ]*~*[\n]\)\?\)\?[^\n ]\)*\.' Documentation/sound/oss/MultiSound
-
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    blobname '[/]sndscape[/]\(scope\.cod\|sndscape\.co\([?dx01234]\|%d\)\)' sound/oss/sscape.c
-
-    accept '[	][	]trix_boot_len[ ]=[ ]mod_firmware_load[(]' sound/oss/trix.c
-    blobname '\([/]etc[/]sound[/]\)\?trxpro\.bin' sound/oss/trix.c
-
-    accept '[	][	]smw_ucodeLen[ ]=[ ]mod_firmware_load[(]' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\)\?midi0001\.bin' sound/oss/sb_common.c
-    blobname '\([/]etc[/]sound[/]\|turtlebeach[/]\)\?msnd\(init\|perm\)\.bin' sound/oss/Kconfig
-
-    blob 'When[ ]the[ ]module[ ]is[ ]loaded[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]*\)*' Documentation/sound/oss/PSS
-    blob 'pss_firmware[ \n	]*This[ ]parameter[^\n]*\([\n][^\n]*\)*[/]pss_synth[^\n]*\([\n][^\n]\+\)*' Documentation/sound/oss/PSS-updates
-    accept '[	][	]pss_synthLen[ ]=[ ]mod_firmware_load[(]pss_firmware,[ ][(]void[ ][*][)][ ][&]pss_synth[)][;]' sound/oss/pss.c
-    accept '[	]*if[ ]\?[(]\(!\|fw_load[ ][&][&][ ]\)\?pss_synth' sound/oss/pss.c
-    accept '[	]*if[ ][(]!pss_download_boot[(]devc,[ ]pss_synth,[ ]pss_synthLen,' sound/oss/pss.c
-    accept '[	]*vfree[(]pss_synth[)][;]' sound/oss/pss.c
-    blobna 'to[ ]allow[ ]the[ ]user[ ][^/"]*fir[em]ware[ ]file[^/"]*["][^"*]*["]' sound/oss/pss.c
-    blobname '\([/]etc[/]sound[/]\)\?pss_synth' sound/oss/pss.c
-    accept '[	][$][(]obj[)][/]bin2hex[ ]pss_synth' sound/oss/Makefile
-    accept '[	][ ]*echo[ ][\'"'"']static[ ]\(unsigned[ ]char[ ][*][ ]*\|int[ ]\)pss_synth\(Len\)\?[ ]=[ ]\(NULL\|0\)[;]' sound/oss/Makefile
-
-    accept '[	]\.request_firmware[ ]=[ ]NULL,' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept '[	 ]*["]request_firmware[ ]\(fatal[ ]error\|unable[ ]to[ ]locate\|:[ ]Failed[ ]to[ ]find\)' drivers/media/video/pvrusb2/pvrusb2-hdw.c
-    accept '[ ][*][ ]NOTE[ ]:[ ]the[ ]pointer[ ]to[ ]the[ ]firmware[ ]data[ ]given[ ]by[ ]request_firmware[(][)]' drivers/media/video/pvrusb2-hdw.c
-
-    blobname 'dvb-usb-\(dw\(210[124]\|3101\)\|s630\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]gp8psk_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-gp8psk-0[12]\.fw' drivers/media/dvb/dvb-usb/gp8psk.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]opera1_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-opera-\(fpga-\)\?-01\.fw' drivers/media/dvb/dvb-usb/opera1.c
-
-    blobname 'dvb-fe-af9013\.fw' drivers/media/dvb/frontends/af9013_priv.h
-
-    blobname 'dvb-fe-bcm3510-01\.fw' drivers/media/dvb/frontends/bcm3510.c
-
-    blobname 'dvb-fe-cx24116\.fw' drivers/media/dvb/frontends/cx24116.c
-
-    blobname 'dvb-fe-nxt2002\.fw' drivers/media/dvb/frontends/nxt200x.c
-
-    blob '[/][*][\n][ ][*][ ]This[ ]driver[ ]needs[ ]two[ ]external[ ]firmware[ ]files[^*]*\([*]\+[^/*][^*]*\)*[*]*dvb-fe-or51132-\(vsb\|qam\)\.fw[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/dvb/frontends/or51132.c
-    blobname 'dvb-fe-or51132-\(vsb\|qam\)\.fw' drivers/media/dvb/frontends/or51132.c
-
-    blobname 'dvb-fe-or51211\.fw' drivers/media/dvb/frontends/or51211.c
-
-    blobname 'dvb-fe-sp887x\.fw' drivers/media/dvb/frontends/sp887x.c
-
-    blobname 'dvb-fe-tda10048-1\.0\.fw' drivers/media/dvb/frontends/tda10048.c
-
-    blobname '\(\(dvb\|tdmb\|isdbt\)_nova\|cmmb_vega\)_12mhz\(_b0\)\?\.inp' drivers/media/dvb/siano/smscoreapi.c
-
-    blobname '\(dvb[th]\(_bda\)\?\|tdmb\)_stellar_usb\.inp' drivers/media/dvb/siano/smsusb.c
-
-    blobname 'dvb-ttusb-dec-\(2000t\|2540t\|3000s\)\.fw' drivers/media/dvb/ttusb-dec/ttusb_dec.c
-
-    blob 'For[ ]the[ ]WinTV[/]PVR[^:]*firmware[^:]*:[\n]hcwamc\.rbf[^\n]*\([\n][^\n][^\n]*\)*' Documentation/video4linux/bttv/README
-    blobname 'hcwamc\.rbf' drivers/media/video/bt8xx/bttv-cards.c
-    blobna 'The[ ]hcwamc\.rbf[ ]firmware[ ]file[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/bt8xx/bttv-cards.c
-
-    blobname 'v4l-cx23418-dig\.fw' drivers/media/video/cx18/cx18-av-firmware.c
-    blobname 'v4l-cx23418-[ac]pu\.fw' drivers/media/video/cx18/cx18-firwmare.c
-
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-
-    blobname 'v4l-\(cx23\(885\|1xx\)-avcore-01\|cx25840\)\.fw' drivers/media/video/cx25840/cx25840-firmware.c
-
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-
-    blobname 'v4l-cx2341x-init\.mpg' drivers/media/video/ivtv/ivtv-firwmare.c
-
-    blobname 'v4l-pvrusb2-\(2[49]\|73\)xxx-01\.fw' drivers/media/video/pvrusb2/pvrusb2-devattr.c
-
-    blobname 'f2255usb\.bin' drivers/media/video/s2255drv.c
-
-    blobname 'drx397xD\.\(A2\|B1\)\.fw' drivers/media/dvb/frontends/drx397xD_fw.h
-
-    accept '#define[ ]DIB0700_DEFAULT_DEVICE_PROPERTIES[ ]\\[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^\n",]*,[ ]\\[\n]\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-dib0700-1\.[12]0\.fw' 'drivers/media/dvb/dvb-usb/dib0700_\(devices\|core\)\.c'
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]nova_t_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-    blobname 'dvb-usb-nova-t-usb2-02\.fw' drivers/media/dvb/dvb-usb/nova-t-usb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]umt_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/umt-010.c
-    blobname 'dvb-usb-umt-010-02\.fw' drivers/media/dvb/dvb-usb/umt-010.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]ttusb2_properties\(_s2400\)\?[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/ttusb2.c
-    blobname 'dvb-usb-\(pctv-400e\|tt-s2400\)-01\.fw' drivers/media/dvb/dvb-usb/ttusb2.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]cxusb_bluebird_\(lgh064f\|dee1601\|lgz201\|dtt7579\|nano2_needsfirmware\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/cxusb.c
-    blobname 'dvb-usb-bluebird-0[12]\.fw' drivers/media/dvb/dvb-usb/cxusb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dtt200u\|wt220u\(_\(fc\|zl0353\|miglia\)\)\?\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dtt200u.c
-    blobname 'dvb-usb-\(dtt200u-01\|wt220u-\(02\|fc03\|\(zl0353\|miglia\)-01\)\)\.fw' drivers/media/dvb/dvb-usb/dtt200u.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    blobname 'dvb-usb-vp7045-01\.fw' drivers/media/dvb/dvb-usb/vp7045.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dibusb\(1_1\(_an2235\)\?\|2_0b\)\|artec_t1_usb2\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mb.c
-    blobname 'dvb-usb-\(dibusb-\(5\.0\.0\.11\|an2235-01\|6\.0\.0\.8\)\|adstech-usb2-02\)\.fw' drivers/media/dvb/dvb-usb/dibusb-mb.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]a800_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/a800.c
-    blobname 'dvb-usb-avertv-a800-02\.fw' drivers/media/dvb/dvb-usb/a800.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]af9005_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9005.c
-    blobname 'af9005\.fw' drivers/media/dvb/dvb-usb/af9005.c
-
-    accept '[	][	]\.download_firmware[ ]=[ ]af9015_download_firmware,[\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    blobname 'dvb-usb-af9015\.fw' drivers/media/dvb/dvb-usb/af9015.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]dibusb_mc_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dibusb-mc.c
-    blobname 'dvb-usb-dibusb-6\.0\.0\.8\.fw' drivers/media/dvb/dvb-usb/dibusb-mc.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp702x_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp702x.c
-    blobname 'dvb-usb-vp702x-02\.fw' drivers/media/dvb/dvb-usb/vp702x.c
-
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]digitv_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/digitv.c
-    blobname 'dvb-usb-digitv-02\.fw' drivers/media/dvb/dvb-usb/digitv.c
-
-    blob 'Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\([\n][\n]--*[\n][\n]\?Driver:[ ]\(acenic\|ADAPTEC_STARFIRE\|cxgb3\|e100\|tigon3\|korg1212\|maestro3\|ymfpci\|smctr\|kaweth\|ttusb-budget\|keyspan\|emi26\|emi62\|t[iu]_usb_3410_5052\|whiteheat\|ip2\|CPiA2\|DABUSB\|USB_VICAM\|USB_SERIAL_EDGEPORT\(_TI\)\?\|SND_SB16_CSP\|CASSINI\|ambassador\|SCSI_\(ADVANSYS\|QLOGIC\(_1280\|PTI\)\)\|TEHUTI\|TYPHOON\|YAM\|3C359\|PCMCIA_\(PCNET\|SMC91C92\|3C5\(89\|74\)\)\|MYRI_SBUS\|BNX2\|bnx2x\|wavefront\|SERIAL_8250_CS\|mga\|r128\|radeon\|ib_qib\)\([ ]--*\|:\)[ ]\([^\n]\|[\n]*[^\n\-]\)*\)*' firmware/WHENCE
-
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-
-    accept '[ ][ ][ ][ ]mv[ ]["][$]ofile["][ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$]objbin[/]mktree[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[	]rm[ ]-f[ ]["][$]ofile\.elf["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ][$][{]CROSS[}]objcopy[ ]-O[ ]binary[ ]["][$]ofile["][ ]["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]odir=["][$][(]dirname[ ]["][$]ofile\.bin["][)]["]' arch/powerpc/boot/wrapper
-    accept '[ ][ ][ ][ ]gzip[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-
-    blobname 'di\(\(dn\|pr\)load\|diva\(pp\)\?\|hscx\|v110\|modem\|fax\|_etsi\|_\(1tr6\|belg\|franc\|atel\|ni\|5ess\|japan\|swed\)\|dspdld\)\.\(bin\|s[xyqm]\|p\)' drivers/isdn/hardware/eicon/cardtype.h
-    blobname 'dsp\(dload\|dqsig\|dvmdm\|dvfax\)\.bin' drivers/isdn/hardware/eicon/dsp_defs.h
-
-    blobname 'vicam[/]firmware\.fw' drivers/media/video/usbvideo/vicam.c
-
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-
-    # New in 2.6.29
-    blobname 'acenic[/]tg[12]\.bin' drivers/net/acenic.c
-    blobname 'adaptec[/]starfire_[rt]x\.bin' drivers/net/starfire.c
-    blobname 'e100[/]d10\(1[ms]\|2e\)_ucode\.bin' drivers/net/e100.c
-    blobname 'tigon[/]tg3\(_tso5\?\)\?\.bin' drivers/net/tg3.c
-    blobname '\(ti_usb-v\(%04x\|[0-9a-f]*\)-p\(%04x\|[0-9a-f]*\)\|mts_\(cdma\|gsm\|edge\)\)\.\(bin\|fw\)' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'iw\?\(2400\|6050\)m\?-fw-\(sdio\|usb\)-\(\(["][ ]I2400M_FW_VERSION[ ]["]\|[0-9.]*\)\.sbcf\|[^". \n]*\)' 'drivers/net/wimax/i2400m/\(sdio\|usb\)\.c'
-    blob '3\.[ ]Installing[ ]the[ ]firmware[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*[\n]*[$][^\n]*i2400m-fw[^\n]*\([\n][\n]*[ ][ ][ ][^\n]*\)*' Documentation/wimax/README.i2400m
-    blob '6\.1\.[ ]Driver[ ]complains[^\n]*i2400m-fw[^\n]*\([\n][\n]*\([ ][ ][ ]\|i2400m_usb\)[^\n]*\)*' Documentation/wimax/README.i2400m
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    accept '\(div_table_\(clz\|inv\|ix\)\|zero_l\):\([\n][	]\.\(byte[	]-\?[0-9]*\|long[	]0x[0-9A-F]*\)\)*' arch/sh/lib/udivsi3_i4i.S
-    defsnc 'const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    accept '[	][ ][ ]every[ ]driver[ ]which[ ]uses[ ]request_firmware[(][)][ ]and[ ]ships[ ]its' drivers/base/Kconfig
-    defsnc 'static[ ]const[ ]u32[ ]filter_table\[\][ ]=' drivers/gpu/drm/i915/intel_tv.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]u32[ ]channel_tbl\[15\]\[9\][ ]=' drivers/staging/agnx/rf.c
-    defsnc 'static[ ]const[ ]u32[\n]gain_table\[\][ ]=' drivers/staging/agnx/rf.c
-    accept '<[frs]:[0-9]*x[0-9]*>[\n][01 \n]*' 'drivers/staging/asus_oled/\(linux\(_fr\?\)\?\|tux\(_r2\?\)\?\|zig\).txt'
-    defsnc 'static[ ]unsigned[ ]char[ ]\(aud\|vid\)_regs\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    defsnc 'static[ ]u16[ ]vid_regs_fp\[\][ ]=' drivers/staging/go7007/s2250-board.c
-    blobname 's2250\(_loader\)\?\.fw' drivers/staging/go7007/s2250-loader.c
-    blobna 'me_xilinx_download' 'drivers/staging/meilhaus/.*'
-    accept 'int[ ]me_xilinx_download[(]' 'drivers/staging/meilhaus/mefirmware\.[ch]'
-    blobname 'me46[01]0\(_bosch\)\?\.bin' drivers/staging/meilhaus/me4600_device.c
-    accept '\([	]if[ ][(]me4600_device->base\.info\.pci\.device_id[ ]==[ ]PCI_DEVICE_ID_MEILHAUS_ME4610[)][ ][{][	][/][/]Jekyll[ ]<=>[ ]me4610\|#ifdef[ ]BOSCH\|#else[ ][/][/]~BOSCH\)[\n][	][	]err[ ]=[\n][	][	][ ][ ][ ][ ]me_xilinx_download[(]me4600_device' drivers/staging/meilhaus/me4600_device.c
-    blobname 'me6000\.bin' drivers/staging/meilhaus/me6000_device.c
-    accept '[	][/][*][ ]Download[ ]the[ ]xilinx[ ]firmware[ ][*][/][\n][	]err[ ]=[ ]me_xilinx_download[(]me6000_device' drivers/staging/meilhaus/me6000_device.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\([\n][\n]*const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\][ ]*=[ ]*[{][^;]*[}]\|Size[ ]*=[ ]*[0-9]*\)[;]\)*' 'drivers/staging/otus/hal/hp.*fwu.*\.c'
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    blob '\(UCHAR\|u8\)[ ]FirmwareImage\(_\(2870\|30[79]0\)\)\?[ ]\[\][ ]=[ ][{][^;]*[}][ ][;]' 'drivers/staging/rt\(28[67]\|30[79]\)0/common/firmware\(_3070\)\?\.h'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname 'rate\.bin' drivers/staging/rt2870/rtmp_init.c
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT\(28[67]\|307\)0STA[/]\)\?\(RT\(28[67]\|307\)0STA\|rt28[67]0\)\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    blobname '\([/]etc[/]Wireless[/]\)\?\(RT28[67]0STA[/]\)\?e2p\.bin' 'drivers/staging/rt\(28[67]0\|3070\)/rt_ate\.[hc]'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'u\(8\|16\|32\)[ ]rtl8225\(\(a\|bcd\?\)_rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\[\]=' drivers/staging/rtl8187se/r8180_rtl8225.c
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc 'static[ ]short[ ]rtl8255_agc\[\]=' drivers/staging/rtl8187se/r8180_rtl8255.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    accept '[	]-[ ]move[ ]firmware[ ]loading[ ]to[ ]request_firmware[(][)]' drivers/staging/slicoss/README
-    blobname '\(\(oasis\|gb\)_rcv\|slic_\(oasis\|mojave\)\)\.bin' drivers/staging/slicoss/slicoss.c
-
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\([\n][\n]*#include[ ]["]\(sxgphycode\(-1\.2\)\?\|saharadbgdownload\)\.h["]\)*' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-    blob '#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\([\n][\n]*#include[ ]["]\(gb\|oasis\)\(dbg\)\?\(download\|rcvucode\)\.h["]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'instruction[ ]=[ ][^;]*\(Oasis\|GB\|Mojave\)\(Rcv\)\?UCode[^:}]*[;]' drivers/staging/slicoss/slicoss.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobna 'numsects[ ]=[ ][OM]NumSections[;][\n][	]*for[ ][(][^;]*[;][^;]*[;][^;{]*[)][ ][{][\n][^}]*[\n][	][	][}]' drivers/staging/slicoss/slicoss.c
-
-    # post 2.6.29 patches
-    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov\(7[27]2x\|965x\(_2\)\?\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-
-    # This looks suspicious, but it pretty much just sets stuff to zero.
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-
-    # quite suspicious
-    # arch/parisc/kernel/perf_images.h
-    initc 'static[ ]uint32_t[ ]onyx_images\[\]\[PCXU_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-    initc 'static[ ]uint32_t[ ]cuda_images\[\]\[PCXW_IMAGE_SIZE[/]sizeof[(]uint32_t[)]\][ ]__read_mostly[ ]='
-
-    # These are regarded as ok
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-
-    # too lax?
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirZeros[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirOnes[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirSatTest[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_Hrtf_t[ ]A3dHrirDImpulse[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]a3d_ItdDline_t[ ]A3dItdDlineZeros[ ]=[ ][{]'
-    initnc 'static[ ]auxxEqCoeffSet_t[ ]asEqCoefsNormal[ ]=[ ][{]'
-    defsnc 'static[ ]xtalk_dline_t[ ]const[ ]alXtalkDline\(Test\|Zeros\)[ ]=' sound/pci/au88x0/au88x0_xtalk.c
-    initnc 'static[ ]struct[ ]nand_ecclayout[ ]rtc_from4_nand_oobinfo[ ]=[ ][{]'
-    initnc 'static[ ]const[ ]s16[ ]tempLUT\[\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    initnc 'static[ ]struct[ ][{][ ]int[ ]xres,[ ]yres,[ ]left,[ ]right,[ ]upper,[ ]lower,[ ]hslen,[ ]vslen,[ ]vfreq[;][ ][}][ ]timmings\[\][ ]__initdata[ ]=[ ][{]'
-    initnc 'static[ ]struct[ ]platinum_regvals[ ]platinum_reg_init_[0-9]*[ ]=[ ][{]'
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    initnc 'static[ ]u32[ ]LABELPATCHES\[\][ ]__attribute[(][(]unused[)][)][ ]='
-
-    initnc 'static[ ]dbdev_tab_t[ ]dbdev_tab\[\][ ]='
-    accept '\(EXP\|LOG\|ATAN\)TBL:'"$sepx$blobpat*"
-    initnc 'static[ ]char[ ]fm_volume_table\[128\][ ]='
-    initnc 'unsigned[ ]int[ ]snd_gf1_scale_table\[SNDRV_GF1_SCALE_TABLE_SIZE\][ ]='
-    # remaining after original deblob_2_6_24, not fully checked
-
-    oprepline '#define[ ]OV51[18]_\(Y\|UV\)QUANTABLE[ ][{]'
-    initnc '[	][	]static[ ]unsigned[ ]char[ ]const[ ]data_bit\[64\][ ]='
-    initnc '[	][	]static[ ]const[ ]u8[ ]data_sbit\[32\][ ]='
-    initnc '[	]\.RightCoefs[ ]='
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    initnc '[	]SetRate44100\[\][ ]='
-    initnc '[	]const[ ]short[ ]period\[32\][ ]='
-    defsnc '[	]\(const[ ]static\|static[ ]const\)[ ]int[ ]desc_idx_table\[\][ ]=' 'arch/arm/include/asm/hardware/iop3xx-adma.h|include/asm-arm/hardware/iop3xx-adma.h'
-    initnc '[	]int[ ]prop_bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]char[ ]logSlopeTable\[128\][ ]='
-    initnc '[	]static[ ]const[ ]int[ ]uc_\(dup\|word\)_table\[\]\[2\][ ]='
-    initnc '[	]static[ ]const[ ]struct[ ]mc7_timing_params[ ]mc7_timings\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs170\[7[ ][*][ ]8\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]cs3[13]a\[8[ ][*][ ]4\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]dramsr13\[12[ ][*][ ]5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]sdramtype\[13\]\[5\][ ]='
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    initnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]='
-    initnc '[	]static[ ]const[ ]unsigned[ ]short[ ]ac97_defaults\[\][ ]='
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]='
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    initnc '[	]static[ ]u32[ ]logMagTable\[128\][ ]='
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable1\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]CRCTable2\[\][ ]='
-    initnc '[	]static[ ]unsigned[ ]char[ ]default_colors\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]log_scale\[101\][ ]=' sound/oss/pss.c
-    initnc '[	]static[ ]unsigned[ ]char[ ]msg\[\][ ]='
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    initnc '[	]uint8_t[ ]tx\[\][ ]='
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc '[	]unsigned[ ]char[ ]sas_pcd_m_pg\[\][ ]='
-    initnc '[	][}][ ]modedb\[5\][ ]='
-    defsnc '[	][}][ ]reg_tbl\[\][ ]=' drivers/net/bnx2.c
-    initnc '[	][}][ ]vals\[\][ ]='
-    initnc '[	][}][ ]vm_devices\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]distfix\[32\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]code[ ]lenfix\[512\][ ]='
-    defsnc '[ ][ ]int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    initnc '[ ][ ][}][ ]cards_ds\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc '[ ][ ][ ][ ]static[ ]const[ ]unsigned[ ]short[ ]d\(base\|ext\)\[32\][ ]='
-    initnc '#define[ ]OV511_QUANTABLESIZE[	]64'
-    initnc 'BYTE[ ]BtCard::SRAMTable_\(NTSC\|PAL\)\[\][ ]='
-    initnc 'BYTE[ ]SRAMTable\[\]\[[ ]60[ ]\][ ]='
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" 'arch/arm/inlcude/asm/hardware/entry-macro-iomd.S|include/asm-arm/hardware/entry-macro-iomd.S'
-    initc '__u8[ ]_ascebc\[256\][ ]='
-    initc '__u8[ ]_ebc_tolower\[256\][ ]='
-    initc '__u8[ ]_ebc_toupper\[256\][ ]='
-    initnc 'adapter_tag_info_t[ ]aic7[9x]xx_tag_info\[\][ ]='
-    initnc 'char[ ]dmasound_alaw2dma8\[\][ ]='
-    initnc 'char[ ]dmasound_ulaw2dma8\[\][ ]='
-    initnc 'const[ ]struct[ ]aper_size_info_16[ ]agp3_generic_sizes\[AGP_GENERIC_SIZES_ENTRIES\][ ]='
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]byte_rev_table\[256\][ ]='
-    initnc 'const[ ]u8[ ]crc7_syndrome_table\[256\][ ]='
-    initnc 'int[ ]snd_sf_vol_table\[128\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siubit\[\][ ]='
-    initnc 'static[	]u_char[	]irq_to_siureg\[\][ ]='
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    initnc 'static[ ]__const__[ ]__u16[ ]gx_coeff\[256\][ ]='
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    initnc 'static[ ]char[ ]coefficients\[NM_TOTAL_COEFF_COUNT[ ][*][ ]4\][ ]='
-    initnc 'static[ ]char[ ]ecc_syndrome_table\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_alaw_to_ulaw\[\][ ]='
-    initnc 'static[ ]char[ ]isdn_audio_ulaw_to_alaw\[\][ ]='
-    initnc 'static[ ]char[ ]mix_cvt\[101\][ ]='
-    initnc 'static[ ]char[ ]opl3_volume_table\[128\][ ]='
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]='
-    initnc 'static[ ]const[ ]__u32[ ]crc_c\[256\][ ]='
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    initnc 'static[ ]const[ ]int[ ]init_seq\[\][ ]='
-    initnc 'static[ ]const[ ]int[ ]mobile_vid_table\[32\][ ]='
-    initnc 'static[ ]const[ ]s16[ ]snd_opl4_pitch_map\[0x600\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]budtab\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]aper_size_info_8[ ]via_generic_sizes\[9\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]color[ ]clut_vga16\[16\][ ]='
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]mobilevrm_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__\(cpu\)\?initdata[ ]vrm85_mV\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]struct[ ]menelaus_vtg_value[ ]vcore_values\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]opl4_region[ ]regions_[0-9a-frums]*\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]regval[ ]regval_table\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    initnc 'static[ ]const[ ]u32[ ]SS[0-3]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]S[1-8]\[64\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]T[0-5]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    initnc 'static[ ]const[ ]u32[ ]bass_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    initnc 'static[ ]const[ ]u32[ ]db_table\[101\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]m8xx_size_to_gray\[M8XX_SIZES_NO\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]mds\[4\]\[256\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]pc2\[1024\][ ]='
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    initnc 'static[ ]const[ ]u32[ ]tfrc_calc_x_lookup\[TFRC_CALC_X_ARRSIZE\]\[2\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]treble_table\[41\]\[5\][ ]='
-    initnc 'static[ ]const[ ]u64[ ][CT][0-7]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sbox[1-4]\[256\][ ]='
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    initnc 'static[ ]const[ ]u8[ ]aes_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]calc_sb_tbl\[512\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]exp_to_poly\[492\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]legal_ansi_char_array\[0x40\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]parity\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]pc1\[256\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]poly_to_exp\[255\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]q[01]\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u8[ ]rs\[256\][ ]='
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225_\(agc\|tx_\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siubit\[\][ ]='
-    initnc 'static[ ]const[ ]u_char[ ]irq_to_siureg\[\][ ]='
-    initnc 'static[ ]const[ ]uint8_t[ ]parity\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]\(UV\|Y\)_QUANTABLE\[64\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_mobilevrm\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]barco_p1\[2\]\[9\]\[7\]\[3\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]blue\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]chktab[hl]\[256\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]comet_miireg2offset\[32\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]euc2sjisibm_g3upper_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]green\[256\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=' drivers/hid/hid-input.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]mts_direction\[256[/]8\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]red\[256\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?unsigned[ ]char[ ]sjisibm2euc_map\[\]\[2\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]vol_cvt_datt\[128\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    initnc 'static[ ]const[ ]unsigned[ ]int[ ]crctab32\[\][ ]='
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]crc_flex_table\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]wd7000_iobase\[\][ ]='
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    initnc 'static[ ]const[ ]unsigned[ ]table\[\][ ]='
-    initnc 'static[ ]int[ ]MV300_reg_8bit\[256\][ ]\?=' drivers/video/atafb.c
-    defsnc 'static[ ]int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    initnc 'static[ ]int[ ]initial_lfsr\[\][ ]='
-    initnc 'static[ ]int[ ]log_tbl\[129\][ ]='
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]register_size\[\][ ]='
-    initnc 'static[ ]int[ ]reserve_list\[MAX_RES_ARGS\][ ]='
-    initnc 'static[ ]int[ ]reverse6\[64\][ ]='
-    initnc 'static[ ]short[ ]attack_time_tbl\[128\][ ]='
-    defsnc 'static[ ]short[ ]beep_wform\[256\][ ]=' 'sound/ppc/beep.c|sound/oss/dmasound/dmasound_awacs.c|arch/ppc/8xx_io/cs4218_tdm.c'
-    initnc 'static[ ]short[ ]decay_time_tbl\[128\][ ]='
-    initnc 'static[ ]short[ ]isdn_audio_[ua]law_to_s16\[\][ ]='
-    defsnc 'static[ ]struct[ ]iw\?l\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IW\?L_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    initnc 'static[ ]struct[ ]ovcamchip_regvals[ ]regvals_init_\(76be\|7[16]20\|7x10\)\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    initnc 'static[ ]struct[ ]s_c2[ ]SetRate48000\[\][ ]='
-    initnc 'static[ ]struct[ ]tea6420_multiplex[ ]TEA6420_line\[MXB_AUDIOS[+]1\]\[2\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_16_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_24_133\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_100\[\][ ]='
-    initnc 'static[ ]struct[ ]wm_info[ ]i810_wm_8_133\[\][ ]='
-    initnc 'static[ ]struct[ ][{][ ]struct[ ]fb_bitfield[ ]red,[ ]green,[ ]blue,[ ]transp[;][ ]int[ ]bits_per_pixel[;][ ][}][ ]colors\[\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsPipes\[64\][ ]='
-    initnc 'static[ ]u16[ ]asEqCoefsZeros\[50\][ ]='
-    initnc 'static[ ]u16[ ]asEqOutStateZeros\[48\][ ]='
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    initnc 'static[ ]u16[ ]eq_levels\[64\][ ]='
-    initnc 'static[ ]u32[ ][ ]crc32tab\[\][ ]__attribute__[ ][(][(]aligned[(]8[)][)][)][ ]='
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]u32[ ]adwDecim8\[33\][ ]='
-    initnc 'static[ ]u32[ ]h_prescale\[64\][ ]='
-    initnc 'static[ ]u32[ ]v_gain\[64\][ ]='
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]bnx2_570[68]_stats_len_arr\[BNX2_NUM_STATS\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]u8[ ]flit_desc_map\[\][ ]='
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]u8[ ]mac_reader\[\][ ]=' drivers/net/wireless/atmel.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/dvb/frontends/mt2131.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/dvb/frontends/mt2266.c # <= 2.6.25
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc 'static[ ]u_long[ ]ident_map\[32\][ ]='
-    initnc 'static[ ]u_short[ ]alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]altgr_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_alt_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]ctrl_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]u_short[ ]shift_ctrl_map\[NR_KEYS\][ ]='
-    initnc 'static[ ]u_short[ ]shift_map\[NR_KEYS\][ ]*='
-    initnc 'static[ ]uchar[ ]perm1\[56\][ ]='
-    initnc 'static[ ]uchar[ ]perm2\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm3\[64\][ ]='
-    initnc 'static[ ]uchar[ ]perm4\[48\][ ]='
-    initnc 'static[ ]uchar[ ]perm5\[32\][ ]='
-    initnc 'static[ ]uchar[ ]perm6\[64\][ ]='
-    initnc 'static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]='
-    initnc 'static[ ]uint16_t[ ]crc_table\[256\][ ]='
-    initnc 'static[ ]uint8_t[ ]lpfcAlpaArray\[\][ ]='
-    initnc 'static[ ]\(const[ ]\)\?uint8_t[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OffMatrix_9600\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]V110_OnMatrix_9600\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_set3_keycode\[512\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]atkbd_unxlate_table\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/superh/microdev/led.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8260\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]bus2core_8280\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]caseorder\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]crystal_key\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]dsp_ulaw\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]expressiontab\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    initnc 'static[ ]unsigned[ ]char[ ]hidp_keycode\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]nkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]pan_volumes\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]parm_block\[32\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]raw3270_ebcgraf\[64\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rfcomm_crc_table\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]rwa_unlock\[\][ ]__initdata[ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]seqprog\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]snd_opl4_volume_table\[128\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    initnc 'static[ ]unsigned[ ]char[ ]sunkbd_keycode\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_8fpb\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ufs_fragtable_other\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]ulaw_dsp\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    initnc 'static[ ]unsigned[ ]char[ ]voltab[12]\[128\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]vpd89_data\[\][ ]='
-    initnc 'static[ ]unsigned[ ]char[ ]xtkbd_keycode\[256\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]bass_volume_table\[\][ ]='
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    initnc 'static[ ]unsigned[ ]int[ ]isa_dma_port\[8\]\[7\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]master_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]mixer_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]pan_table\[63\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_bass_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]snapper_treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]treble_volume_table\[\][ ]='
-    initnc 'static[ ]unsigned[ ]int[ ]valid_mem\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]arthur_to_linux_signals\[32\][ ]='
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]unsigned[ ]nv\([34]\|10\)TableP\(FIFO\|GRAPH\|RAMIN\)\[\]\[2\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]fcstab\[256\][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ][/][*]__devinitdata[*][/][ ]='
-    initnc 'static[ ]unsigned[ ]short[ ]log_table\[LOG_TABLE_SIZE[*]2\][ ]='
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    initnc 'static[ ]unsigned[ ]short[ ]treble_parm\[12\]\[9\][ ]='
-    initnc 'struct[ ]RGBColors[ ]TextCLUT\[256\][ ]='
-    initnc 'struct[ ]VgaRegs[ ]GenVgaTextRegs\[NREGS[+]1\][ ]='
-    defsnc 'struct[ ]battery_thresh[ ][ ]*\(spitz\|sharpsl\)_battery_levels_\(noac\|acin\)\[\][ ]=' arch/arm/mach-pxa/sharpsl_pm.c
-    initnc 'struct[ ]fb_bitfield[ ]rgb_bitfields\[\]\[4\][ ]='
-    initnc 'struct[ ]mode_registers[ ]std_modes\[\][ ]='
-    initnc 'struct[ ]vmode_attr[ ]vmode_attrs\[VMODE_MAX\][ ]='
-    initnc 'u16[ ]const[ ]crc16_table\[256\][ ]='
-    initnc 'u16[ ]const[ ]crc_ccitt_table\[256\][ ]='
-    initnc 'u16[ ]hfsplus_compose_table\[\][ ]='
-    initnc 'u16[ ]hfsplus_decompose_table\[\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    initnc '[}][ ]euc2sjisibm_jisx0212_map\[\][ ]='
-    initnc '[}][ ]freq\[\][ ]='
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]maven_gamma\[\][ ]='
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    initnc '[}][ ]sil_port\[\][ ]='
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-
-    # new in 2.6.30
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]sync\[\][ ]=' Documentation/networking/timestamping/timestamping.c
-    blob 'The[ ]driver[ ]requires[ ]firmware[ ]files[ ]["]turtlebeach\([^\n]*[^\n.][\n]\)*directory.' Documentation/sound/alsa/ALSA-Configuration.txt
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    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-\(\(db-\)\?FPGA\|Firmware\)\.bin' drivers/atm/solos-pci.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\)\[\][ ]\(__devinitconst[ ]\)\?=' drivers/i2c/busses/i2c-mpc.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nand_oob_128[ ]=' drivers/mtd/nand/nand_base.c
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    accept 'static[ ]void[\n]load_rv2p_fw[(][^{)]*const[ ]struct[ ]bnx2_mips_fw_file_entry' drivers/net/bnx2.c
-    accept 'static[ ]int[\n]bnx2_init_cpus[(][^{]*[)][\n][{][\n][	]const[ ]struct[ ]bnx2_mips_fw_file'
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blobname 'myricom[/]lanai\.bin' drivers/net/myri_sbus.c
-    blobname '3com[/]3C359\.bin' drivers/net/tokenring/3c359.c
-    blobname '3com[/]typhoon\.bin' drivers/net/typhoon.c
-    defsnc 'static[ ]struct[ ]ar9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]struct[ ]ar9170_rf_init[ ]ar9170_rf_init\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]ar9170_phy_freq_entry[ ]ar9170_phy_freq_params\[\][ ]=' drivers/net/wireless/ar9170/phy.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'sxg[/]sahara\(dbg\)\?downloadB\.sys' drivers/staging/sxg/sxg.c
-    blobname 'qlogic[/]isp1000\.bin' drivers/scsi/qlogicpti.c
-    blobname 'advansys[/]\(3550\|38C\(08\|16\)00\|mcode\)\.bin' drivers/scsi/advansys.c
-    blobname 'qlogic[/]\(1040\|1280\|12160\)\.bin' drivers/scsi/qla1280.c
-    blobname 'yamaha[/]yss225_registers\.bin' sound/isa/wavefront/wavefront_fx.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]rf\([52]413\|2425\)_ini_common_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-1000-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-60[05]0-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]gspi\(%d\|[0-9]\+\)\(_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c
-    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\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    accept '#define[ ]USBDUX_FIRMWARE[ \t]*["]usbdux_firmware\.bin["]' drivers/staging/comedi/drivers/usbdux.c
-    accept 'MODULE_FIRMWARE[(]USBDUX_FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbdux.c
-    accept '#define[ ]FIRMWARE[ \t]*["]usbduxfast_firmware\.bin["]' drivers/staging/comedi/drivers/usbduxfast.c
-    accept 'MODULE_DESCRIPTION[(]["]USB-DUXfast[^"]*["][)][;][\n]MODULE_LICENSE[(]["]GPL["][)][;][\n]MODULE_FIRMWARE[(]FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbduxfast.c
-    blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
-    defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
-    accept '[	][	]stlc45xx_error[(]["]request_firmware[(][)][ ]failed' drivers/staging/stlc45xx/stlc45xx.c
-    blob 'static[ ]struct[ ]phy_ucode[	]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode-1.2.h
-    accept 'device[ ]drivers[ ]which[ ]predate[ ]the[ ]common[ ]use[ ]of[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    accept 'As[ ]we[ ]update[ ]those[ ]drivers[ ]to[ ]use[ ]request_firmware[(][)]' firmware/README.AddingFirmware
-    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*\(infradead\.org\|decadent\.org\.uk\)>' firmware/README.AddingFirmware
-    blobna 'linux-firmware\.git' firmware/README.AddingFirmware
-    blobname '\(ea[/]\)\?\(loader\|indigo_djx\)_dsp\.fw' sound/pci/echoaudio/indigodjx.c
-    blobname '\(ea[/]\)\?\(loader\|indigo_iox\)_dsp\.fw' sound/pci/echoaudio/indigoiox.c
-    # blobname 'cis[/]LA-PCM\.cis' drivers/net/pcmcia/pcnet_cs.c
-    blobname 'ositech[/]Xilinx7OD\.bin' drivers/net/pcmcia/smc91c92_cs.c
-    blobname 'tehuti[/]\(firmware\|bdx\)\.bin' drivers/net/tehuti.c
-    accept '[ 	]*["]b43-open%s[/]%s\.fw["]' drivers/net/wireless/b43/main.c
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-
-    # New in 2.6.31
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    defsnc '\([	]static[ ]const[ ]u8[ ]snum_init\[\][ ]=[ ][{]\|static[ ]void[ ]qe_snums_init[(]void[)]\)[\n][	][	]0x04,[ ]0x05,' arch/powerpc/sysdev/qe_lib/qe.c
-    accept '[.]LgoS4:[\n][	][.]word[	][.]LmtoS4-\.LgoS4\([\n][	]\.\(long\|word\|byte\)[	][01]\(,0\)*\)*' arch/s390/kernel/sclp.S
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    accept '[ ][*][ ]*1[ ]1\([ ]0\)*[ ]1\([ ]0\)*' arch/x86/lguest/boot.c
-    defsnc 'struct[ ]scrubrate[ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]unsigned[ ]r\([35]\|s6\)00_reg_safe_bm\[[0-9]*\][ ]=' 'drivers/gpu/drm/radeon/r\(300\|v515\|s600\)\.c'
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    blobname 'dvb-cx18-mpc718-mt352\.fw' drivers/media/video/cx18/cx18-dvb.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]onenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' 'drivers/net/wireless/\(prism54/islpci_dev\.c\|rt2x00/rt2800usb\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    blobname 'iwmc3200wifi-\([ul]mac\|calib\)-sdio\.bin' drivers/net/wireless/iwmc3200wifi/sdio.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)ArrayDTM\[\(Boot\|Main\|Data\)ArrayLengthDTM\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192su/r8192S_FwImgDTM.h
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8192PciE\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\(DTM\)\?\[\(\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?Length\(DTM\)\?\)\?\][ ]=' drivers/staging/rtl8192su/rtl8192S_FwImgDTM.h
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    blobname 'RTL8192U[/]\(boot\|main\|data\)\.img' 'drivers/staging/rtl8192s\?u/r819xU_firmware\.c'
-    blob 'u8[ ]rtl8190_fw\(boot\|main\|data\)_array\[\][ ]=[ ]\?[{][^}]*[}][;]' 'drivers/staging/rtl8192s\?u/r8192xU_firmware_img\.c'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'BYTE[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc '\(BYTE\|unsigned[ ]char\)[ ]byVT3253\(InitTab\|B0\(_AGC4\?\)\?\)_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\[CB_VT3253\(B0\(_AGC4\?\)\?\)\?\(\(_INIT\)\?_FOR_\(RFMD\(2959\)\?\|AIROHA2230\|UW2451\|AGC\)\)\?\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'SCountryTable[ ]ChannelRuleTab\[CCODE_MAX[+]1\][ ]=' drivers/staging/vt6655/card.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    defsnc 'static[ ]const[ ]\(DWORD\|unsigned[ ]long\)[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6655/tcrc.c
-    defsnc 'const[ ]\(BYTE\|unsigned[ ]char\)[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6655/tkip.c
-    blobname 'prism2_ru\.\(hex\|fw\)' drivers/staging/wlan-ng/prism2fw.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    blob '#include[ ]["]me4\(00\|61\)0_firmware\.h["]\([\n][\n]*#include[ ]["]me4\(00\|61\)0_firmware\.h["]\)*' drivers/staging/me4000/me4000.c
-    blobna 'firm[ ]=[ ][^;]*xilinx_firm[^;]*[;]' drivers/staging/me4000/me4000.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\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|%s\)_\(pfp\|rlc\|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
-
-    # New in or modified for 2.6.32
-    blobname '\(cxgb3[/]\)\?ael20\(05_\(opt\|twx\)\|20_twx\)_edc\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc 'static[ ]const[ ]struct[ ]aper_size_info_32[ ]u3_sizes\[8\?\][ ]=' drivers/char/agp/uninorth-agp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[\(512\|ATKBD_KEYMAP_SIZE\)\][ ]=' drivers/input/keyboard/atkbd.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    accept '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_1\[\][ ]=[ ][{][^;]*0x8300[^;]*[}][;]' drivers/net/r8169.c
-    blob 'static[ ]void[ ]rtl8168d_[12]_hw_phy_config[(]void[ ]__iomem[ ][*]ioaddr[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/net/r8169.c
-    blobna 'rtl8168d_[12]_hw_phy_config[(]ioaddr[)][;]' drivers/net/r8169.c
-    blobna 'static[ ]\(const[ ]\)\?struct[ ]phy_reg_init_[12]\[\][ ]=[ ][{][\n 	{}0-9a-fx]*0x06,[ ]0xf8f9[\n 	{}0-9a-fx]*[}][;]' drivers/net/r8169.c
-    # This loads firmware to be flashed from filename provided through ethtool.
-    accept 'int[ ]be_load_fw[(]struct[ ]be_adapter[ ][^\n;{]*[)][ \n][{]\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/net/benet/be_main.c
-    defsnc '[	]u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9287\(Common\|Modes\(_\([tr]x_gain\)\)\?\)_9287_1_[01]\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271\(_1_0\)\?\[\]\[[26]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    defsnc 'static[ ]const[ ]u8[ ]lpphy_min_sig_sq_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u16[ ]lpphy_\(rev\(01\|2plus\)_noise_scale\|crs_gain_nft\|iqlo_cal\|rev[01]_ofdm_cck_gain\|\(a0_\)\?gain\|sw_control\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    defsnc 'static[ ]const[ ]u32[ ]lpphy_\(\(rev01_ps\|tx_power\)_control\|\(a0_\)\?gain_\(idx\|value\)\|papd_\(eps\|mult\)\)_table\[\][ ]=' drivers/net/wireless/b43/tables_lpphy.c
-    blobname 'v4l-saa7164-1\.0\.[23]\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]long[ ]limiter_times\[\][ ]=' drivers/media/radio/si4713-i2c.c
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    defsnc '[}][ ]csc_table\[\][ ]=' drivers/video/msm/mdp_csc_table.h
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    accept '[	]isar->firmware[ ]=[ ][&]load_firmware[;]' drivers/isdn/hardware/mISDN/mISDNisar.c
-    blobname 'isdn[/]ISAR\.BIN' drivers/isdn/hardware/mISDN/speedfax.c
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'RTL8192E[/]\(boot\|main\|data\)\.img' drivers/staging/rtl8192e/r819xE_firmware.c
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    accept '[ ][*][ ]File:[ ]main_usb\.c\([\n][ ][*]\([^\n/]*\|[^*\n/][/]*\)*\)*[\n][ ][*][/]\([\n][\n]*#\(undef[ ][^\n]*\|include[ ]["][^\n]*["]\)\)*[\n][\n]*#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob 'const[ ]BYTE[ ]abyFirmware\[\][ ]=[ ][{][^;]*[}][;]' drivers/staging/vt6656/firmware.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(static[ ]\)\?struct[ ]register_address_value_pair[\n]\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    blobname '\([/]tmp[/]\)\?RT30xxEEPROM\.bin' 'drivers/staging/rt3090/\(common/ee_efuse\.c\|rtmp_def\.h\)'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\([\n][\n]*#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt\(28[67]\|30[79]\)0[/]\(common[/]\)\?\)\?\)\?firmware\(_\(28[67]\|30[79]\)0\)\?\.h["]\)' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'FIRMWAREIMAGE_LENGTH[ ]==' drivers/staging/rt3090/common/rtmp_mcu.c
-    defsnc 'int[ ]wm831x_isinkv_values\[WM831X_ISINK_MAX_ISEL[ ][+][ ][1]\][ ]=' drivers/mfd/wm831x-core.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]__initconst[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8974_reg\[WM8974_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8974.c
-    defsnc 'static[ ]const[ ]u\(8\|16\)[ ]ak464[28]_reg\[\(AK4642_CACHEREGNUM\)\?\][ ]=' sound/soc/codecs/ak4642.c
-    accept 'int[ ]snd_hda_load_patch[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*hda_codec[^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' sound/pci/hda/hda_hwdep.c
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    blob 'SD8688[ ]firmware:[\n]*\([/]lib[/]firmware[^\n]*[\n]*\)*The[ ]images[^:]*:[\n]*[^\n]*[/]linux-firmware[^\n]*' Documentation/btmrvl.txt
-    defsnc 'static[ ]u8[ ]ibm405ex_fbdv_multi_bits\[\][ ]=' arch/powerpc/boot/4xx.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]struct[ ]ad714x_platf\(or\|ro\)m_data[ ]ad714[27]_\(\(spi\|i2c\)_\)\?platf\(or\|ro\)m_data[ ]=' arch/blackfin/mach-bf537/boards/stamp.c
-    blob 'static[ ]const[ ]u8[ ]lgs8g75_initdat\[\][ ]=[ ][{][^;]*[}][;]' drivers/media/dvb/frontends/lgs8gxx.c
-    blob 'static[ ]int[ ]lgs8g75_init_data[(][^\n;{]*[)][ \n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*lgs8g75_initdat[^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' drivers/media/dvb/frontends/lgs8gxx.c
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    accept '[<][<]\([/]Subtype[/]Type1\)\?[/]BaseFont[^ ]*[/]FontDescriptor[ ][0-9][0-9]*[ ]0[ ]R\([/]Type[/]Font\)\?[\n]\?[/]FirstChar[ ][0-9][0-9]*[/]LastChar[ ][0-9][0-9]*[/]Widths\[[\n][0-9 \n]*\]' 'Documentation/DocBook/v4l/.*\.pdf'
-
-    # New in 2.6.33
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blob '#define[ ]FW_VERSION\([ 	]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ 	]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3\(02\)\?x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u16[ ]bios_to_linux_keycode\[256\][ ]\(__initconst[ ]\)\?=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blob 'The[ ]ssinit[ ]program.*nsoniq.*sndscape.*sound[ ]weird\.' Documentation/sound/oss/README.OSS
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname '\(sndscape\|soundscape\)\.co\([?dx01234]\|%d\)' 'sound/isa/\(Kconfig\|sscape\.c\)\|Documentation/sound/oss/README\.OSS'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    blobname 'nouveau[/]nv\([0-9a-f][0-9a-f]\|%02x\)\.ctx\(prog\|vals\)' 'drivers/gpu/drm/nouveau/\(nv50_graph\|nouveau_grctx\)\.c'
-
-    # New in 2.6.34
-    blobname 'mts_mt9234\(mu\|zba\)\.fw' drivers/usb/serial/ti_usb_3410_5052.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '\(#[ ]\)\?\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl8192sfw\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-
-    # New in 2.6.35
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/char/n_gsm.c
-    defsnc 'static[ ]u8[ ]\(reset_atetm\|atetm_[12]port\|portsel_\(port[12]\|2port\)\)\[BIT2BYTE[(]LEN_\(ETM\|PORT_SEL\)[)]\][ ]=' drivers/infiniband/hw/qib/qib_iba7322.c
-    blobname 'qlogic[/]sd7220[.]fw' drivers/infiniband/hw/qib/qib_sd7220.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    blobname 'orinoco_ezusb_fw' drivers/net/wireless/orinoco/orinoco_usb.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]BUCK[123]_\(suspend_\)\?table\[\][ ]=' drivers/regulator/88pm8607.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]XGI\(fb_vrate\|_TV_filter\)\[\][ ]=' drivers/staging/xgifb/XGI_main.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330\(New\)\?_SR15\(_1\)\?\[8\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_cr40_1\[15\]\[8\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI330_TVDataStruct[ ][ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525[ip]\|750p\)\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(750p\|525[ip]\)\)Timing\[\][ ][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_HiTVGroup3\(Data\|Simu\|Text\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI330_Ren\(525\|750\)pGroup3\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_PanelDelayTblStruct[ ]XGI330_PanelDelayTbl\[\]' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_LVDSCRT1DataStruct[ ][ ]XGI_CHTVCRT1[UO]\(NTSC\|PAL\)\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    # qseed_table2 is kind of suspicious, but there's some regularity
-    # to it that makes me think it's just data.
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    blobname 'xc3028L\?-v[0-9]\+\.fw' drivers/staging/tm6000/tm6000-cards.c
-    defsnc 'static[ ]const[ ]struct[ ]chs_entry[ ]chs_table\[\][ ]=' drivers/mtd/sm_ftl.c
-    blobname 'asihpi[/]dsp\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.bin' sound/pci/asihpi/hpidspcd.c
-    defsnc 'static[ ]unsigned[ ]long[ ]ident_map\[32\][ ]=' kernel/exec_domain.c
-    defsnc 'static[ ]uint[ ]patch_2000\[\][ ]__initdata[ ]=' arch/powerpc/sysdev/micropatch
-    # Are these ucode patches really data?!?  They were taken as such
-    # since gNewSense started cleaning up Linux, but they look awfully
-    # suspicious to me.
-    defsnc '\(static[ ]\)\?uint[ ]patch_2[0ef]00\[\][ ]\(__initdata[ ]\)\?=' arch/powerpc/sysdev/micropatch.c
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[4\][ ]=' arch/arm/mach-s5pc100/clock.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobna '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*[(]f2255usb\.bin[)][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/media/video/s2255drv.c
-
-    # New in 2.6.36:
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-
-    # New in 2.6.37, up to -rc5.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)\?-0[-0-9]*\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/README'
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/README'
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/wl_iw\.c'
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/phy/wlc_phy_cmn\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/util/hndpmu\.c'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array[^\n]*\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|[mc][ec]\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\?\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-
-    # New in 2.6.39
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    blobname 'vntwusb\.fw' drivers/staging/vt6656/firmware.c
-    # New in 3.0.
-    accept 'resume[/]restore[,][ ]but[ ]they[ ]cannot[ ]do[ ]it[ ]by[ ]calling[ ]request_firmware[(][)]' Documentation/power/notifiers.txt
-    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	][	][	][	]0xe[0-7][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/p1022ds.dts
-    accept '[ ][ ][ ][ ]gzip[ ]-n[ ]--force[ ]-9[ ]--stdout[ ]["][$]ofile\.bin["][ ]>[ ]["][$]odir[/]otheros\.bld["]' arch/powerpc/boot/wrapper
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]struct[ ]nvc0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.h
-    defsnc 'static[ ]const[ ]u8[ ]sht15_crc8_table\[\][ ]=' drivers/hwmon/sht15.c
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    blobname 'drxd-a2-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blobname 'drxd-b1-1\.1\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    blob '[/][*][	]if[ ][(]\(reject\|request\)_firmware[(][&]state->fw[,][ ]["]drxd\.fw["][,][ ]state->dev[)]<0[)][ ][*][/]'
-    blobname 'drxd\.fw' drivers/media/dvb/frontends/drxd_hard.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    blobna 'www\.elandigitalsys[^\n]*download' drivers/mmc/host/Kconfig
-    blobname 'vub_\(default\.bin\|%04X%04X\)' drivers/mmc/host/vub300.c
-    blobna 'snprintf[(]vub300->vub_name[ ][+][^\n]*[,][ ]["]\.bin["][)][;]' drivers/mmc/host/vub300.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flexonenand_oob_128[ ]=' drivers/mtd/onenand/onenand_base.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(low\(est\)\?\|high\|mixed\)_ob_db\|high_power\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(radio\|baseband\|mac\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]u16[ ]mwifiex_data_rates\[MWIFIEX_SUPPORTED_RATES_EXT\][ ]=' drivers/net/wireless/mwifiex/cfp.c
-    accept '[	]\.helper[	][	]=[ ]NULL[,][\n][	]*\.firmware' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8787_uapsta\(_w1\)\?\.bin' drivers/net/wireless/mwifiex/main.h
-    blobname 'sd8787\.bin' drivers/net/wireless/mwifiex/sdio.c
-    blobna 'Copy[ ]sd8787\.bin[ ]to[^.]*[.]' drivers/net/wireless/mwifiex/README
-    blobname 'rtlwifi[/]rtl8192sefw\.bin' drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-    defsnc 'u32[ ]rtl8192sephy_reg_2t2rarray\[PHY_REG_2T2RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_changeto_1t[12]rarray\[PHY_CHANGETO_1T[12]RARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192sephy_reg_array_pg\[PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seradioa_1t_array\[RADIOA_1T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192semac_2t_array\[MAC_2T_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    defsnc 'u32[ ]rtl8192seagctab_array\[AGCTAB_ARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192se/table.c
-    accept 'Place[ ]isci_firmware\.bin[ ]in' drivers/scsi/isci/firmware/README
-    # This is not a code blob, it is just small data structures described in create_fw.[ch].
-    accept 'static[ ]const[ ]char[ ]blob_name\[\][ ]=[ ]["]isci_firmware\.bin["]' drivers/scsi/isci/create_fw.h
-    accept '[	][	]orom[ ]=[ ]isci_request_firmware' drivers/scsi/isci/init.c
-    accept 'MODULE_FIRMWARE[(]ISCI_FW_NAME[)][;]' drivers/scsi/isci/init.c
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    accept '[	]if[ ][(]request_firmware[(][&]fw[,][ ]ISCI_FW_NAME[,]' drivers/scsi/isci/probe_roms.c
-    accept '#define[ ]ISCI_FW_NAME[	][	]["]isci[/]isci_firmware\.bin["]' drivers/scsi/isci/probe_roms.h
-    defsnc 'static[ ]struct[ ]pll_limit[ ]\(cle266\|k800\|cx700\|vx855\)_pll_limits\[\][ ]=' drivers/video/via/hw.c
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    blobname 'wm8958_\(enh_eq\|mbc\(_vss\)\?\)\.wfw' sound/soc/codecs/wm8958-dsp2.c
-    blobname 'rtl_nic[/]rtl8168e-[12]\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e\[\][ ]=' drivers/net/r8169.c
-    blobname 'ti-connectivity[/]wl128x-fw\(-ap\)\?\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    defsnc 'static[ ]const[ ]u8[ ]tg3_tso_header\[\][ ]=' drivers/net/tg3.c
-    blobname 'ath6k[/]AR6003[/]hw2\.1\.1[/]\(otp\|athwlan\|athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    accept '[	]nvc0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*nvc0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    blobname 'nouveau[/]\(nv%02x_\)\?%s' 'drivers/gpu/drm/nouveau/nv[ce]0_graph\.c'
-    blobname 'radeon[/]SUMO2\?_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
-    blobname 'iwlwifi-\(105\|20[03]\?0\)-' drivers/net/iwlwifi/iwl-2000.c
-    blobname '__stringify[(]api[)][ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[1256]000\)\.c\)'
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/mac80211_if\.c'
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    # New in 3.2
-    blobname 'ath6k[/]AR600[0-9.]*[/]hw[0-9.]*[/][^/"]*\.\(bin\|z77\)' drivers/net/wireless/ath/ath6kl/core.h
-    accept 'userspace[,][ ]using[ ]the[ ]request_firmware[(][)][ ]function' Documentation/power/suspend-and-cpuhotplug.txt
-    defsnc 'static[ ]struct[ ]sh_keysc_info[ ]keysc_platdata[ ]=[ ]' arch/arm/mach-shmobile/board-kota2.c
-    defsnc 'static[ ]const[ ]u32[ ]rir_offset\[MAX_RIR_RANGES\]\[MAX_RIR_WAY\][ ]=' drivers/edac/sb_edac.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]s32[ ]wmi_rate_tbl\[\]\[2\][ ]=' drivers/net/wireless/ath/ath6kl/wmi.c
-    defsnc '[	]struct[ ]lcn_tx_iir_filter[ ]tx_iir_filters_\(cck\|ofdm\)\[\][ ]=' drivers/net/wireless/b43/phy_lcn.c
-    defsnc 'const[ ]u32[ ]b43_httab_0x1a_0xc0_late\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_lcntab_0x[01][0-9a-f]\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc '[	]b43_lcntab_tx_gain_tbl_2ghz_ext_pa_rev0\[B43_LCNTAB_TX_GAIN_SIZE\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]struct[ ]channel_list[ ]ChannelPlan\[\][ ]=' drivers/staging/rtl8192e/dot11d.c
-    defsnc 'u32[ ]Rtl8192PciE\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)Array\[\(PHY_REG_1T2R\|Radio[AB]_\|AGCTAB_\)ArrayLengthPciE\][ ]=' drivers/staging/rtl8192e/r8192E_hwimg.c
-    defsnc 'static[ ]u8[ 	]CCKSwingTable_\(Ch1_Ch13\|Ch14\)\[CCK_Table_length\]\[8\][ ]=' drivers/staging/rtl8192e/rtl_dm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(power\|emif[01]\)_pins\[\][ ]=' drivers/pinctrl/pinmux-u300.c
-    defsnc 'static[ ]const[ ]struct[ ]pll_div[ ]codec_\(master\|slave\)_pll_div\[\][ ]=' sound/soc/codecs/rt5631.c
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]\.download_firmware[ ]=[ ]it913x_download_firmware[,][\n][	]\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-it9137-01\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    blobname '%s[/]bdata\.%s\.bin' drivers/net/wireless/ath/ath6kl/init.c
-    blobna 'Used[ ][(]for[ ]now[)][^*]*\([*]\+[^/*][^*]*\)*[*]*["]bdata\.bin["][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/ath/ath6kl/init.c
-    blobname 'mrvl[/]pcie8766_uapsta\.bin' 'drivers/net/wireless/mwifiex/pcie\.[ch]'
-    accept '#define[ ]FIRMWARE[ \t]*["]usbduxsigma_firmware\.bin["]' drivers/staging/comedi/drivers/usbduxsigma.c
-    accept 'MODULE_DESCRIPTION[(]["]Stirling[/]ITL[ ]USB-DUX[ ]SIGMA[^"]*["][)][;][\n]MODULE_LICENSE[(]["]GPL["][)][;][\n]MODULE_FIRMWARE[(]FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbduxsigma.c
-    blobname 'as102_data[12]_[sd]t\.hex' drivers/staging/media/as102/as102_fw.c
-    blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)Array\[\(Boot\|Main\|Data\)ArrayLengthPciE\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192e/r8192E_hwimg.c
-    blobna '\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\)*' drivers/staging/rtl8192e/r8192E_firmware.c
-    blobname 'imx[/]sdma[/]sdma-imx5[13]\.bin' 'arch/arm/boot/dts/imx5[13]-\(babbage\|ard\|evk\|qsb\|smd\)\.dts'
-    blobname 'libertas[/]usb8388_olpc\.bin' drivers/net/wireless/libertas/if_usb.c
-    blobname 'rtlwifi[/]rtl8192cfwU\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-3\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'pcxhr[/]%s' sound/pci/pcxhr/pcxhr_hwdep.c
-    blobname 'mrvl[/]sd8797_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    blobname 's5p-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'rtl_nic[/]rtl8168f-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-
-    blobna '[/][*][\n][ ][*][ ]AMD[ ]microcode[ ]firmware[ ]naming[ ]convention[^*]*\([*]\+[^/*][^*]*\)*[*]*amd-ucode[/][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' arch/x86/kernel/microcode_amd.c
-    blobname 'amd-ucode[/]microcode_amd_fam\(%\.2x\|[0-9a-f]*\)h\.bin' arch/x86/kernel/microcode_amd.c
-
-    # New in 3.3.
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl2g_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_\(workaround\[2\]\[4\]\|wa_phy6_radio11_ghz2\)[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]da9052_chg_current_lim\[2\]\[DA9052_CHG_LIM_COLS\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]u32[ ]const[ ]vc_tbl\[3\]\[68\]\[2\][ ]=' drivers/power/da9052-battery.c
-    defsnc 'static[ ]const[ ]int[ ]PIO2_CHANNEL_BANK\[32\][ ]=' drivers/staging/vme/devices/vme_pio2.h
-    defsnc 'static[ ]const[ ]struct[ ]sirfsoc_baudrate_to_regv[ ]baudrate_to_regv\[\][ ]=' drivers/tty/serial/sirfsoc_uart.c
-    defsnc 'static[ ]const[ ]struct[ ]dispc_coef[ ]coef[35]_M\(1[123469]\|2[26]\|32\)\[8\][ ]=' drivers/video/omap2/dss/dispc_coefs.c
-    defsnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]=' lib/clz_tab.c
-    defsnc 'static[ ]struct[ ]cs42l73_mclk_div[ ]cs42l73_mclk_coeffs\[\][ ]=' sound/soc/codecs/cs42l73.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
-    defsnc 'static[ ]int[ ]_process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\(request\|maybe_reject\)_firmware' sound/soc/codecs/sigmadsp.c
-    defsnc 'int[ ]process_sigma_firmware\(_regmap\)\?[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*_process_sigma_firmware' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware_regmap[)]' sound/soc/codecs/sigmadsp.c
-    accept 'extern[ ]int[ ]process_sigma_firmware_regmap[(][^)]*[)][;]' sound/soc/codecs/sigmadsp.h
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
-    # These appear to be identifiers within the device itself,
-    # used to get information from it.
-    accept '#define[ ]LANCER_\(FW_DUMP\|VPD_[PV]F\)_FILE[	]*["][/]\(dbg[/]dump\.bin\|vpd[/]ntr_[pv]f\.vpd\)["]' drivers/net/ethernet/emulex/benet/be_cmds.h
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    blobname 'dvb-usb-it9135-0[12]\.fw' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    blobname 'dvb-usb-hauppauge-hvr930c-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'brcm[/]brcmfmac\.\(bin\|txt\)' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-
-    # New in 3.4
-    blobname 'dvb-fe-xc5000-1\.6\.114\.fw' drivers/media/common/tuners/xc5000.c
-    blobname 'dvb-fe-xc5000c-41\.024\.5\.fw' drivers/media/common/tuners/xc5000.c
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.\(SD3[12]\|WB31\|CUSTOM\|DB132\)\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    blobname 'ar3k[/]\(AthrBT_0x%08x\.dfu\|ramps_0x%08x_%d%s\)' drivers/bluetooth/ath3k.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.39
-    accept '[#]define[ ]FIRMWARE_AR7010[ 	]*["]ar7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]ar7010_1_1\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]ar9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # as in 2.6.35
-    accept '[	]ATH9K_FW_USB_DEV[(]0x\(9271\|1006\)[,][ ]["]ar9271\.fw["][)][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]dev_info[(][&]hif_dev->udev->dev[,][ ]["]ath9k_htc:[^\n"]*["][,][\n][	 ]*["]ar9271\.fw["][,]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]fw_name[,][ ][&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-
-    # New in 3.10
-    accept '[ \t]*edid[ ]=[ ]\[00[ ]FF[ 0-9A-F\n\t]*\]' arch/powerpc/boot/dts/ac14xx.dts
-    accept 'K256:[\n][\t]\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx-asm.S
-    accept 'K256:[\n][\t]\.long[\t]0x428a2f98[,][0-9a-f0x,]*\([\n][\t]\.long[\t][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-avx2-asm.S
-    accept 'K256:[\n][ ]*\.long[ ]0x428a2f98[,][0-9a-f0x,]*\([\n][ ]*\.long[ ][0-9a-f0x,]*\)*' arch/x86/crypto/sha256-ssse3-asm.S
-    accept 'K512:[\n][\t]\.quad[ ]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[ ][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-\(avx\|ssse3\)-asm\.S'
-    accept 'K512:[\n][\t]\.quad[\t]0x428a2f98d728ae22[,][0-9a-f0x,]*\([\n][\t]\.quad[\t][0-9a-f0x,]*\)*' 'arch/x86/crypto/sha512-avx2-asm.S'
-    defsnc 'static[ ]const[ ]uint32_t[ ]axi_clkgen_lock_table\[\][ ]=' drivers/clk/clk-axi-clkgen.c
-    defsnc 'static[ ]const[ ]int[ ]arizona_micd_levels\[\][ ]=' drivers/extcon/extcon-arizona.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v13_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    defsnc 'static[ ]const[ ]u32[ ]\(evergreen\|cedar\|supersumo\|wrestler\|barts\|turks\|caicos\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cypress\|redwood\|cedar\|juniper\)_mgcg_init\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]u32[ ]\(cayman\|dvst\|scrapper\)_golden_registers2\?\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]\(r7xx\|rv7[1347]0\)_\(golden_registers\|mgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/rv770.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\|oland\|hainan\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]verde_pg_init\[\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u32[ ]hainan_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]s16[ ]temp_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u8[ ]via_lut\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]uint64_t[ ]crc_table\[256\][ ]=' drivers/md/bcache/util.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]ofsm_init_it9135_v[12]\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_it9135_\(38\|51\|52\|60\|61\|62\)\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsc 'static[ ]struct[ ]regdata[ ]mb86a20s_init2\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    defsnc 'static[ ]const[ ]u8[ ]channel_registers\[\][ ]=' drivers/media/i2c/tw2804.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]si476x_property_range[ ]valid_ranges\[\][ ]=' drivers/mfd/si476x-prop.c
-    defsnc '[\t]static[ ]const[ ]unsigned[ ]int[ ]t[45]_reg_ranges\[\][ ]=' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_ntab_antswctl_r3\[4\]\[32\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_wa_phy6_radio11_ghz2[ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsc 'static[ ]struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[4\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u16[ ]b43_lcntab_sw_ctl_4313_epa_rev0\[\][ ]=' drivers/net/wireless/b43/tables_phy_lcn.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5592_xtal[24]0\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'u32[ ]RTL8188EEPHY_REG_\(1TARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EE_RADIOA_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEMAC_1T_ARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsnc 'u32[ ]RTL8188EEAGCTAB_1TARRAY\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8188ee/table.c
-    defsc 'static[ ]const[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'drivers/pinctrl/sh-pfc/pfc-\(r8a77\(40\|79\)\|sh72\(03\|69\)\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[ab]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]int[ ]ab8540_charge_\(output\|input\)_curr_map\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]ldo_vaux56_ab8540_voltages\[\][ ]=' drivers/regulator/ab8500.c
-    accept '[\t]rproc->firmware[ ]=[ ]p[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]unsigned[ ]char[ ]vop_6010_\(ntsc\|pal\)_\(d1\|cif\)\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
-    defsnc 'u8[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]u32[ ]s_adwCrc32Table\[256\][ ]=' drivers/staging/vt6656/tcrc.c
-    defsnc 'const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]tas5086_reg_defaults\[\][ ]=' sound/soc/codecs/tas5086.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8688\(_helper\)\?\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname 'mrvl[/]sd8897_uapsta\.bin' drivers/bluetooth/btmrvl_sdio.c
-    blobname '\(\(atsc\|tdmb\)_denver\|cmmb_\(ming_app\|venice_12mhz\)\|dvbh\?_rio\|fm_radio\(_rio\)\?\|isdbt_\(pele\|rio\)\)\.inp' drivers/media/common/siano/smscoreapi.h
-    blobname 'tigon[/]tg357766\.bin' drivers/net/ethernet/broadcom/tg3.c
-    blobname 'cxgb4[/]t5fw\.bin' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    blobname 'rtl_nic[/]rtl8106e-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-[23]\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'mwl8k[/]fmimage_8764_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'go7007[/]go7007fw\.bin' drivers/staging/media/go7007/go7007-driver.c
-    blobname 'go7007[/]go7007tv\.bin' drivers/staging/media/go7007/go7007-fw.c
-    blobname 'go7007[/]\(s2250-[12]\|px-\(m\|tv\)402u\|lr192\|wis-startrek\)\.fw' drivers/staging/media/go7007/go7007-loader.c
-    blobname 'intel[/]ibt-hw-%x\.%x\(\.%x-fw-%x\.%x\.%x\.%x\.%x\)\?\.bseq' drivers/bluetooth/btusb.c
-    blobname 'radeon[/]\(RV710\|CYPRESS\|SUMO\|TAHITI\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'imspcu\.fw' drivers/input/misc/ims-pcu.c
-    blobname 'fimc_is_fw\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'setfile\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    blobname 'rtlwifi[/]rtl8188efw\.bin' drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODA_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-
-    # New in 3.12.
-    blobname 's5p-mfc-v7\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
-    blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
-    defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    accept '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
-    defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a3xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    blobname 'a3[03]0_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_\(bonaire\|saturn\)_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]struct[ ]kv_lcac_config_values[ ]cpl_local_cac_cfg_kv\[\][ ]=' drivers/gpu/drm/radeon/kv_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]imx_i2c_clk_pair[ ]\(imx\|vf610\)_i2c_clk_div\[\][ ]=' drivers/i2c/busses/i2c-imx.c
-    defsnc 'static[ ]const[ ]u16[ ]apds9300_lux_ratio\[\][ ]=' drivers/iio/light/apds9300.c
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_4313_ipa_rev0_combo\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    accept '[	][	]adapter->firmware[ ]=[ ]NULL' drivers/net/wireless/mwifiex/main.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]const[ ]int[ ]bq24190_\(ccc_ichg\|cvc_vreg\)_values\[\][ ]=' drivers/power/bq24190_charger.c
-    blobname '[(]i\.e\.[ ]["]asfep\.bin["][)][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '[(]["][/]etc[/]dgap[/]xrfep\.bin["][)][;][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '["][/]lib[/]firmware[/]dgap[/]["]' drivers/staging/dgap/downld.c
-    blobname '\(fx\|cx\|cxp\|ibm\(cx\|en\)\|xr\|sx\|pci\)\(bios\|fep\|con\|host\)\.bin' drivers/staging/dgap/downld.c
-    defsnc 'static[ ]const[ ]struct[ ]msi3101_gain[ ]msi3101_gain_lut_\(120\|245\|1000\)\[\][ ]=' drivers/staging/media/msi3101/sdr-msi3101.c
-    defsnc 'static[ ]struct[ ]ch_freq[ ]ch_freq_map\[\][ ]=' drivers/staging/rtl8188eu/core/rtw_rf.c
-    defsnc 'static[ ]\(const\)\?[ ]\?u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u32[ ]T[ed]0\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u8[ ]Td4s\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]u32[ ]array_\(agc_tab\|phy_reg\)_\(1t\|pg\)_8188e\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_BB.c
-    defsnc 'static[ ]u32[ ]array_MAC_REG_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_RF.c
-    defsnc '[	]u8[	]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/HalPhyRf.c
-    defsnc 'static[ ]const[ ]u16[ ]dB_Invert_Table\[8\]\[12\][ ]=' drivers/staging/rtl8188eu/hal/odm.c
-    blobname 'rtl8188E[/\\]*rtl8188efw\.bin' drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-    defsnc 'static[ ]const[ ]unsigned[ ]long[ ]K\[64\][ ]=' drivers/staging/rtl8188eu/include/rtw_security.h
-    defsnc '[	]static[ ]const[ ]struct[ ]msm_baud_map[ ]table\[\][ ]=' drivers/tty/serial/msm_serial.c
-    defsnc 'static[ ]u8[ ]hx8369_seq_gamma_curve_related\[\][ ]=' drivers/video/backlight/hx8357.c
-    defsnc 'static[ ]const[ ]wchar_t[ ]t2_\(0[012345]\|1[def]\|2[14cd]\|a[67]\|ff\)\[256\][ ]=' fs/cifs/winucase.c
-    accept '[	]*\(\(el\)\?if[ ]\[[ ]-f\|cp[ ]-v[ ]--\)[ ]["][$][{]objtree[}][/]arch[/]mips[/]boot[/]\(compressed[/]\)\?vmlinux\.bin["]' scripts/package/buildtar
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]pcm1681_reg_defaults\[\][ ]=' sound/soc/codecs/pcm1681.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8997_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm8997.c
-    blob '[\t]0xE1[,][ ]0x88[,][ ]0x10[,][ ]0x00[,][ ]0x0B[,][ ]0x00[,][ ]0x01[,][ ]0x00[,]\([\n][\t][0-9xA-F, ]*\)*' drivers/staging/rtl8188eu/hal/Hal8188EFWImg_CE.c
-
-    # New in 3.13
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-drxk-01\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?firmware-2\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43\(143\|241b[04]\|29\|3[045]\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7265-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    accept '[\t][\t]brightness-levels[ ][=][ ][<][0-9 \t\n]*[>][;]' arch/arm/boot/dts/imx28-tx28.dts
-    accept '[\t]echo[ ]["]mic[/]uos\.img["][ ]' Documentation/mic/mpssd/micctrl
-    accept '[\t]mdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/host/mic_sysfs.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ \t\n]*mdev->\(ramdisk\|firmware\)[,][ ]mdev->sdev->parent[)][;]' drivers/misc/mic/host/mic_x100.c
-    accept '[\t]*["]\(ramdisk\|firmware\)[ ]request_firmware[ ]failed' drivers/misc/mic/host/mic_x100.c
-    defsnc 'static[ ]const[ ]struct[ ]dsi_clock_table[ ]dsi_clk_tbl\[\][ ]=' drivers/gpu/drm/i915/intel_dsi_pll.c
-    defsnc 'uint32_t[ ]nv108_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
-    defsnc 'uint32_t[ ]nva3_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
-    defsnc 'uint32_t[ ]nvc0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
-    defsnc 'uint32_t[ ]nvd0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_hawaii_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    accept '[\t]["]edid[/]\(1024x768\|1280x1024\|1600x1200\|1680x1050\|1920x1080\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc '[\t]unsigned[ ]char[ ]buf\[\][ ]=' drivers/hid/hid-sony.c
-    blobname 'dvb-fe-cx24117\.fw' drivers/media/dvb-frontends/cx24117.c
-    blobname 'vpdma-1b8\.bin' drivers/media/platform/ti-vpe/vpdma.c
-    defsnc 'static[ ]const[ ]u8[ ]ov361x_start_\(2048\|1600\|1024\|640\|320\|160\)\[\]\[2\][ ]=' drivers/media/usb/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]tuning_blk_pattern_[48]bit\[\][ ]=' drivers/mmc/host/dw_mmc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_8192_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc '[\t]static[ ]u8[ ]PN9Data\[\][ ]=' drivers/net/wireless/ath/ath9k/main.c
-    blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-    defsnc 'static[ ]s32[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rtlwifi[/]rtl8188eufw\.bin' drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc '[}][ ]test2\[\][ ]=' lib/random32.c
-    defsnc 'static[ ]const[ ]struct[ ]hda_verb[ ]hp_bnb13_eq_verbs\[\][ ]=' sound/pci/hda/patch_sigmatel.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]aic3x_reg\[\][ ]=' sound/soc/codecs/tlv320aic3x.c
-    blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-
-    # New in 3.13.2
-    blobname 'rtlwifi[/]rtl8192cufw_\([AB]\|TMSC\)\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-
-    # New in 3.14
-    blobname 'dvb-usb-technisat-cablestar-hdci-drxk\.fw' drivers/media/usb/dvb-usb-v2/az6007.c
-    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'brcm[/]brcmfmac43362-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac4339-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'mrvl[/]usb8897_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
-    blobname 'cbfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
-
-    # New in 3.14.6
-    blobname 'radeon[/]\(%s\|BONAIRE\|HAWAII\|TAHITI\|PITCAIRN\|VERDE\|OLAND\|HAINAN\)_mc2\.bin' 'drivers/gpu/drm/radeon/\(cik\|si\)\.c'
-
-    # New in 3.15
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nvc0_graph_init[\n]nvc0_graph_init_\(main\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'static[ ]const[ ]u32[ ]godavari_golden_registers\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'brcm[/]brcmfmac4354-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname '%s%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
-    blobname 'ti-connectivity[/]wl18xx-fw-3\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ql2700_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-
-    # New in 3.16
-    defsnc '[\t]*atmel[,]pll-clk-output-ranges[ ]=[ ]<' 'Documentation/devicetree/bindings/clock/at91-clock\.txt\|arch/arm/boot/dts/at91sam9x5\.dtsi'
-    blobname 'imx[/]sdma[/]sdma-imx25\.bin' arch/arm/boot/dts/imx25.dtsi
-    blobname 'imx[/]sdma[/]sdma-imx35\.bin' arch/arm/boot/dts/imx35.dtsi
-    blobname 'imx[/]sdma[/]sdma-imx50\.bin' arch/arm/boot/dts/imx50.dtsi
-    blobname 'sdma-imx53\.bin' arch/arm/boot/dts/imx53-tx53.dtsi
-    defsnc 'struct[ ]sock_filter[ ]code\[\][ ]=' Documentation/networking/filter.txt
-    initnc '\.L\(Forward\|Reverse\)_Sbox:[\n][\t]\.byte[\t]*' arch/arm64/crypto/aes-neon.S
-    initnc '\.Lsha2_rcon:[\n][\t]\.word[\t]*' arch/arm64/crypto/sha2-ce-core.S
-    defsnc 'static[ ]const[ ]u8[ ]sata_phy_config[12]\[\][ ]*=' arch/mips/netlogic/xlp/ahci-init-xlp2.c
-    accept '[	]*interrupts[ ]=[ ]<108[ ]0\([\n][	 ]*1[012][0-9][ ]0\)*>[;]' arch/powerpc/boot/dts/akebono.dts
-    defsnc '[\t]static[ ]int[ ]sysdiv_code_to_x2\[\][ ]=' arch/powerpc/platforms/512x/clock-commonclk.c
-    accept '[#][#][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_avx-x86_64.S
-    defsc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|224\|256\|384\|512\)_\(aes\|des\|des3_ede\)_cbc_enc_tv_temp\[\][ ]=' crypto/testmgr.h
-    accept '#define[ \t]*ACPI_TABLE_FILE_SUFFIX[\t ]*["]\.dat["]' drivers/acpi/acpica/acapps.h
-    accept '[ ][*][ ]request_firmware\(_direct\)\?:[ ]-[ ]load[ ]firmware[ ]directly[ ]without[ ]usermode[ ]helper' drivers/base/firmware_class.c
-    accept '[ ][*][ ]This[ ]function[ ]works[ ]pretty[ ]much[ ]like[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'int[ ]request_firmware_direct[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,][ ]FW_OPT_UEVENT[)][;]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL_GPL[(]request_firmware_direct[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]armada_375_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-375.c
-    defsnc 'static[ ]const[ ]int[ ]armada_38x_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-38x.c
-    defsnc 'static[ ]struct[ ]cpufreq_frequency_table[ ]s3c64xx_freq_table\[\][ ]=' drivers/cpufreq/s3c64xx-cpufreq.c
-    defsnc 'static[ ]const[ ]u8[ ]ccp_sha\(1\|224\|256\)_zero\[CCP_SHA_CTXSIZE\][ ]=' drivers/crpto/ccp/ccp-ops.c
-    blobname 'ast_dp501_fw\.bin' drivers/gpu/drm/ast/ast_dp501.c
-    accept '[\t]["]edid[/]\(800x600\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]void[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_5420_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    # These seem too sparse to be code.
-    defsnc 'static[ ]const[ ]u32[ ]gen6_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen6.c
-    defsnc 'static[ ]const[ ]u32[ ]gen7_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen7.c
-    defsnc 'static[ ]const[ ]u32[ ]gen8_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen8.c
-    defsnc 'nv50_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
-    defsnc 'nv84_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
-    defsnc 'nva0_disp_ovly_mthd_base[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nva0.c
-    defsnc 'nvd0_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
-    defsnc 'nve0_disp_\(mast_mthd_head\|ovly_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
-    defsnc 'gm107_grctx_init_\(\(icmd\|b097\|fe\|ds\|pd\|be\|setup\|tex\|mpc\|sm\|wwdx\)_0\|gpc_unk_2\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxgm107.c
-    defsnc 'nv108_grctx_init_\(icmd\|fe\|ds\|pd\|rstr2d\|be\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnv108.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|fe\|memfmt\|rstr2d\|prop\|setup\|crstr\|zcullr\|wwdx\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|setup\|wwdx\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc4_grctx_init_\(tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc4.c
-    defsnc 'nvc8_grctx_init_\(icmd\|setup\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(ds\|pd\|setup\|tex\|wwdx\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|fe\|ds\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|fe\|memfmt\|ds\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(icmd\|a197\|fe\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]gm107_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5.h
-    defsnc 'uint32_t[ ]nv108_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h
-    defsnc 'uint32_t[ ]gm107_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5.h
-    defsnc 'uint32_t[ ]nv108_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
-    defsnc 'gm107_graph_init_\(main\|tpccs\|tex\|sm\|be\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/gm107.c
-    defsnc 'nv108_graph_init_\(main\|l1c\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv108.c
-    defsnc 'nvc4_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc4.c
-    defsnc 'nvc8_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd9_graph_init_\(gpc_unk_1\|sm_0\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(\(main\|l1c\|sm\|be\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_\(\(l1c\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc 'static[ ]u8[ ]const[ ]ld9040_gammas\[25\]\[22\][ ]=' drivers/gpu/drm/panel/panel-ld9040.c
-    defsnc 'static[ ]void[ ]s6e8aa0_panel_cond_set[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*s6e8aa0_dcs_write_seq_static[(]ctx[,][\n\t0x0-9a-f, ]*[)][;]' drivers/gpu/drm/panel/panel-s6e8aa0.c
-    defsnc 'static[ ]const[ ]s6e8aa0_gamma_table[ ]s6e8aa0_gamma_tables_v\(142\|96\|32\)\[GAMMA_LEVEL_NUM\][ ]=' drivers/gpu/drm/panel/panel-s6e8aa0.c
-    blobname 'radeon[/]BONAIRE_vce\.bin' drivers/gpu/drm/radeon/radeon_vce.c
-    defsnc '[\t]static[ ]const[ ]__u8[ ]sixaxis_leds\[10\]\[4\][ ]=' drivers/hid/hid-sony.c
-    defsnc '[\t]union[ ]sixaxis_output_report_01[ ]report[ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]int[ ]twl4030_therm_tbl\[\][ ]=' drivers/iio/adc/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]linear_segments[ ]strength_to_db_table\[\][ ]=' drivers/media/dvb-frontends/dib8000.c
-    blobname 'dvb-fe-drxj-mc-1\.0\.8\.fw' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    defsnc 'static[ ]const[ ]u16[ ]nicam_presc_table_val\[43\][ ]=' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    accept '[\t][\t]*demod->firmware[ ]=[ ]\(fw\|NULL\)[;]' drivers/media/dvb-frontends/drx39xyj/drxj.c
-    blobname 'dvb-demod-m88ds3103\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88ds3103_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
-    blobname 'dvb-demod-si2168-02\.fw' drivers/media/dvb-frontends/si2168_priv.h
-    blobname 's5k5baf-cfg\.bin' drivers/media/i2c/s5k5baf.c
-    defsnc 'static[ ]const[ ]u16[ ]scaler_[hv]s_coeffs\[1[35]\]\[SC_NUM_PHASES[ ][*][ ]2[ ][*][ ]SC_[HV]_NUM_TAPS\][ ]=' drivers/media/platform/ti-vpe/sc_coeff.h
-    defsnc 'static[ ]const[ ]struct[ ]si4713_start_seq_table[ ]start_seq\[\][ ]=' drivers/media/radio/si4713/radio-usb-si4713.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_gain[ ]e4000_if_gain_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]dtcs033_usb_requests[ ]dtcs033_start_reqs\[\][ ]=' drivers/media/usb/gspca/dtcs033.c
-    defsnc 'static[ ]struct[ ]idxdata[ ]tbl_\(\(middle\|end\)_hvflip\(_\(low\|big\)\)\?\|init_post_alt_\(low[123]\|big\|3B\)\)\[\][ ]=' drivers/media/usb/gspca/gl860/gl860-mi2020.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revd_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]tuning_block_128\[\][ ]=' drivers/mmc/host/sdhci-msm.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]=' drivers/mtd/nand/davinci_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]ecc_layout_[24]KB_bch[48]bit[ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    defsnc '[\t]static[ ]char[ ]packet\[\][ ]=' drivers/net/ethernet/intel/i40e/i40e_txrx.c
-    defsnc 'u8[ ]netvsc_hash_key\[HASH_KEYLEN\][ ]=' drivers/net/hyperv/rndis_filter.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_buffalo\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_cus227_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_common_\(mixed_\)\?rx_gain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_modes_\(low\|mix\|high\)_ob_db_tx_gain\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p[01]_\(\(mac\|baseband\|radio\)_core\|modes_\(no_\)\?xpa_tx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p0_\(baseband\|radio\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_\(phy\|radio\)_rev\([34568]\|7_9\|11\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_noisevar_r3\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'iwlwifi-8000-' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname 'iwl_nvm_8000\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
-    defsnc 'static[ ]const[ ]u8[ ]iwl_nvm_channels_family_8000\[\][ ]=' drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
-    defsnc 'static[ ]const[ ]u16[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rsi_91x\.fw' drivers/net/wireless/rsi/rsi_common.h
-    defsnc 'static[ ]const[ ]u32[ ]RF_GAIN_TABLE\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
-    defsnc 'static[ ]const[ ]u8[ ]\(cck_ofdm_gain_settings\|rtl8225se_tx_power_cck\(_ch14\)\?\|ZEBRA_AGC\|OFDM_CONFIG\)\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
-    defsnc '[\t]u16[ ]toshiba_smid1\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/hw.c
-    blobname 'rtlwifi[/]rtl8723befw\.bin' drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-    defsnc 'u32[ ]RTL8723BE\(PHY_REG\|_RADIOA\|MAC\|AGCTAB\)_\(1T_\?ARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwfi/rtl8723be/table.c
-    defsnc 'static[ ]\(const[ ]unsigned[ ]\)\?int[ ]tps65864[03]_sm2_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]uint32_t[ ]ql27xx_fwdt_default_template\[\][ ]=' drivers/scsi/qla2xxx/qla_tmpl.c
-    blobname 'dgap[/]\(sx\|cxp\|pci\|xr\)\(bios\|fep\)\.bin' drivers/staging/dgap/dgap.c
-    accept '[\t][ ]*kernel[ ]firmware[ ]framework[,][ ]request_firmware[(][)]' drivers/staging/gs_fpgaboot/README
-    defsnc 'static[ ]u8[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc '[\t]u8[ ]data_ptr\[36\][ ]=' drivers/staging/keucr/smscsi.c
-    # This is a default for the user-supplied fpga configuration; it
-    # is overridable with a module parameter.
-    accept 'static[ ]char[ \t]*[*]file[ ]=[ ]["]xlinx_fpga_firmware\.bit["][;]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    blobname '\(ti1273\(_\(pre\)\?le\)\?\|bc[m4]fw\)\.bin' drivers/staging/nokia_h4p/nokia_fw.c
-    defsnc '[\t]u8[ ]channel5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/hw.c
-    blobname 'rtlwifi[/]rtl8192eefw\.bin' drivers/staging/rtl8192ee/rtl8192ee/sw.c
-    defsnc 'u32[ ]RTL8192EE_\(PHY_REG\|RADIO[AB]\|MAC\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/table.c
-    defsnc '[\t]u8[ ]Channel_5G\[45\][ ]=' drivers/staging/rtl8723au/core/rtw_mlme_ext.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\]=' drivers/staging/rtl8723au/core/rtw_security.c
-    defsnc 'u32[ ]Rtl8723UPHY_REG_Array_PG\[Rtl8723UPHY_REG_Array_PGLength\][ ]=' drivers/staging/rtl8723au/hal/Hal8723UHWImg_CE.c
-    defsnc 'static[ ]u32[ ]Array_\(AGC_TAB\|PHY_REG\)_\(1T\|PG\)_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
-    defsnc 'static[ ]u32[ ]Array_MAC_REG_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
-    blobname 'rtlwifi[/]rtl8723aufw_\(A\|B\(_NoBT\)\?\)\.bin' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-    defsnc 'u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ab]_[np]_txpwrtrack\[\]\[DELTA_SWINGIDX_SIZE\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet_8821\[TOTAL_RESERVED_PKT_LEN_8821\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet_8812\[TOTAL_RESERVED_PKT_LEN_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
-    defsnc '[\t]u8[ ]channel_5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' 'drivers/staging/rtl8821ae/rtl8821ae/\(hw\|phy\)\.c'
-    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/phy.c
-    blobname 'rtlwifi[/]rtl8821aefw\.bin' drivers/staging/rtl8821ae/rtl8821ae/sw.c
-    defsnc 'u32[ ]RTL88\(12\|21\)AE_\(\(PHY\|MAC\)_REG\|RADIO[AB]\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/table.c
-    accept '#define[ ]CONFIG_PATH[\t]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6656/device.h
-    defsnc 'static[ ]const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    blobname 'moxa[/]moxa-\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.fw' drivers/usb/serial/mxuport.c
-    accept '#define[ \t]request_firmware_direct[ \t]request_firmware' include/linux/firmware.h
-    accept '[\t]report_missing_free_firmware[^\n]*[\n][\t]retval[ ]=[ ]request_firmware_direct[(]' include/linux/firmware.h
-    defsnc 'const[ ]u8[ ]crc7_be_syndrome_table\[256\][ ]=' lib/crc7.c
-    defsnc 'static[ ]struct[ ]bpf_test[ ]tests\[\][ ]=' lib/test_bpf.c
-    defsnc '[\t]static[ ]struct[ ]sock_filter[ ]ptp_filter\[\][ ]__initdata[ ]=' net/core/ptp_classifier.c
-    blobname 'adau1761\.bin' sound/soc/codecs/adau1761.c
-    accept '[\t][\t]ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][\n][\t ]*ADAU1761_FIRMWARE[)][;]' sound/soc/codecs/adau1761.c
-    blobname 'adau1[37]81\.bin' sound/soc/codecs/adau1781.c
-    accept '[\t][\t]firmware[ ]=[ ]ADAU1[37]81_FIRMWARE[;]\([\n][\n]*[\t][^\n]*\)*ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][ ]firmware[)][;]' sound/soc/codecs/adau1781.c
-    blobna 'adau17x1_load_firmware' sound/soc/codecs/adau17x1.c
-    accept 'int[ ]adau17x1_load_firmware[(]' 'sound/soc/codecs/adau17x1\.[ch]'
-    accept 'EXPORT_SYMBOL_GPL[(]adau17x1_load_firmware[)][;]' sound/soc/codecs/adau17x1.c
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware_regmap[(]dev[,][ ]adau->regmap[,][ ]firmware[)][;]' sound/soc/codecs/adau17x1.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]adau1977_reg_defaults\[\][ ]=' sound/soc/codecs/adau1977.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak4641_reg_defaults\[\][ ]=' sound/soc/codecs/ak4641.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak464[28]_reg\[\][ ]=' sound/soc/codecs/ak4642.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5645_reg\[\][ ]=' sound/soc/codecs/rt5645.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5651_reg\[\][ ]=' sound/soc/codecs/rt5651.c
-    defsnc 'int[ ]_process_sigma_firmware[(]' sound/soc/codecs/sigmadsp.c
-    accept 'EXPORT_SYMBOL_GPL[(]_process_sigma_firmware[)]' sound/soc/codecs/sigmadsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta350_regs\[\][ ]=' sound/soc/codecs/sta350.c
-    defsnc 'static[ ]const[ ]struct[ ]aic31xx_rate_divs[ ]aic31xx_divs\[\][ ]=' sound/soc/codecs/tlv320aic31xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8974_reg_defaults\[\][ ]=' sound/soc/codecs/wm8974.c
-    blobname 'intel[/]IntcSST[12]\.bin' sound/soc/intel/sst-acpi.c
-    blobname 'intel[/]fw_sst_0f28\.bin-i2s_master' sound/soc/intel/sst-acpi.c
-    defsnc 'static[ ]unsigned[ ]char[ ]bcd2000_init_sequence\[\][ ]=' sound/usb/bcd2000/bcd2000.c
-    blobna '[ ][*][ ]xxd[ ]-r[ ]-p[ ]mXTXXX[^\n]*maxtouch\.fw[\n][ \t]*[*][/]' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 's5p-mfc-v8\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-
-    # New in 3.17
-    blobname 'radeon[/]\(%s\|kaveri\|KAVERI\)_mec2\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-si2168-\(\(a[23]\|b4\)0-01\|-02\)\.fw' drivers/media/dvb-frontends/si2168_priv.h
-    accept '[	]\[CODA_IMX6\(Q\|DL\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'v4l-coda960-imx6\(q\|dl\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc-v6-v2\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'dvb-fe-xc4000-1\.4\(\.1\)\?\.fw' drivers/media/tuners/xc4000.c
-    blobname 'ti-connectivity[/]TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/misc/ti-st/st_kim.c
-    blobname 'fw-5\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'brcm[/]brcmfmac43569\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname '3826\.eeprom' drivers/net/wireless/p54/p54spi.c
-    defsnc 'static[ ]const[ ]u64[ ]sha512_k\[\][ ]=' arch/arm/crypto/sha512_neon_glue.c
-    accept 'K_table:\([\n][ 	]*\.long[ 	]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    accept '\.L_s[12345678]:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/des3_ede-asm_64.S
-    defsnc '[\t]const[ ]unsigned[ ]char[ ][*]K[ ]=[ ][(]unsigned[ ]char[ ][*][)]' crypto/drbg.c
-    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]uint64_t[ ]inst\[\][ ]=' drivers/crypto/qat/qat_common/qat_hal.c
-    defsnc 'gk110b_\(grctx\|graph\)_init_\(sm\|l1c\)_0\[\][ ]=' drivers/gpu/dm/nouveau/core/engine/graph/ctxgk110b.c
-    defsnc '[\t]const[ ]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    defsnc '[}][ ]samp_freq_table\[\][ ]=' drivers/iio/accel/kxcjk-1013.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/media/pci/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev\(4\|5a\?\|[789]\|14\)_init\[\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_\(\(tmap\|noisevar\)_r7\|tx_gain_\(epa\|ipa\(_2057\)\?\)_rev\([34569]\|14\)_\(hi_pwr_\)\?\(2g\|5g\)\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253InitTab_RFMD\[CB_VT3253_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_RFMD\[CB_VT3253B0_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AGC4_RFMD2959\[CB_VT3253B0_AGC_FOR_RFMD2959\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AIROHA2230\[CB_VT3253B0_INIT_FOR_AIROHA2230\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_UW2451\[CB_VT3253B0_INIT_FOR_UW2451\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AGC\[CB_VT3253B0_AGC\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
-    defsnc 'static[ ]u8[ ]al2230_init_table\[CB_AL2230_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]\(al2230\|vt3226\)_channel_table[012]\[CB_MAX_CHANNEL_24G\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]al7230_init_table\(_amode\)\?\[CB_AL7230_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]\(al7230\|vt3342\)_channel_table[012]\[CB_MAX_CHANNEL\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]vt3226\(d0\)\?_init_table\[CB_VT3226_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]u8[ ]vt3342a0_init_table\[CB_VT3342_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
-    defsnc 'static[ ]const[ ]u32[ ]al2230_power_table\[AL2230_PWR_IDX_LEN\][ ]=' drivers/staging/vt6656/rf.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware_direct[(]const[ ]struct[ ]firmware[ ][*][*]fw[,]' include/linux/firmware.h
-    defsnc 'static[ ]u8[ ]const[ ]__aligned[(]8[)][ ]test_buf\[\][ ]__initconst[ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]crc_test[ ][{][^}]*[}][ ]const[ ]test\[\][ ]__initconst[ ]=' lib/crc32.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]test_firmware[,]' lib/test_firmware.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]rt286_index_def\[\][ ]=' sound/soc/codecs/rt286.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt286_reg\[\][ ]=' sound/soc/codecs/rt286.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5670_reg\[\][ ]=' sound/soc/codecs/rt5670.c
-    accept 'FW=["][$]FWPATH[/]test-firmware\.bin["]' 'tools/testing/selftests/firmware/fw_\(filesystem\|userhelper\)\.sh'
-    blobname 'qat_895xcc\.bin' drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
-    blobname 'dvb-demod-si2165\.fw' drivers/media/dvb-frontends/si2165_priv.h
-    blobname 'dvb-tuner-si2158-a20-01\.fw' drivers/media/tuners/si2157_priv.h
-    blobname 'brcm[/]brcmfmac43\(602\|5[46]\|570\)-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmac/pcie.c
-    blobname 'r8a779x_usb3_v1\.dlmem' drivers/usb/host/xhci-rcar.c
-    blobname 'iwlwifi-3165-' drivers/net/wireless/iwlwifi/iwl-7000.c
-
-    # New in 3.18.
-    accept '[\t	]*interrupts[ ]=[ ]<\([ \n\t]*0[ ][4567][0-9][ ]0xf04\)*>[;]' Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
-    accept '[\t ]*<\([ \t\n]*[ 1-9][0-9 ][0-9]\)*>[;]' arch/arm/boot/dts/tegra124-nyan-big.dts
-    blobname 'keystone[/]qmss_pdsp_acc48_k2_le_1_0_0_8\.fw' Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]lz4\(hc\)\?_\(de\)\?comp_tv_template\[\][ ]=' crypto/testmgr.h
-    blobname 'mrvl[/]sd8887_uapsta\.bin' 'drivers/\(bluetooth/btmrvl_sdio\.c\|net/wireless/mwifiex/sdio.h\)'
-    blobname 'radeon[/]\(R600\|RS780\|RV770\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    defsnc '[}][ ]wake_odr_data_rate_table\[\][ ]=' drivers/iio/accel/kxcjk-1013.c
-    defsnc 'static[ ]const[ ]struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    defsnc 'static[ ]u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/pci/mantis/mantis_vp1033.c
-    blobname 'go7007[/]go7007tv\.bin' drivers/media/pci/saa7134/saa7134-go7007.c
-    defsnc 'static[ ]const[ ]u8[ ]vivid_hdmi_edid\[256\][ ]=' drivers/media/platform/vivid/vivid-core.c
-    defsnc 'static[ ]const[ ]s8[ ]sin\[257\][ ]=' drivers/media/platform/vivid/vivid-tpg.c
-    defsnc 'static[ ]const[ ]struct[ ]shf[ ]shf_tab\[\][ ]=' drivers/media/tuners/mxl301rf.c
-    defsnc 'static[ ]const[ ]u8[ ]reg_initval\[QM1D1C0042_NUM_REGS\][ ]=' drivers/media/tuners/qm1d1c0042.c
-    accept '[\t]*priv->firmware[ ]=[ ]fw[;][\n][\t][}][ ]else[\n][\t]*fw[ ]=[ ]priv->firmware[;]' drivers/media/tuners/xc5000.c
-    blobname 'dvb-usb-it9303-01\.fw' drivers/media/usb/dvb-usb-v2/af9035.h
-    defsnc 'const[ ]u8[ ]tuning_blk_pattern_4bit\[MMC_TUNING_BLK_PATTERN_4BIT_SIZE\][ ]=' drivers/mmc/core/mmc.c
-    defsnc 'const[ ]u8[ ]tuning_blk_pattern_8bit\[MMC_TUNING_BLK_PATTERN_8BIT_SIZE\][ ]=' drivers/mmc/core/mmc.c
-    defsnc 'static[ ]const[ ]u16[ ]fm10k_crc_16b_table\[256\][ ]=' drivers/net/ethernet/intel/fm10k/fm10k_mbx.c
-    accept '[\t ]*[*][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' drivers/net/ethernet/intel/fm10k/fm10k_mbx.h
-    blobname '83xx_post_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
-    blobname 'rtl_nic[/]rtl\(8168h\|8107e\)-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'firmware-3\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'utf\.bin' drivers/net/wireless/ath/ath10k/testmode.c
-    accept '[ ][*][ ]wil_request_firmware[ ]-[ ]Request[ ]firmware' drivers/net/wireless/ath/wil6210/fw_inc.c
-    accept 'int[ ]wil_request_firmware[(]' 'drivers/net/wireless/ath/wil6210/\(fw_inc\.c\|wil6210\.h\)'
-    accept '[\t]*rc[ ]=[ ]wil_request_firmware[(]wil[,][ ]WIL_FW_NAME[)][;]' drivers/net/wireless/ath/wil6210/fw_inc.c
-    blobname 'wil6210\.fw' drivers/net/wireless/ath/wil6210/wil6210.h
-    blobname 'FW[ ]Version:[ ]%d_%d_%d' drivers/net/wireless/broadcom/bnx2x/bnx2x_main.c
-    blobname '\([,][\n \t]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\)_VERSION\)\+' drivers/net/wireless/broadcom/bnx2x/bnx2x_main.c
-    blobname 'iwlwifi-8000' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname '["]-["][ ]__stringify[(]api[)][ ]["]\.ucode["]' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname '%s%s-%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
-    blobname 'rtlwifi[/]rtl8723efw\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[RTL8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/phy.c
-    blobname 'rtlwifi[/]rtl88\(21\|12\)aefw\(_wowlan\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
-    defsnc 'static[ ]u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ba]_[np]\[\]\[DEL_SW_IDX_SZ\][ ]=' drivers/net/wireless/rtlwifi/rtl8821ae/dm.c
-    defsnc '[\t]u8[ ]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/phy.c
-    # Present before 3.18, but changes to reject_firmware shell
-    # function to make it match request_firmware only require us to
-    # recognize these as false positives.
-    accept 'static[ ]int[ ]lp55xx_request_firmware[(]' drivers/leds/leds-lp55xx-common.c
-    accept '[\t]*ret[ ]=[ ]lp55xx_request_firmware[(]' drivers/leds/leds-lp55xx-common.c
-    accept 'static[ ]int[ ]flexcop_fe_request_firmware[(]' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    accept '[\t]\.request_firmware[ ]=[ ]flexcop_fe_request_firmware[,]' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    accept '[\t]if[ ][(][(]ret[ ]=[ ]st->config->request_firmware[(]' drivers/media/dvb-frontends/bcm3510.c
-    accept '[\t][\t]ret[ ]=[ ]config->request_firmware[(]' drivers/media/dvb-frontends/or51211.c
-    accept '[\t]if[ ][(]state->config->request_firmware[(]' drivers/media/dvb-frontends/sp8870.c
-    accept '[\t][\t]ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/sp887x.c
-    accept '[\t]int[ ][(][*]request_firmware[)][(]' drivers/media/dvb-frontends/sp887x.h
-    accept '[\t]ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/tda1004x.c
-    accept '[\t]if[ ][(]state->config->request_firmware[ ]' drivers/media/dvb-frontends/tda1004x.c
-    accept '[\t][\t][\t]*ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/tda1004x.c
-    accept 'static[ ]int[ ]alps_tdhd1_204_request_firmware[(]' drivers/media/dvb-frontends/tdhd1.h
-    accept '[\t]\.request_firmware[ ]=[ ]alps_tdhd1_204_request_firmware' drivers/media/dvb-frontends/tdhd1.h
-    accept 'static[ ]int[ ]microtune_mt7202dtf_request_firmware[(]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept '[\t]\.request_firmware[ ]=[ ]microtune_mt7202dtf_request_firmware[,]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept 'static[ ]int[ ]or51211_request_firmware[(]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept '[\t]\.request_firmware[ ]=[ ]or51211_request_firmware[,]' drivers/media/pci/bt8xx/dvb-bt8xx.c
-    accept 'static[ ]int[ ]pluto2_request_firmware[(]' drivers/media/pci/pluto2/pluto2.c
-    accept '[\t]\.request_firmware[ ]=[ ]pluto2_request_firmware[,]' drivers/media/pci/pluto2/pluto2.c
-    accept 'static[ ]int[ ]philips_tda1004x_request_firmware[(]' drivers/media/pci/saa7134/saa7134-dvb.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tda1004x_request_firmware' drivers/media/pci/saa7134/saa7134-dvb.c
-    accept 'static[ ]int[ ]alps_tdlb7_request_firmware[(]' drivers/media/pci/ttpci/av7110.c
-    accept '[\t]\.request_firmware[ ]=[ ]alps_tdlb7_request_firmware[,]' drivers/media/pci/ttpci/av7110.c
-    accept 'static[ ]int[ ]philips_tu1216_request_firmware[(]' drivers/media/pci/ttpci/budget-av.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tu1216_request_firmware[,]' drivers/media/pci/ttpci/budget-av.c
-    accept 'static[ ]int[ ]philips_tdm1316l_request_firmware[(]' drivers/media/pci/ttpci/budget-ci.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tdm1316l_request_firmware[,]' drivers/media/pci/ttpci/budget-ci.c
-    accept 'static[ ]int[ ]alps_tdhd1_204_request_firmware[(]' drivers/media/pci/ttpci/budget.c
-    accept 'static[ ]int[ ]fimc_is_request_firmware[(]' drivers/media/platform/exynos4-is/fimc-is.c
-    accept '[\t]ret[ ]=[ ]fimc_is_request_firmware[(]' drivers/media/platform/exynos4-is/fimc-is.c
-    accept 'static[ ]int[ ]philips_tdm1316l_request_firmware[(]' drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-    accept '[\t]\.request_firmware[ ]=[ ]philips_tdm1316l_request_firmware[,]' drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-    accept '[\t][\t]pr_err[(]["][ ]request_firmware[ ]failed' drivers/misc/ti-st/st_kim.c
-    accept 'typhoon_request_firmware[(]' drivers/net/ethernet/3com/typhoon.c
-    accept '[\t]err[ ]=[ ]typhoon_request_firmware[(]' drivers/net/ethernet/3com/typhoon.c
-    accept '[\t][\t]goto[ ]request_firmware_exit[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept '[\t]BNX2X_ALLOC_AND_SET[(]init_data[,][ ]request_firmware_exit[,]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept 'request_firmware_exit:' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept 'static[ ]int[ ]bnx2_request_firmware[(]' drivers/net/ethernet/broadcom/bnx2.c
-    accept '[\t]rc[ ]=[ ]bnx2_request_firmware[(]' drivers/net/ethernet/broadcom/bnx2.c
-    accept 'static[ ]int[ ]tg3_request_firmware[(]' drivers/net/ethernet/broadcom/tg3.c
-    accept '[\t][\t]err[ ]=[ ]tg3_request_firmware[(]' drivers/net/ethernet/broadcom/tg3.c
-    accept 'static[ ]const[ ]struct[ ]firmware[ ][*]e100_request_firmware[(]' drivers/net/ethernet/intel/e100.c
-    accept '[\t]fw[ ]=[ ]e100_request_firmware[(]' drivers/net/ethernet/intel/e100.c
-    accept '[/][*][ ]Call[ ]this[]function[ ]from[ ]process[ ]context[,][ ]it[ ]will[ ]sleep[ ]in[ ]request_firmware[.]' drivers/net/wireless/ipw2x00/ipw2200.c
-    accept '[ ][*][ ]@request_firmware_complete:' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t][\t]lbs_deb_fw[(]["]request_firmware_nowait[ ]error' drivers/net/wireless/libertas/firmware.c
-    accept 'void[ ]netxen_request_firmware[(]' 'drivers/net/ethernet/qlogic/netxen/netxen_nic\(\.h\|_init\.c\)'
-    accept '[\t]netxen_request_firmware[(]' drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-    accept 'void[ ]qlcnic_request_firmware[(]' 'drivers/net/ethernet/qlogic/qlcnic/qlcnic\(\.h\|_init\.c\)'
-    accept '[\t][\t]qlcnic_request_firmware[(]' drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-    accept 'static[ ]void[ ]rtl_request_firmware[(]' drivers/net/ethernet/realtek/r8169.c
-    accept '[\t]rtl_request_firmware[(]' drivers/net/ethernet/realtek/r8169.c
-    accept 'static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[\t]INIT_WORK[(][&]wl->firmware_load[,][ ]b43_request_firmware[)]' drivers/net/wireless/b43/main.c
-    accept 'static[ ]void[ ]b43legacy_request_firmware[(]' drivers/net/wireless/b43legacy/main.c
-    accept '[\t]INIT_WORK[(][&]wl->firmware_load[,][ ]b43legacy_request_firmware[)]' drivers/net/wireless/b43legacy/main.c
-    accept 'il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
-    accept '[\t]if[ ][(]il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
-    accept '[\t]err[ ]=[ ]il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
-    accept 'static[ ]int[ ]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]if[ ][(]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]ret[ ]=[ ]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[ ][*][ ]@request_firmware_complete:' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]struct[ ]completion[ ]request_firmware_complete[;]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t]\(complete\|\(init\|wait_for\)_completion\)[(][&]drv->request_firmware_complete[)]' drivers/net/wireless/iwlwifi/iwl-drv.c
-    accept '[\t][ ][*][ ]Obtain[ ]NVM[ ]image[ ]via[ ]request_firmware[.]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]int[ ]mwl8k_request_firmware[(]' drivers/net/wireless/mwl8k.c
-    accept '[\t]rc[ ]=[ ]mwl8k_request_firmware[(]' drivers/net/wireless/mwl8k.c
-    accept 'static[ ]int[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
-    accept '[\t]ret[ ]=[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
-    accept 'static[ ]int[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firwmare.c
-    accept '[\t][\t]retval[ ]=[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firmware.c
-    accept '[\t][\t]wl1271_error[(]["]request_firmware_nowait[ ]failed' drivers/net/wireless/ti/wlcore/main.c
-    accept '[\t][\t]nfc_err[(][&]drv->pdev->dev[,][ ]["]request_firmware[ ]failed' drivers/nfc/nfcwilink.c
-    accept '[\t][\t][\t]["]request_firmware[ ]returned' drivers/nfc/nfcwilink.c
-    accept '[\t][\t]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    accept '[\t][\t]dev_err[(]dev[,][ ]["]request_firmware[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept 'static[ ]int[ ]asd_request_firmware[(]' drivers/scsi/aic94xx/aic94xx_seq.c
-    accept '[\t]err[ ]=[ ]asd_request_firmware[(]' drivers/scsi/aic94xx/aic94xx_seq.c
-    accept '[\t]uint32_t[ ]cfg_request_firmware_upgrade[;]' drivers/scsi/lpfc/lpfc.h
-    accept '[ ][*][ ]lpfc_request_firmware_store[ ]-[ ]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'lpfc_request_firmware_upgrade_store[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'lpfc_param_show[(]request_firmware_upgrade[)]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t]rc[ ]=[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[ ][*][ ]lpfc_request_firmware_upgrade_init[ ]-[ ]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'lpfc_request_firmware_upgrade_init[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t][\t]phba->cfg_request_firmware_upgrade[ ]=' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t][\t][ ]*lpfc_request_firmware_upgrade_\(show\|store\)[,)]' drivers/scsi/lpfc/lpfc_attr.c
-    accept '[\t]lpfc_request_firmware_upgrade_init[(]' drivers/scsi/lpfc/lpfc_attr.c
-    accept 'int[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_crtn.h
-    accept '[ ][*][ ]@fw:[ ]pointer[ ]to[ ]firmware[ ]image[ ]returned[ ]from[ ]request_firmware[.]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[ ][*][ ]lpfc_sli4_request_firmware_update[ ]-[ ]' drivers/scsi/lpfc/lpfc_init.c
-    accept 'lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[\t]if[ ][(]phba->cfg_request_firmware_upgrade[)]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[\t][\t]ret[ ]=[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
-    accept '[ ][*][ ]qla1280_request_firmware' drivers/scsi/qla1280.c
-    accept 'qla1280_request_firmware[(]' drivers/scsi/qla1280.c
-    accept '[\t]fw[ ]=[ ]qla1280_request_firmware[(]' drivers/scsi/qla1280.c
-    accept 'extern[ ]struct[ ]fw_blob[ ][*]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_gbl.h
-    accept '[\t]blob[ ]=[ ]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_init.c
-    accept '[\t]blob[ ]=[ ]ha->hablob[ ]=[ ]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_nx.c
-    accept 'qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_os.c
-    accept '[\t]-[ ]change[ ]firmware[ ]loading[ ]for[ ]usb[ ]driver[ ]to[ ]proper[ ]kernel[ ]method[ ][(]request_firmware[)]' drivers/staging/ft1000/TODO
-    accept '[\t][\t]pr_err[(]["]rtl8723au:[ ]request_firmware[ ]load' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
-    accept '[\t ]*[*][ ]We[ ]call[ ]request_firmware_nowait[ ]instead[ ]of[ \t\n*]*request_firmware[ ]so[ ]that' drivers/tty/serial/ucc_uart.c
-    accept '[\t][\t]dev_err[(][&]dev->dev[,][ ]["]%d[,][ ]request_firmware[ ]failed' sound/pci/asihpi/hpidspcd.c
-    accept 'static[ ]int[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c
-    accept '[\t]err[ ]=[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c
-    # New in 3.19
-    blobname 'a420_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/adreno_device.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a4xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a4xx_gpu.c
-    defsnc 'static[ ]const[ ]u32[ ]gen9_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen9.c
-    defsnc 'nv50_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
-    defsnc 'nv84_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
-    defsnc 'nvd0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\(300\)\?[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
-    defsnc 'nve0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*300[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
-    # This reads from user-supplied filenames.
-    accept 'shadow_fw_init[(]struct[ ]nouveau_bios[ ][*]bios[,][ ]const[ ]char[ ][*]name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]int[ ]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ]dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/shadow.c
-    defsnc 'static[ ]const[ ]u32[ ]coef_lut_\(a_legacy\|b\|[cdef]_[yc]_legacy\)\[NB_COEF\][ ]=' drivers/gpu/drm/sti/sti_hqvdp_lut.h
-    blobname 'hqvdp-stih407\.bin' drivers/gpu/drm/sti/sti_hqvdp.c
-    defsnc '[\t]static[ ]const[ ]union[ ]sixaxis_output_report_01[ ]default_report[ ]=' drivers/hid/hid-sony.c
-    blobname 'elan_i2c\.bin' drivers/input/mouse/elan_i2c_core.c
-    blobname 'elants_i2c\.bin' drivers/input/touchscreen/elants_i2c.c
-    defsnc '[}][ ]QAM256_mod_tab_zv_mode\[\][ ]=' drivers/media/dvb-frontends/au8522_dig.c
-    blobname 'dvb-demod-m88rs6000\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88rs6000_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]\(luma\|chroma\)_ac_value\[162[ ][+][ ]2\][ ]=' drivers/media/platform/coda/coda-jpeg.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(luma\|chroma\)_q\[64\][ ]=' drivers/media/platform/coda/coda-jpeg.c
-    defsnc 'static[ ]const[ ]struct[ ]vin_coeff[ ]vin_coeff_set\[\][ ]=' drivers/media/platform/soc_camera/rcar_vin.c
-    defsnc 'const[ ]unsigned[ ]short[ ]tpg_\(rec709_to_linear\|linear_to_rec709\)\[255[ ][*][ ]16[ ][+][ ]1\][ ]=' drivers/media/platform/vivid/vivid-tpg-colors.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]m88rs6000t_reg_val[ ]reg_vals\[\][ ]=' drivers/media/tuners/m88rs6000t.c
-    blobna '[/][*][ ]cal-<bus>-<id>\.bin[ ][*][/]' drivers/net/wireless/ath/ath10k/core.c
-    blobname 'cal-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_\(common_wo_xlna_rx\|modes_\(no_\)\?xpa_tx\)_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
-    blobname 'mrvl[/]usb8766_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
-    defsc 'static[ ]const[ ]unsigned[ ]char[ ]opcode_ind_arr\[256\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]const[ ]struct[ ]quark_spi_rate[ ]quark_spi_rate_table\[\][ ]=' drivers/spi/spi-pxa2xx.c
-    blobname 'me4000_firmware\.bin' drivers/staging/comedi/drivers/me4000.c
-    defsnc '[\t]u8[ ]ConnectionMsg\[\][ ]=' drivers/staging/ft1000/ft1000-usb/ft1000_debug.c
-    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]fw_file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
-    blobname 'dvb-demod-mn88472-02\.fw' drivers/staging/media/mn88472/mn88472_priv.h
-    blobname 'dvb-demod-mn88473-01\.fw' drivers/staging/media/mn88473/mn88473_priv.h
-    accept '[\t][\t]goto[ ]err_request_firmware[;]' drivers/staging/media/mn88473/mn88473.c
-    accept 'err_request_firmware[:]' drivers/staging/media/mn88473/mn88473.c
-    blob 'The[ ]card[ ]requires[ ]firmware.*[\n]rm[ ]wd7296a\.sys' Documentation/scsi/wd719x.txt
-    blobname 'wd719x-\(wcs\|risc\)\.bin' drivers/scsi/wd719x.c
-    defsnc 'static[ ]const[ ]struct[ ]tsadc_table[ ]v2_code_table\[\][ ]=' drivers/thermal/rockchip_thermal.c
-    defsnc 'static[ ]const[ ]u8[ ]debug_pk\[64\][ ]=' net/bluetooth/smp.c
-    defsnc 'static[ ]const[ ]u8[ ]debug_sk\[32\][ ]=' net/bluetooth/smp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ad1980_reg_defaults\[\][ ]=' sound/soc/codecs/ad1980.c
-    blobname 'rt5677_dsp_fw[12]\.bin' sound/soc/codecs/rt5677.c
-    accept 'int[ ]sst_request_firmware_async[(]' sound/soc/intel/sst/sst.h
-    blobname 'intel[/]fw_sst_0f28\.bin-48kHz_i2s_master' sound/soc/intel/sst-acpi.c
-    blobname '\(intel[/]\)\?fw_sst_\(0f28\|22a8\)\.bin' sound/soc/intel/sst/sst_acpi.c
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][\n][ \t]*sst_drv_ctx->dev_id[,][ ]["]\.bin' sound/soc/intel/sst/sst_pci.c
-    accept '[\t]\?\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|[\t]call\(_path\)\?\)_file[ \t]*=[ ]open_output_file[(]["]\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|call\(_path\)\?\)_table\.bin["][)]' tools/perf/scripts/python/export-to-postgresql.py
-    # accept '\([*]\.\(bin\|elf\|fw\)\|\(setup\|wakeup\)\.\(bin\|elf\)\|vmlinux\.bin\.all\|tftpboot\.img\)[\n]' Documentation/dontdiff
-    # New in 4.0.
-    blobname 'intel[/]ibt-11-%u\.sfi' drivers/bluetooth/btusb.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf100_gr_init_\(main\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
-    accept '[	][	]*gf100_gr_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
-    accept '[	][	 ]*gf100_gr_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveua/nvkm/engine/gr/gf100.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)gf100_gr_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveua/nvkm/engine/gr/gf100.c
-    blobname 'firmware-4\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43340-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7260-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'iwlwifi-8000' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname 'iwl_nvm_8000B\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
-    blobname 'mrvl[/]sd8801_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'mrvl[/]usb8801_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
-    blobname 'ti-connectivity[/]wl18xx-fw-4\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'intel[/]fw_sst_22a8\.bin' sound/soc/intel/sst_acpi.c
-    defsnc 'static[ ]const[ ]struct[ ]clk_div_table[ ]z_div_table\[\][ ]=' drivers/clk/shmobile/clk-sh73a0.c
-    defsnc 'uint32_t[ ]gf100_pce_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h
-    defsnc 'uint32_t[ ]gt215_pce_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]g84_disp_\(base\|core\|ovly\)_mthd_\(dac\|head\|base\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/g84.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]gf110_disp_\(base\|core\|ovly\)_mthd_\(dac\|head\|base\|sor\|pior\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/gf110.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]gk104_disp_\(core\|ovly\)_mthd_\(head\|base\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/gk104.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]gt200_disp_ovly_mthd_base[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/gt200.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf100_grctx_init_\(icmd\|9097\|902d\|90c0\|fe\|memfmt\|rstr2d\|prop\|setup\|crstr\|zcullr\|wwdx\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf104_grctx_init_\(tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf104.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf108_grctx_init_\(icmd\|9097\|setup\|wwdx\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf108.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf110_grctx_init_\(icmd\|setup\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf110.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf117_grctx_init_\(ds\|pd\|setup\|tex\|wwdx\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf119_grctx_init_\(\(icmd\|90c0\|fe\|ds\|prop\|setup\|crstr\|tex\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf119.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk104_grctx_init_\(icmd\|a097\|fe\|memfmt\|ds\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk110_grctx_init_\(icmd\|a197\|fe\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk208_grctx_init_\(icmd\|fe\|ds\|pd\|rstr2d\|be\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk208.c
-    defsnc 'uint32_t[ ]gf100_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h
-    defsnc 'uint32_t[ ]gf117_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h
-    defsnc 'uint32_t[ ]gk104_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h
-    defsnc 'uint32_t[ ]gk110_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h
-    defsnc 'uint32_t[ ]gk208_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h
-    defsnc 'uint32_t[ ]gf100_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h
-    defsnc 'uint32_t[ ]gf117_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h
-    defsnc 'uint32_t[ ]gk104_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h
-    defsnc 'uint32_t[ ]gk110_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h
-    defsnc 'uint32_t[ ]gk208_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h
-    accept '[	]struct[ ]gf100_gr_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf104_gr_init_\(ds\|tex\|pe\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf104.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf110_gr_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf110.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf119_gr_init_\(\(pd\|ds\|prop\|gpm\|tex\|pe\|wwdx\|sm\)_0\|\(tpccs\|gpc_unk\|fe\)_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf119.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk104_gr_init_\(\(main\|ds\|sked\|cwd\|tpccs\|pe\|l1c\|sm\|be\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk104.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk110_gr_init_\(\(fe\|ds\|sked\|cwd\|tex\|l1c\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk110b_gr_init_\(l1c\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110b.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk208_gr_init_\(\(main\|ds\|gpc_unk\|tex\|l1c\)_0\|setup_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gm107_gr_init_\(\(main\|ds\|scc\|sked\|prop\|zcull\|tpccs\|tex\|pe\|l1c\|sm\|pes\|wwdx\|cbm\|be\)_0\|\(setup\|gpc_unk\|l1c\|sm\)_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gm107.c
-    defsnc 'static[ ]u32[ \n]nv04_gr_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    defsnc 'static[ ]int[ \n]nv10_gr_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv10.c
-    defsnc 'uint32_t[ ]g98_psec_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h
-    accept 'shadow_fw_init[(]struct[ ]nvkm_bios[ ][*]bios[,][ ]const[ ]char[ ][*]name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]int[ ]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ]dev[)][;]' drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
-    defsnc 'uint32_t[ ]gf100_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
-    defsnc 'uint32_t[ ]gf110_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf110.fuc4.h
-    defsnc 'uint32_t[ ]gk208_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
-    defsnc 'uint32_t[ ]gt215_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
-    defsnc 'static[ ]const[ ]struct[ ]dw_hdmi_mpll_config[ ]rockchip_mpll_cfg\[\][ ]=' drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
-    defsnc '[}][ ]kmx61_\(samp_freq\|wake_up_odr\)_table\[\][ ]=' drivers/iio/imu/kmx61.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_header\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/media/pci/solo6x10/solo6x10-jpeg.h
-    defsnc 'static[ ]u8[ ]vop_6010_\(ntsc\|pal\)_\(d1\|cif\)\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
-    defsnc '[\t]static[ ]const[ ]struct[ ]rate_s[ ]rate_1\[\][ ]=' drivers/media/usb/gspca/ov534.c
-    defsnc 'static[ ]struct[ ]serdes_cfg[ ]cfg_phyb_10p3125g_\(156p25mhz_cmu1\|16bit_lane\|comlane\)\[\][ ]=' drivers/net/ethernet/ti/netcp_xgbepcsr.c
-    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_\(baseband\|radio\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_\(baseband\|radio\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_modes_\(no_\)\?xpa_\(low_ob_db_\|green_\)\?tx_gain_table\[\]\[3\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_common_rx_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_xlna_only\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]smc0_nor_pins\[\][ ]=' drivers/pinctrl/pinctrl-zynq.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]gamma_correction_table\[\][ ]=' drivers/staging/fbtft/fb_agm1264k-fl.c
-    defsnc '[\t]write_reg[(]par[,][ ]0x2D[,]' drivers/staging/fbtft/fb_hx8353d.c
-    defsnc '[#]define[ ]DEFAULT_GAMMA' 'drivers/staging/fbtft/fb_ssd13[35]1\.c'
-    defsnc 'static[ ]struct[ ]fbtft_device_display[ ]displays\[\][ ]=' drivers/staging/fbtft/fbtft_device.c
-    defsnc 'struct[ ]ModeInit[ ]vgamode\[\][ ]=' drivers/staging/sm7xxfb/sm7xx.h
-    defsnc 'static[ ]const[ ]u8[ ]\(\(priv\|pub\)_[ab]\|dhkey\)_[123]\[\(32\|64\)\][ ]__initconst[ ]=' net/bluetooth/selftest.c
-    defsnc '[\t]const[ ]u8[ ][uvw]\[32\][ ]=' net/bluetooth/smp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
-
-    # CYAPA_FW_NAME, defined to this string, is not used anywhere, and
-    # firmware requests are issued with user-supplied names.  So,
-    # deblob the unused name, but keep the request active.
-    blobname 'cyapa\.bin' drivers/input/mouse/cyapa.c
-    accept 'static[ ]int[ ]cyapa_firmware[(]struct[ ]cyapa[ ][*]cyapa[,][ ]const[ ]char[ ][*]fw_name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]error[ ]=[ ]request_firmware[(][&]fw[,][ ]fw_name[,][ ]dev[)][;]' drivers/input/mouse/cyapa.c
-
-    # There are blob names here, but no apparent load mechanism.
-    blobname 'ssp_B2\.fw' drivers/iio/common/ssp_sensors/ssp_dev.c
-    blobname 'ssp_crashed\.fw' drivers/iio/common/ssp_sensors/ssp_dev.c
-    blobname 'thermostat_B2\.fw' drivers/iio/common/ssp_sensors/ssp_dev.c
-
-    # New in 4.1.
-    defsnc 'uint8_t[ ]default_tx\[\][ ]=' Documentation/spi/spidev_test.c
-    accept '[#][ ]cat[ ][/]sys[/]kernel[/]debug[/]zsmalloc[/]zram0[/]classes[\n][\n][ ]class[^\n]*\([\n][ ][0-9. \t]*\)*' Documentation/vm/zsmalloc.txt
-    accept '[\t]*nvidia[,]emc-configuration[ ]=[ ][<][\n][\t]*\(0x[0-9a-f]*[\n][\t]*\)*[>][;]' 'arch/arm/boot/dts/tegra124-\(jetson-tk1\|nyan-\(big\|blaze\)\)-emc.dtsi'
-    initnc '\.Lsha256_rcon:[\n][\t]\.word[\t]*' arch/arm64/crypto/sha2-ce-core.S
-    accept 'K256:[\n]\.word[\t]0x428a2f98[,][0-9a-f0x,]*\([\n]\.word[\t][0-9a-f0x,]*\)*' 'arch/arm/crypto/sha256-\(armv4\.pl\|core\.S_shipped\)'
-    initnc 'PPC_AES_4K_DECTAB2:[\n][/][*][ ]decryption[ ]table[,][ ]same[ ]as[ ]crypto_il_tab[ ]in[ ]crypto[/]aes-generic\.c[ ][*][/]' arch/powerpc/crypto/aes-tab-4k.S
-    initnc 'PPC_SPE_SHA256_K:' arch/powerpc/crypto/sha256-spe-asm.S
-    defsnc 'static[ ]const[ ]u8[ ]initial_parm_block\[32\][ ]__initconst[ ]=' arch/s390/crypto/prng.c
-    defsnc '[\t]static[ ]const[ ]u8[ ]\(seed\|[VC]0\|random\)\[\][ ]__initconst[ ]=' arch/s390/crypto/prng.c
-    defsnc 'gm204_grctx_init_\(icmd\|b197\|fe\|ds\|pd\|be\|prop\|setup\|tex\|mpc\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c
-    defsnc 'gm204_gr_init_\(main\|tpccs\|pe\|sm\|be\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c
-    defsnc 'static[ ][ ]*\(const[ ]\)\?struct[ ]sensor_register[ ]ov2659_\(init_regs\|[us]\?xga\|[sq]\?vga\)\[\][ ]=' drivers/media/i2c/ov2659.c
-    defsnc 'static[ ]const[ ]struct[ ]pll_ctrl_reg[ ]ctrl1\[\][ ]=' drivers/media/i2c/ov2659.c
-    defsnc 'static[ ]const[ ]u16[ ]aic_lin_table\[ATH_AIC_MAX_AIC_LIN_TABLE\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_aic.c
-    defsc 'static[ ]struct[ ]ModeInit[ ]vgamode\[\][ ]=' drivers/staging/sm7xxfb/sm7xx.h
-    defsnc 'static[ ]const[ ]s32[ ]sin_table\[\][ ]=' include/linux/fixp-arith.h
-    defsnc 'static[ ]int64_t[ ]__RH_LH_tbl\[128[*]2[+]2\][ ]=' net/ceph/crush/crush_ln_table.h
-    defsnc 'static[ ]int64_t[ ]__LL_tbl\[256\][ ]=' net/ceph/crush/crush_ln_table.h
-    blobname 'rtl_bt[/]rtl8723[ab]_fw\.bin' drivers/bluetooth/btusb.c
-    blobname 'rtl_bt[/]rtl8821a_fw\.bin' drivers/bluetooth/btusb.c
-    blobname 'rtl_bt[/]rtl8761a_fw\.bin' drivers/bluetooth/btusb.c
-    blobname 'brcm[/]\(%s\(-%4\.4x-%4\.4x\)\?[^ "\n]*\)\.hcd' drivers/bluetooth/btbcm.c
-    blobname 'cxgb4[/]aq1202_fw\.cld' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    accept 'static[ ]int[ ]set_flash[(]struct[ ]net_device[ ][*]netdev[,][ ]struct[ ]ethtool_flash[ ][*]ef[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ef->data[,][ ]adap->pdev_dev[)][;]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
-    blobname 'brcm[/]\(%s\|.*\)-\(%04x\|[0-9a-f]*\)-\(%04x\|[0-9a-f]*\)\.hcd' drivers/bluetooth/btusb.c
-    blobname 'qca[/]\(rampatch\|nv\(ra\)\?m\)_usb_\(%08x\|[0-9a-f]*\)\.bin' drivers/bluetooth/btusb.c
-    blobname 'elants_i2c_\(%04x\|[0-9a-f]*\)\.bin' drivers/input/touchscreen/elants_i2c.c
-    blobname 'ct2\?fw-3\.2\.5\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'brcm[/]brcmfmac43\(4\(30\|55\)\|54\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/sdio.c
-    blobname 'iwlwifi-7265D-' drivers/net/wireless/iwlwifi/iwl-7000.c
-    blobname '%s%c-%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
-    blobname 'intel[/]IntcPP01\.bin' sound/soc/intel/haswell/sst-haswell-ipc.c
-    accept '[\t]*rc[ ]=[ ]wil_request_firmware[(]wil[,][ ]WIL_FW2\?_NAME[)][;]' drivers/net/wireless/ath/wil6210/main.c
-    blobname 'nvmData-8000[BC]' drivers/net/wireless/iwlwifi/iwl-8000.c
-
-    # New in 4.2.
-    accept '[\t	]*interrupts[ ]=[ ]<\([ \n\t]*0x0[ ]0x1[0-9a-f][ ]0x4\)*>[;]' Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
-    accept '[\t]*bool[ ]["]vmlinu[xz]\.bin["]' arch/mips/Kconfig
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(ghash\|poly1305\|crc32\)_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]rfc7539\(esp\)\?_\(enc\|dec\)_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]chacha20_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]const[ ]struct[ ]iproc_pll_vco_param[ ]mipipll_vco_params\[\][ ]=' drivers/clk/bcm/clk-cygnus.c
-    defsnc 'static[ ]const[ ]struct[ ]clk_div_table[ ]ahb_div_table\[\][ ]=' drivers/clk/clk-stm32f4.c
-    defsnc '[\t]static[ ]u8[ ]padded_hash\[64\][ ]=' drivers/crypto/talitos.c
-    defsnc 'static[ ]const[ ]int[ ]stk3310_it_table\[\]\[2\][ ]=' drivers/iio/light/stk3310.c
-    defsnc 'static[ ]const[ ]u8[ ]drv2665_sine_wave_form\[\][ ]=' drivers/input/misc/drv2665.c
-    defsnc 'static[ ]const[ ]char[ ]ipr_bit\[\][ ]=' drivers/irqchip/irq-renesas-h8300h.c
-    defsnc 'static[ ]const[ ]struct[ ]multiplier[ ]multipliers\[\][ ]=' drivers/media/pci/cobalt/cobalt-cpld.c
-    defsnc 'static[ ]u8[ ]edid\[256\][ ]=' drivers/media/pci/cobalt/cobalt-driver.c
-    defsnc 'static[ ]const[ ]struct[ ]bdisp_filter_[hv]_spec[ ]bdisp_[hv]_spec\[\][ ]=' drivers/media/platform/sti/bdisp/bdisp-filter.h
-    defsnc '[\t]struct[ ]init_command[ ]genius_vcam_live_start_commands\[\][ ]=' drivers/media/usb/gspca/sn9c2028.c
-    defsnc '[\t]static[ ]const[ ]unsigned[ ]int[ ]t6_reg_ranges\[\][ ]=' drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
-    defsnc 'static[ ]const[ ]struct[ ]mt76_reg_pair[ ]bbp_\(common\|chip\)_vals\[\][ ]=' drivers/net/wireless/mediatek/mt7601u/initvals.h
-    defsnc '[\t]static[ ]const[ ]u8[ ]freq_plan\[14\]\[FREQ_PLAN_REGS\][ ]=' drivers/net/wireless/mediatek/mt7601u/phy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lcd_vip_gpio\|visbus_dout\)_pins\[\][ ]=' drivers/pinctrl/sirf/pinctrl-atlas7.c
-    defsnc 'static[ ]const[ ]u32[ ]bq24257_vbat_map\[\][ ]=' drivers/power/bq24257_charger.c
-    defsnc 'static[ ]const[ ]int[ ]rt9455_\(voreg\|boost_voltage\)_values\[\][ ]=' drivers/power/rt9455_charger.c
-    defsnc '[\t]write_reg[(]par[,][ ]HX8357D_SETGAMMA[,][\n][\t][\t]' drivers/staging/fbtft/fb_hx8357d.c
-    defsnc '[}][ ]isl29018_scales\[4\]\[4\][ ]=' drivers/staging/iio/light/isl29018.c
-    defsnc 'const[ ]u32[ ]dm_tx_bb_gain\[TxBBGainTableLength\][ ]=' drivers/staging/rtl8192e/rtl8192e/rtl_dm.c
-    defsnc 'const[ ]u8[ ]dm_cck_tx_bb_gain\(_ch14\)\?\[CCKTxBBGainTableLength\]\[8\][ ]=' drivers/staging/rtl8192e/rtl8192e/rtl_dm.c
-    defsnc 'static[ ]const[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]const[ ]struct[ ]modeinit[ ]vgamode\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]const[ ]uint8_t[ ]crc7_syndrome_table\[256\][ ]=' drivers/staging/wilc1000/wilc_spi.c
-    defsnc 'static[ ]__s64[ ]__RH_LH_tbl\[128[*]2[+]2\][ ]=' net/ceph/crush/crush_ln_table.h
-    defsnc 'static[ ]__s64[ ]__LL_tbl\[256\][ ]=' net/ceph/crush/crush_ln_table.h
-    defsnc 'static[ ]const[ ]u8[ ]vol_quot_table\[\][ ]=' sound/soc/codecs/sgtl5000.c
-    blobname 'radeon[/]TAHITI_vce\.bin' drivers/gpu/drm/radeon/radeon_vce.c
-    blobname 'elan_i2c_["][ ]ETP_PRODUCT_ID_FORMAT_STRING[ ]["]\.bin' drivers/input/mouse/elan_i2c.h
-    # Is this too broad?
-    blobname '%s%s%s_%s%s' drivers/net/ethernet/cavium/liquidio/libquidio_main.c
-    accept '#define[ ]LIO_FW_NAME_SUFFIX[\t ]*["]\.bin["]' drivers/net/ethernet/cavium/liquidio/liquidio_image.h
-    blobname 'cxgb4[/]\(t6fw\|bcm8483\)\.bin' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-    blobname 'board-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c
-    accept '[\t][/][*][ ]Don.t[ ]trust[ ]error[ ]code[ ]from[ ]otp\.bin[ ][*][/]' drivers/net/wireless/ath/ath10k/core.h
-    blobname 'firmware-5\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac4358-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmacpcie.c
-    blobname 'brcm[/]brcmfmac43241b5-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/sdio.c
-    blobname 'am335x-pm-firmware\.elf' Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
-    blobname 'rtl_bt[/]rtl\(8723[ab]\|8821a\|8761a\)_fw\.bin' drivers/bluetooth/btrtl.c
-    blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\)_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-    blobname 'amdgpu[/]\(tonga\|carrizo\)_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-    blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\)_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
-    blobname 'amdgpu[/]\(tonga\|carrizo\)_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
-    blobname 'radeon[/]\(bonaire\|hawaii\|%s\)_smc\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c
-    blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\|%s\)_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/cik_sdma.c
-    accept '[\t][/][*][ ]request_firmware[ ][*][/]' drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
-    blobname 'amdgpu[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\|%s\)_\(pfp\|me\|ce\|rlc\|mec2\?\|mc\)\.bin' drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
-    blobname 'amdgpu[/]\(tonga\|topaz\|%s\)_mc\.bin' drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
-    blobname 'amdgpu[/]topaz_smc\.bin' drivers/gpu/drm/amd/amdgpu/iceland_dpm.c
-    blobname 'amdgpu[/]\(topaz\|%s\)_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
-    blobname 'amdgpu[/]\(tonga\|carrizo\|%s\)_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
-    blobname 'amdgpu[/]tonga_smc\.bin' drivers/gpu/drm/amd/amdgpu/tonga_dpm.c
-    blobname 'i915[/]skl_dmc_ver1\.bin' drivers/gpu/drm/i915/intel_csr.c
-    blobname 'wdt87xx_\(fw\|cfg\)\.bin' drivers/input/touchscreen/wdt87xx_i2c.c
-    blobname 'dvb-fe-cx24120-1\.20\.58\.2\.fw' drivers/media/dvb-frontends/cx24120.c
-    # FIXME: LIO_... drivers/net/ethernet/cavium/liquidio/lio_main.c
-    blobname 'mt7601u\.bin' drivers/net/wireless/media/tek/mt7601u/usb.h
-    accept '[\t ]*["]request_firmware_nowait[ ]error' drivers/net/wireless/mwifiex/main.c
-    blobname 'atmel[/]wilc1000\(_ap\|_p2p\)\?_fw\.bin' drivers/staging/wilc1000/Makefile
-    blobname 'wifi_firmware\(_ap\|_p2p_concurrency\)\?\.bin' drivers/staging/wilc1000/linux_wlan.c
-    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*linux-firmware\@kernel\.org[\n][^\n]*mailing[ ]lists\.' firmware/README.AddingFirmware
-
-    # New in 4.2.1 and 4.1.8.
-    defsnc '[}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    ;;
-
-  */*freedo*.patch | */*logo*.patch)
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm
-    ;;
-
-  */*firmware-Drop-WARN-from-usermodehelper*.patch)
-    accept '_request_firmware[+]0x'
-    accept '\[<[0-9a-f]*>\][ ]_\?request_firmware[+]'
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware'
-    ;;
-
-  */patch*-3.1[467].*)
-    # False positives in patch-3.17.2, 3.16.7, 3.14.23 and newer.
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
-    # False positive in patch-3.17.6 and newer.
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]rt5670_reg\[\][ ]=[ ][{][*][/][;]' sound/soc/codecs/rt5670.c
-    ;;
-
-  */patch-3.13*)
-    # Introduced in 3.13.2.
-    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]wm5110_s[*][/][;]' sound/soc/codecs/wm5110.c
-    # New in 3.13.7.
-    accept '[\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\([\n][\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\)*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    ;;
-
-  */patch-3.12*)
-    # Introduced in 3.12.10.
-    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
-    # New in 3.13
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'dvb-demod-drxk-01\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?firmware-2\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    blobname 'brcm[/]brcmfmac43\(143\|241b[04]\|29\|3[045]\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'iwlwifi-7265-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    accept '[\t][\t]brightness-levels[ ][=][ ][<][0-9 \t\n]*[>][;]' arch/arm/boot/dts/imx28-tx28.dts
-    accept '[\t]echo[ ]["]mic[/]uos\.img["][ ]' Documentation/mic/mpssd/micctrl
-    accept '[\t]mdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/host/mic_sysfs.c
-    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ \t\n]*mdev->\(ramdisk\|firmware\)[,][ ]mdev->sdev->parent[)][;]' drivers/misc/mic/host/mic_x100.c
-    accept '[\t]*["]\(ramdisk\|firmware\)[ ]request_firmware[ ]failed' drivers/misc/mic/host/mic_x100.c
-    defsnc 'static[ ]const[ ]struct[ ]dsi_clock_table[ ]dsi_clk_tbl\[\][ ]=' drivers/gpu/drm/i915/intel_dsi_pll.c
-    defsnc 'uint32_t[ ]nv108_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
-    defsnc 'uint32_t[ ]nva3_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
-    defsnc 'uint32_t[ ]nvc0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
-    defsnc 'uint32_t[ ]nvd0_pwr_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_hawaii_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    accept '[\t]["]edid[/]\(1024x768\|1280x1024\|1600x1200\|1680x1050\|1920x1080\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc '[\t]unsigned[ ]char[ ]buf\[\][ ]=' drivers/hid/hid-sony.c
-    blobname 'dvb-fe-cx24117\.fw' drivers/media/dvb-frontends/cx24117.c
-    blobname 'vpdma-1b8\.bin' drivers/media/platform/ti-vpe/vpdma.c
-    defsnc 'static[ ]const[ ]u8[ ]ov361x_start_\(2048\|1600\|1024\|640\|320\|160\)\[\]\[2\][ ]=' drivers/media/usb/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]tuning_blk_pattern_[48]bit\[\][ ]=' drivers/mmc/host/dw_mmc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_8192_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc '[\t]static[ ]u8[ ]PN9Data\[\][ ]=' drivers/net/wireless/ath/ath9k/main.c
-    blobname 'wlan[/]prima[/]WCNSS_qcom_wlan_nv\.bin' drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-    defsnc 'static[ ]s32[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
-    blobname 'rtlwifi[/]rtl8188eufw\.bin' drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-    defsnc 'static[ ]unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6656/aes_ccmp.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
-    defsnc 'static[ ]u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc '[}][ ]test2\[\][ ]=' lib/random32.c
-    defsnc 'static[ ]const[ ]struct[ ]hda_verb[ ]hp_bnb13_eq_verbs\[\][ ]=' sound/pci/hda/patch_sigmatel.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]aic3x_reg\[\][ ]=' sound/soc/codecs/tlv320aic3x.c
-    blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
-    blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    # Matches from earlier releases, for the patch from 3.12.
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    accept '[\t]\.firmware[\t]=[ ]' drivers/bluetooth/btmrvl_sdio.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    # Matches specific for the patch from 3.12.
-    accept '[\t]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware' drivers/base/firmware_class.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9462_2p1_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9485Modes_\(high_power_\|green_ob_db\|high_ob_db_\|green_spur_\)[*][/][;]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u32[ ]ar9565_1p0_baseband_pos[*][/][;]' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u16[ ]bios_to_linux_keycode\[2[*][/][;]' drivers/platform/x86/dell-wmi.c
-    # Matches for the reversed patch present in earlier releases.
-    defsnc 'const[ ]char[ ]_[zs]b_findmap\[\][ ]=' arch/s390/kernel/bitmap.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    # Matches specific for the reversed patch.
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=[\t][{][*][/][;]' drivers/staging/rtl8187se/r8185b_init.c
-    ;;
-
-  */patch-3.11*)
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load[(]' drivers/base/firmware_class.c
-    # Already present in 3.11, but modified in 3.12:
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/*.ppm
-    # New in 3.12.
-    blobname 's5p-mfc-v7\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
-    blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
-    blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
-    defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
-    defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    defsnc '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
-    defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a3xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    blobname 'a3[03]0_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/a3xx_gpu.c
-    defsnc 'static[ ]const[ ]struct[ ]ci_pt_defaults[ ]defaults_\(bonaire\|saturn\)_\(xt\|pro\)[ ]=' drivers/gpu/drm/radeon/ci_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]const[ ]struct[ ]kv_lcac_config_values[ ]cpl_local_cac_cfg_kv\[\][ ]=' drivers/gpu/drm/radeon/kv_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]imx_i2c_clk_pair[ ]\(imx\|vf610\)_i2c_clk_div\[\][ ]=' drivers/i2c/busses/i2c-imx.c
-    defsnc 'static[ ]const[ ]u16[ ]apds9300_lux_ratio\[\][ ]=' drivers/iio/light/apds9300.c
-    accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
-    defsnc 'static[ ]const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_4313_ipa_rev0_combo\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    accept '[	][	]adapter->firmware[ ]=[ ]NULL' drivers/net/wireless/mwifiex/main.c
-    defsc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_3053\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]const[ ]int[ ]bq24190_\(ccc_ichg\|cvc_vreg\)_values\[\][ ]=' drivers/power/bq24190_charger.c
-    blobname '[(]i\.e\.[ ]["]asfep\.bin["][)][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '[(]["][/]etc[/]dgap[/]xrfep\.bin["][)][;][ ][*][/]' drivers/staging/dgap/downlod.c
-    blobname '["][/]lib[/]firmware[/]dgap[/]["]' drivers/staging/dgap/downld.c
-    blobname '\(fx\|cx\|cxp\|ibm\(cx\|en\)\|xr\|sx\|pci\)\(bios\|fep\|con\|host\)\.bin' drivers/staging/dgap/downld.c
-    defsnc 'static[ ]const[ ]struct[ ]msi3101_gain[ ]msi3101_gain_lut_\(120\|245\|1000\)\[\][ ]=' drivers/staging/media/msi3101/sdr-msi3101.c
-    defsnc 'static[ ]struct[ ]ch_freq[ ]ch_freq_map\[\][ ]=' drivers/staging/rtl8188eu/core/rtw_rf.c
-    defsnc 'static[ ]\(const\)\?[ ]\?u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u32[ ]T[ed]0\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'const[ ]u8[ ]Td4s\[256\][ ]=' drivers/staging/rtl8188eu/core/rtw_security.c
-    defsnc 'static[ ]u32[ ]array_\(agc_tab\|phy_reg\)_\(1t\|pg\)_8188e\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_BB.c
-    defsnc 'static[ ]u32[ ]array_MAC_REG_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_MAC.c
-    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8188E\[\][ ]=' drivers/staging/rtl8188eu/hal/HalHWImg8188E_RF.c
-    defsnc '[	]u8[	]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/HalPhyRf.c
-    defsnc 'static[ ]const[ ]u16[ ]dB_Invert_Table\[8\]\[12\][ ]=' drivers/staging/rtl8188eu/hal/odm.c
-    blobname 'rtl8188E[/\\]*rtl8188efw\.bin' drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-    defsnc 'static[ ]const[ ]unsigned[ ]long[ ]K\[64\][ ]=' drivers/staging/rtl8188eu/include/rtw_security.h
-    defsnc '[	]static[ ]const[ ]struct[ ]msm_baud_map[ ]table\[\][ ]=' drivers/tty/serial/msm_serial.c
-    defsnc 'static[ ]u8[ ]hx8369_seq_gamma_curve_related\[\][ ]=' drivers/video/backlight/hx8357.c
-    defsnc 'static[ ]const[ ]wchar_t[ ]t2_\(0[012345]\|1[def]\|2[14cd]\|a[67]\|ff\)\[256\][ ]=' fs/cifs/winucase.c
-    accept '[	]*\(\(el\)\?if[ ]\[[ ]-f\|cp[ ]-v[ ]--\)[ ]["][$][{]objtree[}][/]arch[/]mips[/]boot[/]\(compressed[/]\)\?vmlinux\.bin["]' scripts/package/buildtar
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]pcm1681_reg_defaults\[\][ ]=' sound/soc/codecs/pcm1681.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8997_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm8997.c
-    ;;
-
-  */patch-3.10*)
-    # Matches for the reversed patch.
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    accept '[	]return[ ]_request_firmware[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    # Matches of changes from 3.10 adjusted for patch.
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware[(]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=[ ][{]\([*][/][;]\)\?' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9462_2p0_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]request_firmware_nowait[(]' include/linux/firmware.h
-    accept 'static[ ]inline[ ]int[ ]request_firmware\?[(]' include/linux/firmware.h
-    # Present in 3.10, modified in 3.11 patch:
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	]bp->firmware[ ]=[ ]NULL[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-    accept '[	][	]card->firmware[ ]=[ ]data->firmware[;]'  drivers/bluetooth/btmrvl_sdio.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_linux_clut224.ppm
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    # New in 3.11.
-    blobname 'imx[/]sdma[/]sdma-imx6sl\.bin' arch/arm/boot/dts/imx6sl.dtsi
-    initnc '[	]linux,keymap[ ]=[ ]<' 'arch/arm/boot/dts/nspire-\(clp\|cx\|tp\)\.dts'
-    blobname '\(kernel[/]x86[/]microcode[/]\)\?AuthenticAMD\.bin' arch/x86/kernel/microcode_amd_early.c
-    initnc '[	 ]*FMC:[ ]poor[ ]dump[ ]of[ ]sdb[ ]first[ ]level:' Documentation/fmc/parameters.txt
-    accept 'static[ ]int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-370.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/armada-xp.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    accept '[][ 0-9.]*fake-fmc-carrier:[ ]Mezzanine[ ]0:[ ]eeprom[ ]["]fdelay-eeprom\.bin["]' Documentation/fmc/fmc-fakedev.txt
-    accept '[][ 0-9.]*spec[ ][024:.]*[ ]got[ ]file[ ]["]fmc[/]spec-init\.bin["]' Documentation/fmc/fmc-write-eeprom.txt
-    defsnc 'static[ ]char[ ]ff_eeimg\[FF_MAX_MEZZANINES\]\[FF_EEPROM_SIZE\][ ]=' drivers/fmc/fmc-fakedev.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]gw[,][ ][&]fmc->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ff_eeprom\[i\][,][ ][&]ff->dev[)][;]' drivers/fmc/fmc-fakedev.c
-    accept '[	]if[ ][(][!]strcmp[(]last4[,][ ]["]\.bin["][)][)]' drivers/fmc/fmc-write-eeprom.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw[,][ ]s[,][ ]dev[)][;]' drivers/fmc/fmc-write-eeprom.c
-    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|unk40xx\|unk46xx\|unk78xx\|gpc_[01]\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
-    defsnc 'nvc1_grctx_init_\(icmd\|9097\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
-    defsnc 'nvc3_grctx_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc3.c
-    defsnc 'nvc8_grctx_init_\(icmd\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
-    defsnc 'nvd7_grctx_init_\(unk40xx\|unk58xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
-    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|unk40xx\|unk58xx\|gpc_0\|tpc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
-    defsnc 'nve4_grctx_init_\(icmd\|a097\|unk40xx\|unk46xx\|unk58xx\|unk64xx\|rop\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
-    defsnc 'nvf0_grctx_init_\(unk40xx\|unk64xx\|unk88xx\|gpc_0\|tpc\|unk\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
-    defsnc 'uint32_t[ ]nvd7_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
-    defsnc 'uint32_t[ ]nvd7_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h
-    defsnc 'uint32_t[ ]nvf0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
-    defsnc 'nvc0_graph_init_\(regs\|[gt]pc\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    defsnc 'nvc1_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc1.c
-    defsnc 'nvc3_graph_init_tpc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc3.c
-    defsnc 'nvc8_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
-    defsnc 'nvd7_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd7.c
-    defsnc 'nvd9_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
-    defsnc 'nve4_graph_init_\(regs\|[gt]pc\|unk\|unk88xx\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
-    defsnc 'nvf0_graph_init_[gt]pc\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    defsnc '[	][}][ ]magic\[\][ ]=[ ][{][\n][	][	][{][ ]0x020520[,]' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
-    blobname 'nouveau[/]nv84_xuc%03x' drivers/gpu/drm/nouveau/core/engine/graph/xtensa.c
-    defsnc 'nv50_fb_memtype\[0x80\][ ]=' drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|caicos\|turks\)_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'u32[ ]btc_valid_sclk\[40\][ ]=' drivers/gpu/drm/radeon/btc_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]\(bonaire\|spectre\|kalindi\)_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]const[ ]u32[ ]bonaire_io_mc_regs\[BONAIRE_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
-    blobname 'radeon[/]\(BONAIRE\|KAVERI\|KABINI\|%s\)_\(pfp\|[mc]ec\?\|rlc\|s\?mc\|sdma\)\.bin' drivers/gpu/drm/radeon/cik.c
-    defsnc 'static[ ]u32[ ]sumo_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/evergreen.c
-    defsnc 'static[ ]u32[ ]tn_rlc_save_restore_register_list\[\][ ]=' drivers/gpu/drm/radeon/ni.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|m[ec]\|rlc\|smc\)\.bin' 'drivers/gpu/drm/radeon/[ns]i\.c'
-    defsnc 'static[ ]const[ ]struct[ ]ni_cac_weights[ ]cac_weights_cayman_\(xt\|pro\|le\)[ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]\(R\([67]0\|V6[1237]\|S7[1378]\)[05]\|CEDAR\|REDWOOD\|JUNIPER\|CYPRESS\|SUMO2\?\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/r600.c
-    defsnc 'static[ ]const[ ]u32[ ]cayman_\(\(cgcg_cgls\|sysls\)_\(default\|disable\|enable\)\|mgcg_default\)\[\][ ]=' drivers/gpu/drm/radeon/ni_dpm.c
-    blobname 'radeon[/]BONAIRE_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
-    blobname 'radeon[/]\(TAHITI\|PITCARIN\|VERDE\|OLAND\|HAINAN\|%s\)_\(pfp\|[mc]e\|rlc\|s\?mc\)\.bin' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]struct[ ]dll_speed_setting[ ]dll_speed_table\[16\][ ]=' drivers/gpu/drm/radeon/rv740_dpm.c
-    defsnc 'static[ ]const[ ]u8[ ]\(rv7[7314]0\|cedar\|redwood\|juniper\|cypress\|barts\|turks\|caicos\|cayman\)_smc_int_vectors\[\][ ]=' drivers/gpu/drm/radeon/rv770_smc.c
-    defsnc 'static[ ]const[ ]struct[ ]si_dte_data[ ]dte_data_\(tahiti\(_le\|_pro\)\?\|new_zealand\|aruba_pro\|malta\|pitcairn\|curacao_\(xt\|pro\)\|neptune_xt\|cape_verde\|venus_\(xtx\?\|pro\)\|oland\|mars_pro\|sun_xt\)[ ]=' drivers/gpu/drm/radeon/si_dpm.c
-    defsnc 'static[ ]const[ ]u32[ ]trinity_\(mgcg_shls_default\|sysls_\(default\|disable\|enable\)\|override_mgpg_sequences\)\[\][ ]=' drivers/gpu/drm/radeon/trinity_dpm.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hex_table\[256\][ ]=' drivers/md/dm-switch.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_revb_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    blobname 'c\(b\|t2\?\)fw-3\.2\.1\.0\.bin' 'drivers/\(net/ethernet/brocade/bna/cna\.h\|scsi/bfa/bfad\.c\)'
-    blobname 'rtl_nic[/]rtl8411-2\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'ath10k[/]QCA988X[/]hw[12]\.0' drivers/net/wireless/ath/ath10k/hw.h
-    blobname '\(ath10k[/]QCA988X[/]hw[12]\.0[/]\)\?\(firmware\|otp\|board\)\.bin' drivers/net/wireless/ath/ath10k/hw.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_modes_mix_ob_db_tx_gain_table_2p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_5g_xlna_only_rxgain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\|radio\)_core\|common_\(mixed_\|wo_xlna_\|5g_xlna_only_\)\?rx_gain\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p1_\(\(mac\|baseband\)_postamble\|modes_\(low\|high\|mix\)_ob_db_tx_gain\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p1_initvals.h
-    blobname '\(boot_cw1x60\|\(wsm\|sdd\)_\(cw1x60\|22\|20\|11\|10\)\)\.bin' drivers/net/wireless/cw1200/fwio.h
-    accept '[ ][*][ ]4\.[ ]save[ ]as[ ]["]iNVM_xxx\.bin["]' drivers/net/wireless/iwlwifi/mvm/nvm.c
-    accept 'static[ ]const[ ]struct[ ]mwifiex_sdio_device[ ]mwifiex_sdio_sd[^ ]*[ ]=[ ][{][\n][ 	]*\.firmware[ ]=' drivers/net/wireless/mwifiex/sdio.h
-    blobname 'sdd_sagrad_1091_1098\.bin' 'drivers/net/wireless/cw1200/cw1200_sdio\.c\|include/linux/platform_data/net-cw1200\.h'
-    accept '[/][*][ ]An[ ]example[^*]*[\n][	 ]*\.sdd_file[ ]=[ ]["]sdd_\(sagrad_1091_1098\|myplatform\)\.bin["][,]' include/linux/platform_data/net-cw1200.h
-    defsnc 'static[ ]unsigned[ ]const[ ]score_pins\[BYT_NGPIO_SCORE\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]unsigned[ ]const[ ]sus_pins\[BYT_NGPIO_SUS\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
-    blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
-    blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
-    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ssm2518_reg_defaults\[\][ ]=' sound/soc/codecs/ssm2518.c
-    ;;
-
-  */patch-3.9*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9485_1_1_baseband_pos\([*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]_request_firmware_load\(struct[*][/][;]\)\?' drivers/base/firmware_class.c
-    ;;
-
-  */patch-3.8*)
-    # Present in 3.8 but patched in stable releases.
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    # ath9k firmware is now Free Software.
-    accept '[	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]1[,][ ]name[,][ ]sc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*[&]ec[,][ ]ath9k_eeprom_request_cb[)][;]' drivers/net/wireless/ath/ath9k/init.c
-    accept '[#]define[ ]FIRMWARE_AR7010_1_1[ 	]*["]htc_7010\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[#]define[ ]FIRMWARE_AR9271[ 	]*["]htc_9271\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR7010_1_1[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept 'MODULE_FIRMWARE[(]FIRMWARE_AR9271[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]true[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[,][ ]GFP_KERNEL[,][\n][ 	]*hif_dev[,][ ]ath9k_hif_usb_firmware_cb[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]hif_dev->firmware[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]hif_dev->fw_name[,][\n][ 	]*[&]hif_dev->udev->dev[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # Present in 3.8
-    accept '[	]-[ ]request_firmware[(][)][ ]hotplug[ ]interface[ ]info.' Documentation/00-INDEX
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    accept '#define[ ]CONFIG_PATH[ ]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6655/device_cfg.h
-    # For 3.8-to-3.9 patch:
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_load\|_work_func\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_f\(c0011\[\][ ]=\)\?\(\([ ][{]\)\?[*][/][;]\)\?' drivers/media/dvb/frontends/af9033_priv.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=\([ ]\?[{]\?[*][/][;]\)\?' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[	]\.firmware[ ]=[ ]\(DW210[24]\|DW3101\|S630\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]\(P1100\|S660\|P7500\)_FIRMWARE' drivers/media/usb/dvb-usb/dw2102.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_pos\(tamble\[\]\[5\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx\(_gain_table\[\]\[9\][ ]=\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=\([*][/][;]\)\?' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    # New in 3.9
-    blobname 'imx[/]sdma[/]sdma-imx6q\.bin' arch/arm/boot/dts/imx6qdl.dtsi
-    accept '[	]*nvidia,emc-registers[ ]=[ 	]*<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra20-colibri-512.dtsi
-    blobname 'kernel[/]x86[/]microcode[/]GenuineIntel\.bin' arch/x86/kernel/microcode_intel_early.c
-    accept '[0-9][0-9]*[	][0-3][	][0-3][	]0\([\n][0-9][0-9]*[	][0-3][	][0-3][	]0\)*' Documentation/thermal/intel_powerclamp.txt
-    accept '[	]return[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n]_request_firmware_prepare[(]struct[ ]firmware[ ][*][*]\?firmware_p' drivers/base/firmware_class.c
-    accept '[/][*][ ]called[ ]from[ ]request_firmware[(][)][ ]and[ ]request_firmware_work_func[(][)][ ][*][/]' drivers/base/firmware_class.c
-    accept '[	]_request_firmware[(][&]fw[,][ ]fw_work->name' drivers/base/firmware_class.c
-    accept '[	]put_device[(]fw_work->device[)][;][ ][/][*][ ]taken[ ]in[ ]request_firmware_nowait[(][)][ ][*][/]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_v14_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]u32[ ]oland_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]u8[ ]sixaxis_rdesc_fixup2\?\[\][ ]=' drivers/hid/hid-sony.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc0012\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
-    blobname 'SlimISP_\(%\.2s\|..\)\.bin' drivers/media/i2c/s5c73m3/s5c73m3-core.c
-    defsc 'static[ ]const[ ]struct[ ]i2c_rv[ ]ov965x_init_regs\[\][ ]=' drivers/media/i2c/ov9650.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7049_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-vp7049-0\.95\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    # The blob name is just the chip name, so no point in deblobbing;
-    # more so considering the number of false positives this would
-    # bring about.
-    # blobname 'lp5521' drivers/leds/leds-lp5521.c
-    # blobname 'lp55231\?' drivers/leds/leds-lp5523.c
-    blobname 'lattice-ecp3\.bit' drivers/misc/lattice-ecp3-config.c
-    defsnc '[	]*static[ ]const[ ]uint8_t[ ]rss_key\[UPT1_RSS_MAX_KEY_SIZE\][ ]=' drivers/net/vmxnet3/vmxnet3_drv.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(mixed_ob_db\|type5\)_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Modes_low_ob_db_and_spur_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_green_spur_ob_db_tx_gain_1_1\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9580_1p0_type6_tx_gain_table\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h
-    blobname 'iwlwifi-\(7260\|3160\)-' drivers/net/wireless/iwlwifi/pcie/7000.c
-    blobname 'mrvl[/]pcie8897_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
-    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie\(8766\|8897\)[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
-    accept '[	][	]card->pcie\.firmware[ ]=' drivers/net/wireless/mwifiex/pcie.c
-    accept '[	][	]\.per_chan_pwr_limit_arr_11abg[ 	]*=[ ][{][	 0xf,\n]*' drivers/net/wireless/ti/wl18xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-fw-2\.bin' drivers/net/wireless/ti/wl18xx/main.c
-    blobname '%s-dsp%d-%s\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_addr[ ]\(idle_\)\?reg_addrs\[\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    blobname '83xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dump_num_registers\[NUM_CHIPS\]\[NUM_PRESETS\][ ]=' drivers/net/ethernet/broadcom/bnx2x/bnx2x_dump.h
-    defsnc 'static[ ]int[ ]pm2xxx_charger_voltage_map\[\][ ]=' drivers/power/pm2301_charger.c
-    accept '[ ][*][ ]comedi[ ]drivers\.[ ]The[ ]request_firmware[(][)][ ]hotplug' drivers/staging/comedi/comedi.h
-    blobname 'rp2\.fw' drivers/tty/serial/rp2.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]seq_\(w\|rgb\)_gamma\[\][ ]=' drivers/video/backlight/lms501kf03.c
-    defsnc '[#]include[ ]<video[/]mmp_disp\.h>[\n]*static[ ]u16[ ]init\[\][ ]=' drivers/video/mmp/panel/tpo_tj032md01bw.c
-    defsnc 'static[ ]struct[ ]tegra_clk_pll_freq_table[ ]pll_[mpadcu]_freq_table\[\][ ]=' 'drivers/clk/tegra/clk-tegra[23]0\.c'
-    blobname 'ctefx\.bin' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]unsigned[ ]int[ ]\(voice_focus\|mic_svm\|equalizer\)_vals_lookup\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]struct[ ]hda_verb[ ]ca0132_init_verbs0\[\][ ]=' sound/pci/hda/patch_ca0132.c
-    defsnc 'static[ ]const[ ]int[ ]dmic_comp\[6\]\[6\][ ]=' sound/soc/codecs/max98090.c
-    # Reverse 3.8-to-3.9 patch:
-    accept '0x102c[ ][ ][ ][ ][ ]0x6151[\n]'"$blobpat*" Documentation/video4linux/et61x251.txt
-    accept '0x041e[ ][ ][ ][ ][ ]0x4017[\n]'"$blobpat*" Documentation/video4linux/zc0301.txt
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\(void\|int\)[ ]\)\?_\?request_firmware\(_cleanup\|_prepare\)\?[(]' drivers/base/firmware_class.c
-    accept '[	]*\(\(fw_priv\|ret\)[ ]=[ ]\)\?_\?request_firmware_\(load\|prepare\|cleanup\)' drivers/base/firmware_class.c
-    defsnc '[	]static[ ]u_short[ ]geometry_table\[\]\[[45]\][ ]=' drivers/block/xd.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    accept '[	]\.firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]' drivers/media/usb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc '[	]#define[ ]WakeupSeq[ ][ ][ ][ ][{]' drivers/net/ethernet/i825xx/eepro.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(SiS\|XGI\)_[ME]CLKData\(Struct\)\?[ ]XGI\(340\|27\)\(\(New\)\?_[ME]CLKData\[\][ ]*=\|N\)\?\([ ]\?[{]\?[*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    ;;
-
-  */drm-qxl-driver.patch)
-    defsnc '[	][}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
-    ;;
-
-  */patch-3.7*)
-    # Removed chunks matched by entries that don't appear in the patch context.
-    initnc '[	]0x019806b8[,][\n][	]0x1427f116[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0xf1160198[,][\n][	]0xb6041427[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    # Present in 3.7 and removed in the patch (for --reverse-patch).
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    defsnc 'unsigned[ ]char[ ]\(QUALITY\|STRENGTH\)_MAP\[\][ ]=' drivers/staging/rtl8187se/r8180_core.c
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc '\(static[ ]const[ ]\)\?u\(8\|16\|32\)[ ]\(rtl8225\(z2\)\?_\(threshold\|gain_\(a\|bg\)\|chan\|rxgain\|agc\|tx_\(gain_cck\|power\)_ofdm\|tx_power_cck\(_ch14\)\?\)\|ZEBRA2_CCK_OFDM_GAIN_SETTING\)\[\][ ]\?=' drivers/staging/rtl8187se/r8180_rtl8225z2.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    # Chunks matched by other entries that don't appear in the patch context.
-    initnc '[	][{][ ]19200000[,][ ]216000000[,]' arch/arm/mach-tegra/tegra20_clocks_data.c
-    initnc '[	]0x16019806[,][\n][	]0x041427f1[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h
-    initnc '[	]0x98069221[,][\n][	]0x27f11601[,]' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    initnc '[	][{]0x0000a284\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    initnc '[	][{]0x0000a574\([,][ ]0x9c1fff0b\)*\([,][ ]0x5e001eeb\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a580[,][ ]0x00000000[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a584\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000a0b4\([,][ ]0x00000000\)*\([,][ ]0x00000150\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    initnc '[	][{]0x0000982c\([,][ ]0x05eea6d4\)*[}][,]' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    initnc '[	][{][ ]184[,][ ]0x00[ ][}][,]' sound/soc/codecs/lm49453.c
-    # Already present in 3.7.
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw.c'
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    blobname '\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname '\([/]lib[/]firmware[/]\)\?\(gdm72xx[/]\)\?gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    defsnc '[}][ ]sisfb_ddc[sf]modes\[\][ ]\(__devinitdata[ ]\)\?=' drivers/video/sis/sis_main.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]lms283gf05_seq[ ]disp_\(init\|pwdn\)seq\[\][ ]=' drivers/video/backlight/lms283gf05.c
-    blobname 'cxgb4[/]t4fw\.bin' 'drivers/\(net/cxgb4/cxgb4_main\.c\|scsi/csiostor/csio_hw\.h\)'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKData\(Struct\)\?[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6[BE]\[8\]\[4\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ExtStruct[ ][ ]\?XGI330_EModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI\|SiS\)_StandTable\(Struct\|_S\)[ ]XGI330_StandTable\(\[\]\)\?[ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\([/][*]\)\?\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LCDData\(Struct\)\?[ ][ ]\?XGI_\(\(St2\?\|Ext\)LCD\(1024x768\|1280x1024\)\|NoScaling\)Data\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?\(XGI330\|SiS\)_LVDSData\(Struct\)\?[ ][ ]\?XGI\(330\)\?_LVDS\(320x480\|800x600\|1024x768\|1280x\(1024\|768[NS]\?\)\|1400x1050\|640x480\)Data_[12]\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?\(struct[ ]\)\?XGI_ModeResInfo\(Struct\|_S\)[ ]XGI330_ModeResInfo\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '\(static[ ]\)\?const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]int[ ]\(__devinit[ ]\)\?azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-
-    # New in 3.8
-    accept 'K_table:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-    defsnc 'const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    accept '[ ]request_firmware[ ]can[ ]be[ ]called[ ]safely' Documentation/firmware_class/README
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]armada_370_xp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]__initconst[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]=' drivers/clk/mvebu/clk-core.c
-    defsnc 'static[ ]const[ ]int[ ]h_coef_8t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_H_8T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]int[ ]v_coef_4t\[GSC_COEF_RATIO\]\[GSC_COEF_ATTR\]\[GSC_COEF_V_4T\][ ]=' drivers/gpu/drm/exynos/exynos_drm_gsc.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_1TARRAY\[RTL8723E_PHY_REG_1TARRAY_LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EPHY_REG_ARRAY_PG\[RTL8723E_PHY_REG_ARRAY_PGLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[Rtl8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EMAC_ARRAY\[RTL8723E_MACARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'u32[ ]RTL8723EAGCTAB_1TARRAY\[RTL8723E_AGCTAB_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
-    defsnc 'static[ ]struct[ ]abx500_v_to_cap[ ]cap_tbl\(_[AB]_thermistor\)\?\[\][ ]=' drivers/power/ab8500_bmdata.c
-    defsnc 'static[ ]u16[ ]rx51_temp_table2\[\][ ]=' drivers/power/rx51_battery.c
-    defsnc 'static[ ]const[ ]u32[ ]runnable_avg_yN_\(inv\|sum\)\[\][ ]=' kernel/sched/fair.c
-    defsnc '[	]static[ ]const[ ]u32[ ]base\[4\]\[10\][ ]=' net/wireless/util.c
-    defsnc 'static[ ]unsigned[ ]short[ ]init[1234]\[128\][ ]=' sound/isa/sb/emu8000.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8750_reg_defaults\[\][ ]=' sound/soc/codecs/wm8750.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8770_reg_defaults\[\][ ]=' sound/soc/codecs/wm8770.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8971_reg_defaults\[\][ ]=' sound/soc/codecs/wm8971.c
-    blobname 'nouveau[/]nv%02x_fuc%03x[dc]\?' drivers/gpu/drm/nouveau/core/core/falcon.c
-    blobname 'ar5523\.bin' drivers/net/wireless/ath/ar5523/ar5523.h
-    blobname 'rtlwifi[/]rtl8723\(ae\)\?fw\(_B\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-    blobname '%s-dsp%d\.\(wmfw\|bin\)' sound/soc/codecs/wm_adsp.c
-    blobname 'fw-4\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hdsp->firmware[ ]=[ ]fw' sound/pci/rme9652/hdsp.c
-    ;;
-
-  */patch-3.6*)
-    # Present in patch for 3.6.4.
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # Present in patch for 3.6.5.
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_2p2\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
-    # Specific to the 3.7 patch
-    accept '[	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]\(p1100\|s660\|p7500\)->firmware[ ]=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[	]-[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]7[)],[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][ ]request_firmware[(][)][ ]returns[ ]non-zero' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(]firmware_p[)][;]' drivers/base/firmware_class.c
-    accept '[ ][*][	]Asynchronous[ ]variant[ ]of[ ]request_firmware[(][)]' drivers/base/firmware_class.c
-    accept 'request_firmware\(_nowait\)\?[(]' drivers/base/firmware_class.c
-    accept 'static[ ]inline[ ]int[ ]request_firmware\(_nowait\)\?[(]' include/linux/firmware.h
-    accept '[	][	]err[ ]=[ ]request_firmware_nowait[(]THIS_MODULE,[ ]true,[ ]patch\[dev\],' sound/pci/hda/hda_intel.c
-    accept '[	][{]0x00009e1c,[ ]0x0001cf9c,[ ]0x[0-9a-fx{},\n	 ]*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
-    accept '[;][/][*]@@[ ]-391,17[ ][+]407,17[ ]@@[*][/][;][\n]\([ ]*[123],\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*1,\)*' scripts/dtc/dtc-lexer.lex.c_shipped
-    accept '[;][/][*]@@[ ]-395,16[ ][+]423,16[ ]@@[*][/][;][\n][ ]*0,\([ ]*2,\)*[\n]\(\([ ]*[ 1234][0-9],\)*[\n]\)*\([ ]*2,\)*' scripts/dtc/dtc-parser.tab.c_shipped
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[ 12][0-9],\)*[\n]\)*\([ ]*[12][0-9],\)*[ ]*24' scripts/dtc/dtc-parser.tab.c_shipped
-    
-    # Already in 3.6, but changed or moved thus present in patch to 3.7:
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    accept '[ ][ ][ ][/][*][ ]\(SQCIF\|QSIF\|QCIF\|SIF\|CIF\|VGA\)[ ][*][/][\n][ ][ ][ ][{][\n][ ][ ][ ][ ][ ][ ][{]'"$blobpat*" drivers/media/video/pwc/pwc-nala.h
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    defsnc 'static[ ]const[ ]u32[ ]s[1-7]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]sb8\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'static[ ]const[ ]u32[ ]Tm\[24\]\[8\][ ]=' crypto/cast6_generic.c
-    defsnc 'static[ ]const[ ]u8[ ]Tr\[4\]\[8\][ ]=' crpto/cast6_generic.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\([ ]request_firmware[(][)][ ]hotplug[ ]interface:[\n][ ]--*[\n].*[ ]\)\?-[ ]request_firmware_nowait[(][)][ ]is[ ]also[ ]provided[ ]for[ ]convenience' Documentation/firmware_class/README
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept 'EXPORT_SYMBOL[(]request_firmware\(_nowait\)\?[)][;]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]u8[ ]samsung_tbmu24112_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc 'static[ ]u8[ ]alps_tdee4_stv0297_inittab\[\][ ]=' drivers/media/common/b2c2/flexcop-fe-tuner.c
-    defsnc '[}][ ]hps_h_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc '[}][ ]hps_v_coeff_tab[ ]\[\][ ]=' drivers/media/common/saa7146/saa7146_hlp.c
-    defsnc 'static[ ]unsigned[ ]int[ ]bitrates\[3\]\[16\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]unsigned[ ]int[ ]ac3_bitrates\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]u32[ ]ac3_frames\[3\]\[32\][ ]=' drivers/media/dvb-core/dvb_filter.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]logtable\[256\][ ]=' drivers/media/dvb-core/dvb_math.c
-    defsnc 'static[ ]const[ ]struct[ ]af9013_coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(snr_table\|af9013_snr\)[ ]\(qpsk\|qam\(16\|64\)\)_snr_\(table\|lut\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]\(regdesc\|af9013_reg_bit\)[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
-    defsnc 'static[ ]u8[ ]stv0288_bsbe1_d01a_inittab\[\][ ]=' drivers/media/dvb/frontends/bsbe1-d01a.h
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]init_tab[ ]\?\[\][ ]=' 'drivers/media/dvb/frontends/cx2270\(0\|2\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc '\(static[ ]const[ ]\)\?u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_mod_vals[ ]reg_mod_vals_tab\[\][ ]=' drivers/media/dvb/frontends/hd29l2_priv.h
-    defsnc 'static[ ]struct[ ]adctable[ ]tab[1-8]\[\][ ]=' drivers/media/dvb/frontends/it913x-fe-priv.h
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc '[}][ ]init_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]vsb_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam256_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc '[}][ ]qam64_snr_tab\[\][ ]=' drivers/media/dvb-frontends/s5h1409.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]u8[ ]serit_sp1511lhb_inittab\[\][ ]=' drivers/media/dvb/frontends/si21xx.c
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]stb0899_tab[ ]stb0899_\(cn\|dvbs2\?rf\|quant\|est\)_tab\[\][ ]=' drivers/media/dvb/frontends/stb0899_drv.c
-    defsnc 'static[ ]const[ ]struct[ ]stb6100_lkup[ ]lkup\[\][ ]=' drivers/media/dvb/frontends/stb6100.c
-    defsnc 'static[ ]u8[ ]stv0288_inittab\[\][ ]=' drivers/media/dvb/frontends/stv0288.c
-    defsnc 'static[ ]u8[ ]tda10021_inittab\[0x40\]=' drivers/media/dvb/frontends/tda10021.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    defsnc '[	]struct[ ]tda10071_reg_val_mask[ ]tab2\[\][ ]=' drivers/media/dvb/frontends/tda10071.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]u8[ ]tda8083_init_tab[ ]\[\][ ]=' drivers/media/dvb/frontends/tda8083.c
-    defsnc 'static[ ]u8[ ]ves1820_inittab\[\][ ]=' drivers/media/dvb/frontends/ves1820.c
-    defsnc 'static[ ]u8[ ]init_1[89]93_w\?tab[ ]\?\[\][ ]=' drivers/media/dvb/frontends/ves1x93.c
-    defsnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]='
-    initnc 'static[ ]struct[ ]regval_list[ ]ov7670_default_regs\[\][ ]=' drivers/media/i2c/ov7670.c
-    defsnc 'static[ ]struct[ ]s5k6aa_regval[ ]s5k6aa_analog_config\[\][ ]=' drivers/media/video/s5k6aa.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc '\(const[ ]static\|static[ ]const\)[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc '[	]unsigned[ ]char[ ]saa7111_regs\[\][ ]=' drivers/media/parport/w9966.c
-    initnc 'static[ ]int[ ]miro_fmtuner\[\][ ][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    initnc 'static[ ]int[ ]miro_tunermap\[\][ ]=' drivers/media/video/bt8xx/bt-cards.c
-    defsnc 'static[ ]u8[ ]SRAM_Table\[\]\[60\][ ]=' drivers/media/pci/bt8xx/bttv-driver.c
-    defsnc '[	]static[ ]u8[ ]init_bufs\[13\]\[5\][ ]=' drivers/media/pci/cx88/cx88-cards.c
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc '[	]static[ ]u16[ ]jpeg_tables\[\]\[70\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc '[	]static[ ]u16[ ]tables\[\][ ]=' drivers/media/pci/meye/meye.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    defsnc 'static[ ]const[ ]u8[ ]va1j5jf8007[ts]_\(2[05]mhz_\)\?prepare_bufs\[\]\[2\][ ]=' 'drivers/media/dvb/pt1/va1j5jf8007[st]\.c'
-    defsnc '[}][ ]mxb_saa7740_init\[\][ ]=' drivers/media/pci/saa7146/mxb.c
-    defsnc 'static[ ]u8[ ]nexusca_stv0297_inittab\[\][ ]=' drivers/media/dvb/ttpci/av7110.c
-    accept '[	]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
-    accept '[	]ret[ ]=[ ]request_firmware[(][^;]*[)][;][\n][	]if[ ][(]ret[)][ ][{][^}]*[}][\n][\n][	]mwdebi[(]av7110,[ ]DEBISWAB,[ ]DPRAM_BASE' drivers/media/dvb/ttpci/av7110_fw.c
-    accept 'MODULE_FIRMWARE[(]["]av7110[/]bootcode\.bin["][)][;]' drivers/media/dvb/ttpci/av7110_fw.c
-    defsnc 'static[ ]u16[ ]default_key_map[ ]\[256\][ ]=' drivers/media/pci/ttpci/av7110_ir.c
-    defsnc 'static[ ]u8[ ]saa7113_init_regs\[\][ ]=' drivers/media/pci/ttpci/av7110_v4l.c
-    defsnc 'static[ ]const[ ]u8[ ]saa7113_tab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_sd1878_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-av.c
-    defsnc 'static[ ]u8[ ]philips_su1278_tt_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]qtbl_\(lu\|chro\)minance\[4\]\[64\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hactblg0\[162\][ ]=' drivers/media/video/s5p-jpeg/jpeg-core.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c # >= 2.6.26
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c # >= 2.6.26
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]iso_regs\[8\]\[4\][ ]=' drivers/media/usb/cpia2/cpia2_usb.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    defsnc 'static[ ]struct[ ]dib0090_wbd_slope[ ]dib7090e_wbd_table\[\][ ]=' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]u8[ ]init_code\[\]\[2\][ ]=' drivers/media/dvb/dvb-usb/friio-fe.c
-    defsnc 'static[ ]u8[ ]opera1_inittab\[\][ ]=' drivers/media/usb/dvb-usb/opera1.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx11646_fw1\[\]\[3\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]struct[ ]validx[ ]tbl_\(commm\?on\|init_\(at_startup\|post_alt\)\|sensor_settings_common\(_[ab]\|1\)\|big\(_[abc]\|[123]\)\|640\|800\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\).c'
-    defsc 'static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    defsnc 'static[ ]u8[ ][*]tbl_\(640\|800\|1280\)\[\][ ]=' 'drivers/media/video/gspca/gl860/gl860-\(mi1320\|ov9655\).c'
-    defsnc '[	]struct[ ]jlj_command[ ]start_commands\[\][ ]=' drivers/media/video/gspca/jeilinj.c
-    defsnc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc '[	][	]\(static[ ]\)\?const[ ]struct[ ]sensor_w_data[ ]\(cif\|vga\)_sensor[01]_init_data\[\][ ]=' drivers/media/video/gspca/mr97310a.c
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]const[ ]unsigned[ ]char[ ]\(y\|uv\)QuanTable51[18]\[\][ ]=' 'drivers/media/video/\(ov511\|gspca/ov519\)\.c'
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(ov965x\|ov971x\|ov562x\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]\(int\|s16\)[ ]hsv_\(red\|green\|blue\)_[xy]\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\|soi768\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]\(__\)\?u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[[23]\][ ]=' drivers/media/video/gspca/spca508.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]\(__\)\?u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_\(om6802\|other\|tas5130a\)\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]DQT\[17\]\[130\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]struct[ ]cmd[ ]tp6810_late_start\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]struct[ ]cmd[ ]sensor_init\[\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[NGAMMA\]\[3\]\[1024\][ ]=' drivers/media/video/gspca/topro.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_\(init\(_common\|Q\?VGA\|_end_1\|_start_3\)\|gamma\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]hash_table_ops\[64[*]4\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]MulIdx\[16\]\[16\][ ]=' drivers/media/usb/pwc/pwc-dec23.c
-    defsnc 'const[ ]struct[ ]Kiara_table_entry[ ]Kiara_table\[PSZ_MAX\]\[6\]\[4\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]unsigned[ ]int[ ]KiaraRomTable[ ]\[8\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-kiara.c
-    defsnc 'const[ ]struct[ ]Timon_table_entry[ ]Timon_table\[PSZ_MAX\]\[PWC_FPS_MAX_TIMON\]\[4\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    defsnc 'const[ ]unsigned[ ]int[ ]TimonRomTable[ ]\[16\]\[2\]\[16\]\[8\][ ]=' drivers/media/video/pwc/pwc-timon.c
-    initnc 'static[ ]const[ ]u8[ ]SN9C102_\(Y\|UV\)_QTABLE[01]\[64\][ ]=[ ][{]' drivers/media/usb/sn9c102/sn9c102_config.h
-    initnc '[	]static[ ]\(const[ ]\)\?u8[ ]jpeg_header\[589\][ ]=[ ][{]' media/video/sn9c102/sn9c102_core.c
-    accept '[	][	]\?err[ ]=[ ]sn9c102_write_const_regs[(]cam\(,[ 	\n]\+[{]0x[0-9a-fA-F][0-9a-fA-F],[ ]0x[0-9a-fA-F][0-9a-fA-F][}]\)*[)][;]'
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-sensor.c
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]=' drivers/media/usb/stkwebcam/stk-webcam.c
-    defsnc 'static[ ]u8[ ]dvbc_philips_tdm1316l_inittab\[\][ ]=' drivers/media/dvb/ttpci/budget-ci.c
-    defsnc '[	]u8[ ]b\[\][ ]=' drivers/media/usb/ttusb-dec/ttusbdecfe.c
-    defsnc '[	]static[ ]char[ ]init_values\[38\]\[3\][ ]=' drivers/media/video/usbvision/usbvision-core.c
-    defsnc 'static[ ]unsigned[ ]char[ ]header2\[\][ ]=' drivers/media/usb/zr364xx/zr364xx.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]static_pad\[\][ ]=' drivers/s390/crypto/zcrypt_msgtype6.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    # New in 3.7:
-    blobname 'imx[/]sdma[/]sdma-imx6q-to1\.bin' arch/arm/boot/dts/imx6q.dtsi
-    accept 'AES_T[ed]:\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*[\n][@][ ]T[ed]4\[256\]\([\n]\.byte[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([\n][@][ ]rcon\[\]\([\n]\.word[	]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*\)*\([,][ ]0\)*\)\?' arch/arm/crypto/aes-armv4.S
-    defsnc 'const[ ]u32[ ]cast5_s[1234]\[256\][ ]=' crypto/cast5_generic.c
-    defsnc 'const[ ]u32[ ]cast6_s[1234]\[256\][ ]=' crypto/cast6_generic.c
-    accept '[ ][*][ ]Once[ ]it[ ]returns[ ]successfully[,][ ]driver[ ]can[ ]use[ ]request_firmware' drivers/base/firmware_class.c
-    accept 'int[\n ]cache_firmware[(]const[ ]char[ ][*]fw_name[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[ ][*][ ]If[ ]one[ ]device[ ]called[ ]request_firmware' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]struct[ ]mV_pos[ ]__cpuinitconst[ ]\(vrm85\|mobilevrm\)_mV\[32\][ ]=' drivers/cpufreq/longhaul.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__cpuinitconst[ ]mV_\(vrm85\|mobilevrm\)\[32\][ ]=' drivers/cpufreq/longhaul.h
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'static[ ]u32[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h
-    defsnc 'static[ ]u32[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h
-    defsnc 'static[ ]uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h
-    defsnc 'uint32_t[ ]nve0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h
-    defsnc 'uint32_t[ ]nve0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h
-    defsnc 'nv04_graph_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
-    accept '[	]*ret[ ]=[ ]request_firmware[(]&fw[,][ ]source[,][ ]&nv_device[(]bios[)]->pdev->dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/base.c
-    defsnc 'static[ ]u8[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]const[ ]RegInitializer[ ]initData\[\][ ]__initconst[ ]=' drivers/ide/ali14xx.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]tuner_init_fc2580\[\][ ]=' drivers/media/dvb-frontends/af9033_priv.h
-    defsnc '[	]static[ ]const[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb-frontends/rtl2830.c
-    blobname 's5k4ecgx\.bin' drivers/media/i2c/s5k4ecgx.c
-    blobname 'v4l-coda\(dx6-imx27\|7541-imx53\)\.bin' drivers/media/platform/coda.c
-    blobname 's5p-mfc\(-v6\)\?\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
-    defsnc 'static[ ]const[ ]struct[ ]e4000_lna_filter[ ]e400_lna_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]e4000_if_filter[ ]e4000_if_filter_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_reg_val[ ]fc2580_init_reg_vals\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]fc2580_freq_regs[ ]fc2580_freq_regs_lut\[\][ ]=' drivers/media/tuners/fc2580_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revb_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]lpc32xx_nand_oob[ ]=' drivers/mtd/nand/lpc32xx_mlc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]flctl_4secc_oob_64[ ]=' drivers/mtd/nand/sh_flctl.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitconst[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\|radio\)_core\|[Cc]ommon_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9565_1p0_\(\(mac\|baseband\)_postamble\|[Mm]odes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_table\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9565_1p0_initvals.h
-    defsnc 'static[ ]u16[ ]r2057_rev[4578]a\?_init\[[45][245]\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
-    defsnc '[	]*tbl_rf_control_override_rev7_over[01]\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]unsigned[ ]pci_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]int[ ]array_soc\[\]\[2\][ ]=' drivers/power/88pm860x_battery.c
-    defsnc 'static[ ]const[ ]int[ ]mc13783_sw[12]x_val\[\][ ]=' drivers/regulator/mc13783-regulator.c
-    # remoteproc uses request_firmware, but it is generic and names
-    # no blobs of its own, so we change it to maybe_request_firmware.
-    accept '[	]ret[ ]=[ ]request_firmware_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ][&]rproc->dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)][;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
-    # This remoteproc client does name blobs, but we discard it
-    # with undefine_macro.
-    blob 'SPROC_MODEM_NAME[ ]["]-fw\.bin["]' drivers/remoteproc/ste_modem_rproc.c
-    accept '[	]if[ ][(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    blobname 'daqboard2000_firmware\.bin' drivers/staging/comedi/drivers/daqboard2000.c
-    blobname 'me2600_firmware\.bin' drivers/staging/comedi/drivers/me_daq.c
-    blobname 'ni6534a\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    blobname 'niscrb0[12]\.bin' drivers/staging/comedi/drivers/ni_pcidio.c
-    defsnc 'static[ ]const[ ]struct[ ]SiS_TVData[ ]XGI_\(St\|Ext\)\(PAL\|NTSC\|YPbPr\(525\|750\)[ip]\)Data\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(NTSC\|PAL\|HiTV\(Ext\|St[12]\|Text\)\|YPbPr\(525\|750\)[ip]\)Timing\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]XGI330_\(HiTV\|Ren\(525\|750\)p\)Group3\(Data\|Simu\|Text\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_ihex_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' include/linux/firmware.h
-    defsnc '[/][*][ ]callback[ ]from[ ]request_firmware_nowait' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]int[ ]__devinit[ ]azx_probe[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware[^\n]*' sound/pci/hda/hda_intel.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta32x_regs\[\][ ]=' sound/soc/codecs/sta32x.c
-    blobname 'wm0010\(_stage2\.bin\|\.dfw\)' sound/soc/codecs/wm0010.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5102_sysclk_reva_patch\[\][ ]=' sound/soc/codecs/wm5102.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8510_reg_defaults\[\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8580_reg_defaults\[\][ ]=' sound/soc/codecs/wm8580.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8776_reg_defaults\[\][ ]=' sound/soc/codecs/wm8776.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8900_reg_defaults\[\][ ]=' sound/soc/codecs/wm8900.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8960_reg_defaults\[\][ ]=' sound/soc/codecs/wm8960.c
-    accept '[	][	]priv->firmware[ ]=[ ]true[;]' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nvc0_graph_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    accept '[	][	 ]*nvc0_graph_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' 'drivers/gpu/drm/nouveau/nv[ce]0\.c'
-    accept '[	][	]*nvc0_graph_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' 'drivers/gpu/drm/nouveau/core/engine/graph/nv[ce]0\.c'
-    blobname 'dvb-fe-xc5000c-4\.1\.30\.7\.fw' drivers/media/tuners/xc5000.c
-    accept '[	]\.firmware[ ]=[ ]AF9015_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9015.c
-    accept '[	]\.firmware[ ]=[ ]AF9035_FIRMWARE' drivers/media/usb/dvb-usb-v2/af9035.c
-    accept '[	]\.firmware[ 	]*=[ ]AZ6007_FIRMWARE' drivers/media/usb/dvb-usb-v2/az6007.c
-    accept '[	]\.firmware[ ]=[ ]EC168_FIRMWARE' drivers/media/usb/dvb-usb-v2/ec168.c
-    blobname 'brcm[/]brcmfmac43\(143\|242a\)\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    accept '[	]priv->firmware[ ]=[ ]fw[;]' drivers/net/wireless/p54/p54pci.c
-    blobname 'c[bt]2\?fw-3\.1\.0\.0\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'CMV4[pi]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'dvb-fe-tda10071\.fw' drivers/media/dvb/frontends/tda10071_priv.h
-    accept '[	]st->it913x_config\.firmware[ ]=' drivers/media/usb/dvb-usb-v2/it913x.c
-    # Present in 3.6 but removed in the patch:
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nva3_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    defsnc '\(uint32_t\|u32\)[ ]nvc0_pcopy_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    accept '[	]it913x_config\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/it913x.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]if[(]request_firmware[(]&fw_entry,[ ]fname,[ ]&ioa_cfg->pdev->dev[)][)]' drivers/scsi/ipr.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    accept '[	]if[ ][(][/][*]KEYSPAN_PDA[*][/]request_ihex_firmware' drivers/usb/serial/keyspan_pda.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
-    # Specific for the 3.7-to-3.6 reverse patch:
-    accept '[	]err[ ]=[ ]request_firmware[(]&fw,[ ]patch,[ ]dev[)][;]' sound/pci/hda/hda_hwdep.c
-    defsnc '\(static[ ]const[ ]struct[ ]\(stk1160\|saa7113\)config\|[}]\)[ ]\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[\(256\)\?\][ ]=' drivers/staging/easycap/easycap_low.c
-    accept '[ ]kernel[(]driver[)]:[ ]calls[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[ ]kernel:[ ]request_firmware[(]' Documentation/firmware_class/README
-    accept '[	][	]\.firmware[ 	]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["]'
-    accept '[;][/][*]@@[ ]-418,45[ ][+]446,68[ ]@@[*][/][;][\n]\([ ]*[2],\)*[\n]\(\([ ]*[1-4],\)*[\n]\)*\([ ]*[ 1][0-9],\)*[ ]*12' scripts/dtc/dtc-parser.tab.c_shipped
-    ;;
-
-  */patch-3.5*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    # Present in 3.5 and in patch to 3.6:
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]=' arch/sh/kernel/traps_64.c
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340_1p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    initnc 'static[ ]const[ ]u32[ ]ar9340Modes_\(\(high\|low\|mixed\)_\(power\|ob_db\)\|ub124\)_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_wo_xlna_rx_gain\)\?_1_1\(_\(baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_1_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    accept '[	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed[^\n]*[\n][	]*complete_all[(][&]rproc->firmware_loading_complete' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/vt6655/iwctl.c
-    accept '[	][{]\(0x0000a288[,][ ]0x00000220\|0x0000a430[,][ ]0x1ce739ce\|0x0000a540[,][ ]0x\(49005e72\|4e02246c\)\|0x0000a5f4[,][ ]0x\(6f82bf16\|778a308c\)\|0x0000a50c[,][ ]0x10000023\|0x00009e04[,][ ]0x001c2020\|0x00009e44[,][ ]0x62321e27\)\([,][ ]0x[0-9a-f]*\)*[}][,]\([\n][	][{]0x[0-9a-f]*\([,][ ]0x[0-9a-f]*\)*[}][,]\)*' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    # For reversal of 3.5-to-3.6 patch only.
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc 'uint32_t[ ]nva3_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nva3_copy.fuc.h
-    initnc 'uint32_t[ ]nvc0_pcopy_data\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_copy.fuc.h
-    initnc 'static[ ]__u8[ ]mode8420\(pro\|con\)\[\][ ]=' drivers/media/video/cs8420.h
-    defsnc 'static[ ]__u8[ ]init7121ntsc\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]__u8[ ]init7121pal\[\][ ]=' drivers/media/video/saa7121.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340_1p0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9340Common_\(wo_xlna_\)\?rx_gain_table_1p0\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]int[ ]ath_max_4ms_framelen\[4\]\[32\][ ]=' drivers/net/wireless/ath/ath9k/xmit.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]u16[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]u16[ ]\(VDCDC[1x]\|LDO[12]\)_VSEL_table\[\][ ]=' 'drivers/regulator/tps650\(23\|7x\)-regulator\.c'
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]=' drivers/staging/xgifb/vb_init.c
-    # New in 3.6:
-    defsnc 'static[ ]unsigned[ ]char[ ]mcf_host_slot2sid\[32\][ ]=' arch/m68k/platform/coldfire/pci.c
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|256\|512\)_aes_cbc_enc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]bfin_crc_tv_template\[\][ ]=' crypto/testmgr.h
-    defsnc '[	]static[ ]u8[ ]bw_params\[3\]\[32\][ ]=' drivers/media/dvb/frontends/rtl2832.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm51\(02\|10\)_reva_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(radio\|baseband\|mac\)_postamble\[\]\[5\][ ]' drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_\(\(radio\|mac\|baseband\)_core\|common_\(wo_xlna_\)\?rx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar955x_1p0_modes_\(no_\)\?xpa_tx_gain_table\[\]\[9\][ ]=' drivers/net/wireless/ath/ath9k/955x_1p0_initvals.h
-    blobname 'ti-connectivity[/]wl12[78]x-fw-5-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/main.c
-    blobname 'ti-connectivity[/]wl18xx-\(fw\|conf\)\.bin' drivers/net/wireless/wl18xx/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lp872x_ldo\|lp8720_ldo4\|lp8725_\(lilo\|buck\)\)_vtbl\[\][ ]=' drivers/regulator/lp872x.c
-    defsnc 'const[ ]int[ ]lp8788_dldo1239_vtbl\[\][ ]=' drivers/regulator/lp8788-ldo.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VCORE_VSEL_table\[\][ ]=' drivers/regulator/tps65023-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]VDCDCx_VSEL_table\[\][ ]=' drivers/regulator/tps6507x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]struct[ ]bcm_ddr_setting[ ]asT3\(LP\)\?B\?_DDRSetting\(160\|133\|100\|80\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    defsnc '[ ]*static[ ]const[ ]u8[ ]arp_req\[36\][ ]=' drivers/staging/csr/sme_sys.c
-    defsnc 'omap4430_adc_to_temp\[OMAP4430_ADC_END_VALUE[ ]-[ ]OMAP4430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap4460_adc_to_temp\[OMAP4460_ADC_END_VALUE[ ]-[ ]OMAP4460_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap4-thermal.c
-    defsnc 'omap5430_adc_to_temp\[OMAP5430_ADC_END_VALUE[ ]-[ ]OMAP5430_ADC_START_VALUE[ ][+][ ]1\][ ]=' drivers/staging/oma-thermal/omap5-thermal.c
-    defsnc 'static[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
-    defsnc 'static[ ]struct[ ]SiS_\(LCD\|LVDS\)Data[ ][ ]*XGI_\(\(\(St\|Ext\)LCD\|LVDS\)\(1024x768\|1280x1024\|1400x1050\)\|NoScaling\)Data\(_[12]\)\?\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]char[ ]rdesc\[\][ ]=' samples/uhid/uhid-example.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
-    blobname 'dvb-usb-terratec-htc-stick-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 'rtl_nic[/]rtl8106e-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8168g-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    defsnc '[	]static[ ]const[ ]u16[ ]mac_ocp_patch\[\][ ]=' in drivers/net/ethernet/realtek/r8169.c
-    blobname 'rt3290\.bin\(\.[\n][	][ ][*][/]\)\?' drivers/net/wireless/rt2x00/rt2800pci.h
-    ;;
-
-  */patch-3.4*gnu*3.5*)
-    # This is far too general for deblobbing, but ok for patch checking.
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[*][/][;][\n][	][{]0x0000\(9830\|a288\|a0b4\|a138\)[,][ ]0x00000[0-9a-f]*[}]\?[,]' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    # Already present in 3.4, but moved or changed in 3.5:
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    accept 'struct[ ]isci_orom[ ][*]isci_request_firmware[(]' 'drivers/scsi/isci/probe_roms\.[ch]'
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc 'static[ ]struct[ ]XGI_ExtStruct[ ]XGI330_EModeIDTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]u8[ ]w1_crc8_table\[\][ ]=' drivers/w1/w1_io.c
-    defsnc 'static[ ]const[ ]fixp_t[ ]cos_table\[46\][ ]=' include/linux/fixp-arith.h
-    accept '[ ]*[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'arch/x86/crypto/aesni-intel_asm\.S\|net/l2tp/l2tp_ip6\.c'
-    # New in 3.5:
-    accept '[	]*linux,keymap[ ]=[ ][<][ ]\(0x[0-9a-f]*[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/spear\(13[14]\|30\)0-evb\.dts'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<\(0x[0-9a-f]*[ 	\n]*\)*>[;]' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]*interrupts[ ]=[ ]<\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]u8[ ]zero_message_\(hash\|hmac\)_sha256\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/ux500/hash/hash_core.c
-    defsnc 'static[ ]const[ ]struct[ ]ast_dramstruct[ ]ast[12][01]00_dram_table_data\[\][ ]=' drivers/gpu/drm/ast/ast_dram_tables.h
-    defsc 'static[ ]struct[ ]ast_vbios_stdtable[ ]vbios_stdtable\[\][ ]=' drivers/gpu/drm/ast/ast_tables.h
-    defsc 'static[ ]const[ ]struct[ ]minimode[ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid_modes.h
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf74_176\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]const[ ]struct[ ]wrpll_tmds_clock[ ]wrpll_tmds_clock_table\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
-    blobname 'dvb-usb-af9035-02\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'dvb-usb-it9135-01\.fw' drivers/media/dvb/dvb-usb/af9035.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc '[	]*static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u16[ ]bridge_init\[\]\[2\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u8[ ]\(soi968\|ov\(7670\|965[05]\)\|hv7131r\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]i2c_reg_u16[ ]\(mt9v[01]1[12]\)_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_conf[ ]hdmiphy_conf_\(s5pv210\|exynos4[24]1[02]\)\[\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]int32_t[ ]tbat_lookup\[255\][ ]=' drivers/mfd/da9052-core.c
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    defsnc '[	][}][ ]hw_config\[\][ ]=' drivers/nfc/pn544_hci.c
-    defsnc 'static[ ]const[ ]unsigned[ ]\(rgmii\|smii_0_1_2\|nand_8bit\|mcif\|pci_sata\|clcd\|arm_trace\|miphy_dbg\|emi\)_pins\[\][ ]=' drivers/pinctrl/spear/pinctrl-spear1310.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[2\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable[ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send_panel_reverse\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
-    accept '-[ ]Replace[ ]hard-coded[ ]firmware[ ]paths[ ]with[ ]request_firmware' drivers/staging/gdm72xx/TODO
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdms\(krn\|rfs\)\.bin' drivers/staging/gdm72xx/sdio_boot.c
-    blobname '\([/]lib[/]firmware[/]\)\?gdm72xx[/]gdmuimg\.bin' drivers/staging/gdm72xx/usb_boot.c
-    blobname 'mrvl[/]usb8797_uapsta\.bin' 'drivers/net/wireless/mwifiex/usb\.[ch]'
-    # This is compiled and assembled out of actual sources as part of the build.
-    accept '[	]\.incbin[	]["]arch[/]x86[/]realmode[/]rm[/]realmode\.bin["]' arch/x86/realmode/rmpiggy.S
-    # Sources for these are in the corresponding .fuc files.
-    defsc 'uint32_t[ ]nv98_pcrypt_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nv98_crypt.fuc.h
-    accept '[	]nve0_graph_init_fuc[(]dev[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ ][&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*nve0_graph_destroy_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)nve0_graph_create_fw[(]dev[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveau/nve0_graph.c
-    accept '[	]struct[ ]nve0_graph_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nve0_graph.h
-    accept '[	]memset[(][&]fw[,][ ]0[,][ ]sizeof[(]struct[ ]mwifiex_fw_image[)][)][;][\n][	]adapter->firmware[ ]=[ ]firmware[;]' drivers/net/wireless/mwifiex/main.c
-    # nouveau_vbios is a user-supplied parameter
-    accept '[	][	]snprintf[(]fname[,][ ]sizeof[(]fname[)][,][ ]["]nouveau[/]%s["][,][ ]nouveau_vbios[)][;][\n][	][	]ret[ ]=[ ]request_firmware[(]' drivers/gpu/drm/nouveau/nouveau_bios.c
-    accept '[	][	]\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9035.c
-    blobname 'rtl_nic[/]rtl8402-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'rtl_nic[/]rtl8411-1\.fw' drivers/net/ethernet/realtek/r8169.c
-    blobname 'bdata\(\.SD31\|\.DB132\)\?\.bin' drivers/net/wireless/ath/ath6kl/core.h
-    blobname 'mrvl[/]sd8786_uapsta\.bin' 'drivers/net/wireless/mwifiex/sdio\.[ch]'
-    accept '[	][ ][*][ ]the[ ]isl3886[+]net2280' drivers/net/wireless/p54/p54usb.c
-    # Required for reverse patch only:
-    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc '[}][ ]mem_table\[\][ ]=' drivers/net/ethernet/8390/smc-mca.c
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_rx.ucode
-    initnc '[	]\.initial_reg_values[	]=[ ][(]struct[ ]ixp2000_reg_value[ ]\[\][)][ ][{]' drivers/net/ixp2000/ixp2400_tx.ucode
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]XGINew_\(MDA\|[CEV]GA\)_DAC\[\][ ]=' drivers/staging/xgifb/vb_setmode.c
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_StStruct[ ]XGI330_SModeIDTable\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]__devinitconst[ ]SiS_DRAMType\[17\]\[5\][ ]=' drivers/video/sis/sis_main.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    ;;
-
-  */patch-3.3*gnu*)
-    # These patterns are *way* too broad for general use, but they're fine
-    # for patches between deblob-checked releases.
-    accept 'static[ ]\(int\|void\)[ ]_request_firmware' drivers/base/firmware_class.c
-    accept 'request_firmware[(]const' drivers/base/firmware_class.c
-    accept '[	]*ret[ ]=[ ]_request_firmware' drivers/base/firmware_class.c
-    accept '[	]*_request_firmware_cleanup' drivers/base/firmware_class.c
-    accept '[	]INIT_WORK[(][&]fw_work->work[,][ ]request_firmware_work_func[)][;]' drivers/base/firmware_class.c
-    accept '[	]0x43[,][ ]11[,][	]0x00[,][0-9xa-f, 	\n]*' drivers/media/video/gspca/pac7302.c
-    accept '\([ 	][{][ ]0x[12][02][,][ ]0x[0-9a-f][0-9a-f][,][ ]0x[0-9a-f][0-9a-f][ ][}][,][\n]\?\)\+[	][{][ ]0[ ][}][ ][/][*][ ]TERMINATING[ ]ENTRY[ ][*][/]' sound/usb/6fire/control.c
-    # Some of the above were present before, but not covered by these
-    # specific patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc '\(static[ ]\)\?unsigned[ ]char[ ]\(__attribute__[ ][(][(]aligned[(]16[)][)][)][ ]\)\?bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\(_rfc3686\)\?\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '\(static[ ]\(int\|void\)[\n ]\)\?_request_firmware\(_prepare\|_cleanup\)\?[(]const[ ]struct[ ]firmware[ ][*][*]\?firmware\(_p\)\?[,)][^{]*[\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(]firmware_p[,]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\(_027\)\?\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]viaLUT\[\][ ]=' drivers/hwmon/via686a.c
-    defsnc 'static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]bitcounts\[256\][ ]=' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]byte[ ]capidtmf_leading_zeroes_table\[0x100\][ ]=' drivers/isdn/hardware/eicon/capidtmf.c
-    defsnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_alaw2ulaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    defsnc '[	]static[ ]unsigned[ ]char[ ]table_ulaw2alaw\[\][ ]=' drivers/staging/telephony/ixj.c
-    accept '[	]INITCODESIZE[ ]=[ ]mod_firmware_load[(]INITCODEFILE,[ ][&]INITCODE[)][;]' sound/oss/msnd_pinnacle.c
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    # New in 3.4.
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
-    accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
-    defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
-    defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
-    defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
-    accept 'static[ ]int[ ]_request_firmware_load[(]struct[ ]firmware_priv[ ][*]fw_priv[,]' drivers/base/firmware_class.c
-    accept 'static[ ]void[ ]request_firmware_work_func[(]struct[ ]work_struct[ ][*]work[)]' drivers/base/firmware_class.c
-    accept '[	]fw_priv[ ]=[ ]_request_firmware_prepare[(][&]fw[,]' drivers/base/firmware_class.c
-    accept '[	][	]ret[ ]=[ ]_request_firmware_load[(]fw_priv[,]' drivers/base/firmware_class.c
-    accept '[	][	]_request_firmware_cleanup[(][&]fw[)][;]' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u32[ ]\(tahiti\|pitcairn\|verde\)_io_mc_regs\[TAHITI_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/drm/radeon/si.c
-    defsnc 'static[ ]const[ ]char[ ]fake_edid_info\[\][ ]=' drivers/gpu/drm/exynos/exynos_drm_vidi.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_v13_conf\(27\(_027\)\?\|74_\(175\|25\)\|148_5\)\[32\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
-    defsnc 'static[ ]char[ ][*]generic_edid_name\[GENERIC_EDIDS\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]u8[ ]generic_edid\[GENERIC_EDIDS\]\[128\][ ]=' drivers/gpu/drm/drm_edid_load.c
-    defsnc 'static[ ]int[ ]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
-    blobname 'dvb-usb-terratec-h7-\(drxk\|az6007\)\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/gp8psk.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]oob_\(2048\|4096\)_ecc[48][ ]=' drivers/mtd/nand/fsl_ifc_nand.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_\(256\|224\|128\|64\)_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc '[	]static[ ]const[ ]u8[ ]dhcp_\(pattern\|mask\)\[\][ ]=' drivers/net/wireless/ath/ath6kl/cfg80211.c
-    blobname 'fw-[23]\.bin' drivers/netwireless/ath/ath6kl/core.h
-    blobname '\(fw\.ram\|otp\|ath\(wlan\|tcmd_ram\)\|utf\|nullTestFlow\|data\.patch\|bdata\(\.SD31\)\?\)\.bin\(\.z77\)\?' drivers/net/wireless/ath/ath6kl/core.h
-    accept '[	]hif_dev->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|[34]_5ghz\|5plus_5ghz\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u32[ ]txpwrctrl_tx_gain_ipa\(\|_rev[56]\|_5g\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'brcm[/]brcmfmac-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-    blobname 'brcm[/]brcmfmac43236b\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
-    blobname 'ti-connectivity[/]wl12[78]x-fw-4-\([ms]r\|plt\)\.bin' drivers/net/wireless/wl12xx/wl12xx.h
-    blobname 'TINfcInit_%d\.%d\.%d\.%d\.bts' drivers/nfc/nfcwilink.c
-    defsnc 'static[ ]int[ ]ab8500_\(charger\|fg_lowbat\)_voltage_map\[\][ ]=' drivers/power/ab8500_charger.c
-    defsnc '[	]static[ ]const[ ]u8[ ]parity\[\][ ]=' drivers/staging/sep/sep_crypto.c
-    defsnc 'static[ ]struct[ ]SiS_MCLKData[ ]XGI\(340\|27\)New_MCLKData\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_StandTable_S[ ]XGI330_StandTable\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]SiS_ModeResInfo_S[ ]XGI330_ModeResInfo\[\][ ]=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]const[ ]u8[ ]dim_table\[101\][ ]=' drivers/video/backlight/ot200_bl.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]char[ ]data_to_send\[\][ ]=' drivers/video/exynos/s6e8ax0.c
-    accept '[	]ret[ ]=[ ]request_firmware\([(][&]firmware_p[,][ ]rproc->firmware[,][ ]dev[)]\|_nowait[(]THIS_MODULE[,][ ]FW_ACTION_HOTPLUG[,][\n][	 ]*rproc->firmware[,][ ]dev[,][ ]GFP_KERNEL[,][\n][ 	]*rproc[,][ ]rproc_fw_config_virtio[)]\)[;][\n][	]if[ ][(]ret[ ]<[ ]0[)][ ][{][\n][	][	]dev_err[(]dev[,][ ]["]request_firmware\(_nowait\)\?[ ]failed' drivers/remoteproc/remoteproc_core.c
-    accept '[	]rproc->firmware[ ][=][ ]firmware[;]' drivers/remoteproc/remoteproc_core.c
-    blobname 'ql\(2600\|8300\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    defsnc 'static[ ]u8[ ]__attribute__[(][(]__aligned__[(]8[)][)][)][ ]test_buf\[\][ ]=' lib/crc32.c
-    defsnc '[}][ ]test\[\][ ]=' lib/crc32.c
-    defsnc 'static[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8753_reg_defaults\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8978_reg_defaults\[\][ ]=' sound/soc/codecs/wm8978.c
-    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8988_reg_defaults\[\][ ]=' sound/soc/codecs/wm8988.c
-    # Removed in 3.4, for --reverse-patch only.
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    accept '[	]memcpy[(]src,[ ]["]\\x01\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00["].*PROGxxxx' arch/powerpc/platforms/iseries/mf.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32c_table\[256\][ ]=' crypto/crc32c.c
-    defsnc 'static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar5416Modes\(_91[06]0\)\?\|ar9280Modes\(_\(backoff_[12]3db\|original\)_rxgain\|_\(high_power\|original\)_tx_gain\)\?_9280_2\|ar9285Modes\(\(_\(high_power\|original\)_tx_gain\)\?_9285_1_2\|_XE2_0_\(normal\|high\)_power\)\|ar9287Modes\(_[tr]x_gain\)\?_9287_1_1\|ar9271Modes\(_\(normal\|high\)_power_tx_gain\)\?_9271\(_ANI_reg\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar\(5008\|9002\)_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]\(ar9\(462\|580\)_\([12]p0_\)\?\(\(baseband\|mac\|radio\)_core\(_emulation\)\?\|\(common_\)\?\(wo_xlna_\|mixed_\)\?rx_gain_table\(_ar9280\)\?\(_[12]p0\)*\)\|ar9200_ar9280_2p0_radio_core\(_1p0\)\?\)\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(462\|580\)_\([12]p0_\)\?\(\(tx_gain_table_\)\?\(baseband\|mac\|radio\)_postamble\(_emulation\)\?\|\(modes_\)\?\(high\|low\(est\)\?\|mixed\|green\)_\(ob_db\|power\)_tx_gain_table\(_[12]p0\)\?\)\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9\(462\|580\)_[12]p0_initvals\.h'
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    accept '-3[,]-2[,]-2[,]-1[,]-1[,]0[,][0-9,\n]*[}][;]' drivers/hwmon/via686a.c
-    accept '[	][{]0xa1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,]\([\n][	][{]0x[ac]1[,][ ]0x6e[,][ ][0-9xa-f, ]*[,][ ]0x00[,][ ]0x10[}][,][}][,]\)*' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */3.4.1-stable-queue.patch* | */patch-3.4*)
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]void[ ]b43legacy_request_firmware[(]s[^\n]*[*][/][;]' drivers/net/wireless/b43legacy/main.c
-    accept '[ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    ;;
-
-  */atl1c_net_next_update-3.[34].patch)
-    defsnc 'static[ ]const[ ]struct[ ]atl1c_platform_patch[ ]plats\[\][ ]__devinitdata[ ]=' drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-    ;;
-
-  */drivers-media-update.patch)
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]*props->firmware[ ]=[ ]fw_it913\(5_v[12]\|7\)' drivers/media/dvb/dvb-usb/it913x.c
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc '[	]struct[ ]reg_val_mask[ ]tab\[\][ ]=' 'drivers/media/dvb/frontends/\(cxd2820r_\(c\|t2\)\|af9033\)\.c'
-    accept '[	]0x43,[ ]11,[	][0-9a-fx, 	\n]*' drivers/media/video/gspca/pac7302.c
-    # Entries above are in 3.3; below are for 3.4.
-    blobname 'dvb-usb-terratec-h7-drxk\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-terratec-h7-az6007\.fw' drivers/media/dvb/dvb-usb/az6007.c
-    blobname 'dvb-usb-lme2510c-rs2000\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-fe-xc5000\(-1\.6\.114\|c-41\.024\.5-31875\)\.fw' drivers/media/common/tuners/xc5000.c
-    defsnc '[	]struct[ ]rtl2830_reg_val_mask[ ]tab\[\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    defsnc '[	]static[ ]u8[ ]bw_params1\[3\]\[34\][ ]=' drivers/media/dvb/frontends/rtl2830.c
-    blobname 'dvb-demod-drxk-pctv\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]const[ ]u16[ ]vs6624_p1\[\][ ]=' drivers/media/video/vs6624.c
-    defsnc 'static[ ]const[ ]struct[ ]coeff[ ]coeff_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]val_snr[ ]\(qpsk\|qam\(16\|64\)\)_snr_lut\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    defsnc 'static[ ]const[ ]struct[ ]reg_val[ ]\(ofsm_init\|tuner_init_\(tua9001\|fc0011\|mxl5007t\|tda18218\)\)\[\][ ]=' drivers/media/dvb/frontends/af9033_priv.h
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6007_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6007.c
-    accept '[	]*\.download_firmware[ ]=[ ]af9035_download_firmware\(_it9135\)\?[,][\n][	]*\.firmware[ ]=[ ]["]' drivers/media/dvb/dvb-usb/af9035.c
-    ;;
-
-  */brcm80211.patch)
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmfmac/bcmchip\.h'
-    blobname 'brcm[/]bcm43xx' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    blobname '%s\(_hdr\)\?-%d\.fw' 'drivers/\(staging\|net/wireless\)/brcm80211/sys/wl_mac80211\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_cmn\.c'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc '\(static[ ]const[ ]\)\?s8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc '\(static[ ]const[ ]\)\?u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_lcn\.c'
-    defsnc '\(static[ ]const[ ]\)\?struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]\(const[ ]\)\?struct[ ]chan_info_nphy_radio2057_rev5[ \n]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?\(const[ ]\)\?struct[ ]radio_\(20xx_\)\?regs[ \n]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phy_n\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/brcmsmac/phy/phytbl_lcn\.c'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc '\(static[ ]\)\?const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/\(staging\|net/wireless\)/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    ;;
-
-  */patch*-3.1.*)
-    defsnc 'static[ ]const[ ]u8[ ]ak4642_reg\[AK4642_CACHEREGNUM\][ ]=' sound/soc/codecs/ak4642.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */media-DiBcom*.patch)
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-3.1-rc*)
-    defsnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]=' drivers/bcma/sprom.c
-    accept '[	 ]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' 'drivers/net/wireless/rtlwifi/rtl8192[cd]e/fw\.c'
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_cmn\.c\|brcmsmac/phy/phy_cmn\.c\)'
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phy_lcn\.c\)'
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phy_n\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_lcn\.c\|brcmsmac/phy/phytbl_lcn\.c\)'
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' 'drivers/staging/brcm80211/\(phy/wlc_phy_n\.c\|brcmsmac/phy/phytbl_n\.c\)'
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' 'drivers/staging/brcm80211/\(util/bcmutils\.c\|brcmutil/utils\.c\)'
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' 'drivers/staging/brcm80211/\(util/qmath\.c\|brcmsmac/phy/phy_qmath\.c\)'
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    defsnc '[ ][ ]static[ ]\(const[ ]\)\?unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=[ ][{][*][/][;]' 'crypto/\(tcrypt\|testmgr\).h'
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]config[ ]FIRMWARE_IN_KERNEL[*][/][;].*let[ ]firmware[ ]be[ ]loaded[ ]from[ ]userspace\.' drivers/base/Kconfig
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept '[	 ]*and[ ]request_firmware[(][)][ ]in[ ]the[ ]source' drivers/base/Kconfig
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]vp7045_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/vp7045.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/ov9740.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    # for reverse patch
-    defsnc 'static[ ]int[ ]sdp3430_batt_table\[\][ ]=' arch/arm/mach-omap2/board-3430sdp.c
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    accept '[	][ ][ ]So,[ ]for[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]kernel\.[ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    accept '[	]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,]' drivers/firmware/sigma.c
-    accept '[	][	]pr_debug[(]["]%s:[ ]request_firmware[(][)][ ]failed' drivers/firmware/sigma.c
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]word[ ]convert_8_to_16_tbl\[256\][ ]=' drivers/staging/msm/ebi2_tmd20.c
-    defsnc 'static[ ]struct[ ]sharp_spi_data[ ]init_sequence\[\][ ]=' drivers/staging/msm/lcdc_sharp_wvga_pt.c
-    defsnc 'static[ ]uint32[ ]vg_qseed_table2\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'char[ ]gc_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc 'uint32[ ]igc_\(video\|rgb\)_lut\[\][ ]=' drivers/staging/msm/mdp4_util.c
-    defsnc '\(static[ ]\)\?struct[ ]mdp_table_entry[ ]mdp_\(\(upscale\|gaussian_blur\)_table\|downscale_[xy]_table_PT[2468]TO\(PT[468]\|1\)\)\[\][ ]=' drivers/video/msm/mdp_scale_tables.c
-    defsnc 'static[ ]int16[ ]mdp_scale_\(pixel_repeat\|0p[2468]_to_[08]p[0468]\)_C[0123]\[MDP_SCALE_COEFF_NUM\][ ]=' drivers/staging/msm/mdp_ppp_v31.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    # this was a bug in an earlier deblob
-    accept '#define[ ]WL_4329_NVRAM_FILE[ ]["][^"]*["]' drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
-    # New in 3.1
-    blobname 'sdma-imx25\.bin' arch/arm/mach-imx/mm-imx25.c
-    blobname 'sdma-imx31-to[12]\.bin' arch/arm/mach-imx/mm-imx31.c
-    blobname 'sdma-imx35-to[12]\.bin' arch/arm/mach-imx/mm-imx35.c
-    blobname 'sdma-imx5[13]\.bin' arch/arm/mach-mx5/mm.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/brcmsmac/mac80211_if.c
-    blobname 'brcm[/]bcm4329-fullmac-4\.\(bin\|txt\)' drivers/staging/brcm80211/brcmfmac/bcmchip.h
-    blobname 'mrvl[/]sd8787_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
-    defsnc 'static[ ]int[ ]omap3_batt_table\[\][ ]=' arch/arm/mach-omap2/twl-common.c
-    defsnc '[	]static[ ]u8[ ]InitRegs\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd.c
-    defsnc 'static[ ]struct[ ]SMapI[ ]m_RF_Cal_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc 'static[ ]struct[ ]SMap2[ ]m_\(Main\|Cal\)_PLL_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    accept '[	][ ][ ]For[ ]example,[ ]you[ ]might[ ]set[ ]CONFIG_EXTRA_FIRMWARE=["]whatever\.bin["]' drivers/base/Kconfig
-    accept '[	][ ][ ]Then[ ]any[ ]request_firmware[(]\(["]whatever\.bin["]\)[)]' drivers/base/Kconfig
-    blobname 'dvb-fe-xc4000-1.4.fw' drivers/media/common/tuners/xc4000.c
-    defsnc 'static[ ]struct[ ]SMap2\?[ ]*m_\(GainTaper\|RF_Cal_DC_Over_DT\|CID_Target\)_Map\[\][ ]=' drivers/media/dvb/frontends/tda18271c2dd_maps.h
-    defsnc '[	][}][ ]regs\[\][ ]=' drivers/media/video/em28xx/em28xx-dvb.c
-    defsnc 'static[ ]struct[ ]regval_list[ ]ov5642_default_regs_\(init\|finalise\)\[\][ ]=' drivers/media/video/ov5642.c
-    defsnc 'static[ ]const[ ]u8[ ]hdmiphy_conf\(27\|74\(_175\|_25\)\|148_5\)\[32\][ ]=' drivers/media/video/s5p-tv/hdmiphy_drv.c
-    defsnc 'static[ ]const[ ]u8[ ]filter_y_vert_tap4\[\][ ]=' drivers/media/video/s5p-tv/mixer_reg.c
-    defsnc '[	]static[ ]const[ ]char[ ][*][ ]const[ ]vui_sar_idc\[\][ ]=' drivers/media/video/v4l2-ctrls.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(baseband\|mac\)_postamble\|modes_\(low\(est\)\?\|high\)_\(ob_db\|power\)_tx_gain_1p[12]\)\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9331_\(1p[12]_\(radio\|baseband\|mac\)_core\|common_\(wo_xlna_\)\?rx_gain_1p[12]\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
-    defsnc 'static[ ]const[ ]u\(16\|32\)[ ]b43_httab_0x\(1[2abcf]\(_0x\(1\?c\|[12]4\)0\)\?\|2[0-7]\)\[\][ ]=' drivers/net/wireless/b43/tables_phy_ht.c
-    defsnc 'static[ ]u32[ ]targetchnl_5g\[TARGET_CHNL_NUM_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    defsnc '[	]u8[ ]channel_\(5g\|all\|info\)\[\(45\|59\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/phy.c
-    blobname 'rtlwifi[/]rtl8192defw[.]bin' drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-    defsnc 'u32[ ]rtl8192de_\(phy_reg\|radio[ab]\|mac\|agctab\)_\(\(2t\(_int_pa\)\?\|[25]g\)\?array\|array_pg\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\(\(2T\(_INT_PA\)\?_\|[25]G_\)\?ARRAY\|ARRAY_PG_\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192de/table.c
-    defsnc 'static[ ]struct[ ]chan_info_basic[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_cmn.c
-    defsnc 'struct[ ]lcnphy_rx_iqcomp[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'static[ ]struct[ ]chan_info_2064_lcnphy[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]lcnphy_radio_regs[ ]lcnphy_radio_regs_2064\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'u16[]LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][\n 	]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_lcn.c
-    defsnc 'struct[ ]nphy_ipa_txrxgain[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_2055[ ]chan_info_nphy_2055\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio205x[ ]chan_info_nphyrev\(3_2056\|4_2056_A1\|5_2056v5\|6_2056v6\|5n6_2056v7\|6_2056v\(8\|11\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057[ ]chan_info_nphyrev\(7_2057_rev4\|8_2057_rev[78]\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'static[ ]struct[ ]chan_info_nphy_radio2057_rev5[ ]chan_info_nphyrev\(8_2057_rev5\|9_2057_rev5v1\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'struct[ ]radio_\(20xx_\)\?regs[ ]regs_\(2055\|\(SYN\|[TR]X\)_205\(6\(_A1\|_rev\([5678]\|11\)\)\?\)\|2057_rev\([4578]\|5v1\)\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc '[	]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phy_n.c
-    defsnc 'const[ ]struct[ ]lcnphy_tx_gain_tbl_entry[ \n]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]=' drivers/staging/brcm80211/brcmsmac/phy/phytbl_lcn.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]raw_edid\[\][ ]=' drivers/staging/gma500/mrst_hdmi.c
-    defsnc 'static[ ]const[ ]u8[ ]net2272_test_packet\[\][ ]=' drivers/usb/gadget/net2272.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]seq_setting\[\][ ]=' drivers/video/backlight/ams369fg06.c
-    defsnc 'static[ ]u8[ ]adav80x_default_regs\[\][ ]=' sound/soc/codecs/adav80x.c
-    defsnc 'static[ ]const[ ]u8[ ]sta32x_regs\[STA32X_REGISTER_COUNT\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc '[}][ ]mclk_ratios\[3\]\[7\][ ]=' sound/soc/codecs/sta32x.c
-    defsnc 'static[ ]const[ ]int[ ]vid_to_voltage\[32\][ ]=' tools/power/cpupower/debug/i386/dump_psb.c
-    blobname 'dvb-usb-terratec-h5-drxk\.fw' drivers/media/video/em28xx/em28xx-dvb.c
-    blobname 's5pc110-mfc\.fw' drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-    blobname 'adau1701\.bin' sound/soc/codecs/adau1701.c
-    accept '[	]return[ ]process_sigma_firmware[(]codec->control_data[,][ ]ADAU1701_FIRMWARE[)]' sound/soc/codecs/adau1701.c
-    # Sources for these are in the corresponding .fuc files.
-    defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
-    defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
-    blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
-    blobname 'iwlwifi-135-' drivers/net/iwlwifi/iwl-2000.c
-    blobname 'c[bt]2\?fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad.c
-    blobname 'ene-ub6250[/]\(ms_\(init\|rdwr\)\|msp_rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    accept '[	][	]*dsp_code->pvt->firmware[ ]=[ ]' sound/pci/asihpi/hpidspcd.c
-    ;;
-
-  */patch*-3.0-rc*)
-    accept '[	][	]-e[ ]["][$]tmp_dir[/]lib[/]modules[/][$]KERNELRELEASE[/]modules\.dep\.bin["]' scripts/depmod.sh
-    ;;
-
-  */patch*-2.6.39-rc*)
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(u8\|struct[ ]i2c_reg_u8\)[ ]\(soi968\|ov\(76[67]0\|965[05]\)\|hv7131r\)_init\[\]\(\[2\]\)\?[ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sn9c20x.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(static[ ]\)\?\(struct[ ]\)\?XGI_[ME]CLKDataStruct[ ]XGI\(3[34]0\|27\)\(New\)\?_[ME]CLKData\[\][ ]*=' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_madi_[sdq]s\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    # The above match the reversed patch
-    defsnc 'static[ ]unsigned[ ]char[ ]bootlogo_bits\[\][ ]=' arch/m68k/platform/68328/bootlogo.h
-    defsnc 'static[ ]unsigned[ ]char[ ]splash_bits\[\][ ]=' arch/m68k/platform/68EZ328/bootlogo.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    accept '[ ][*][ ]page[ ]tables[ ]as[ ]follows:[\n][ ][*][\n][ ][*][ ][ ][ ]3[ ]3[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]2[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[ ]1[\n][ ][*][ ][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' arch/arm/include/asm/pgtable.h
-    accept '[	]\.incbin[	]["]arch[/]x86[/]kernel[/]acpi[/]realmode[/]wakeup\.bin["]' arch/x86/kernel/acpi/wakeup_rm.S
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]\(firmware_p\|fw\),' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[ 	]*return[ ]_request_firmware[(]firmware_p,' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[\n ]request_firmware_work_func[(]' drivers/base/firmware_class.c
-    accept '\(static[ ]inline[ ]\)\?\(int[ ]\)\?request_firmware_nowait[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=[ ][{]' drivers/media/dvb/frontends/dvb-pll.c
-    defsnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]=' drivers/net/wireless/iwlegacy/iwl-3945.c
-    defsnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]=' drivers/net/wireless/iwl-4965.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    accept '[;]set[ ]executable[ ]["]2232\.bin["]' drivers/char/ser_a2232fw.ax
-    defsnc 'static[ ]unsigned[ ]char[ ]a2232_65EC02code\[\][ ]=' drivers/staging/generic_serial/ser_a2232fw.h
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]short[ ]rc_ioport\[\][ ]=' drivers/staging/tty/riscom8.c
-    defsnc 'static[ ]Byte_t[ ]RData\[RDATASIZE\][ ]=' drivers/tty/rocket.c
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]int[ ]do_mod_firmware_load[(]' sound/sound_firmware.c
-    defsnc 'static[ ]yyconst[ ]\(flex_int\(16\|32\)_t\|\(\(short[ ]\)\?int\)\)[ ]yy_[^[]*\[[][0-9]*\][ ]='
-    defsnc 'static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]='
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    # New in 2.6.39 below, present in earlier versions above
-    blobna 'printk[(]KERN_ERR[ ]["]r8712u:[ ]Install[^\n"]*firmware[\\]n["][)][;]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]struct[ ]phy_reg[ ]exynos4_sataphy_\(cmu\|\(com\)\?lane\)\[\][ ]=' arch/arm/mach-exynos4/dev-ahci.c
-    defsnc 'static[ ]struct[ ]clk_pll_\(freq_\)\?table[ ]tegra_pll_[adpxm]_\(freq_\)\?table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    initnc '\.irp[ ]idx' arch/x86/include/asm/entry_arch.h
-    initnc '\.irp[ ]idx' arch/x86/kernel/entry_64.S
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-    defsnc 'static[ ]__u8[ ]keytouch_fixed_rdesc\[\][ ]=' drivers/hid/hid-keytouch.c
-    blobname 'dib9090\.fw' drivers/media/dvb/dvb-usb/dib0700_devices.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '[	]\(p1100\|s660\)->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(p1100\|s660\)\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-lme2510c\?-s0194\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|identify_state\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    blobname 'dvb-usb-SkyStar_USB_HD_FW_v17_63\.HEX\.fw' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_\(p1g_\)\?pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine[ ]\?\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    blobname 'dvb-netup-altera-01\.fw' drivers/media/video/cx23885/cx23885-cards.c
-    # These are suspicious, but the regularity suggests data.
-    defsnc 'static[ ]const[ ]u8[ ]\(nw80[012]\|spacecam2\?\|cvideopro\|dlink\|ds3303\|kr651\|kritter\|mustek\|proscope\|twinkle\|dvcv6\)_start\(_\([12]\|q\?vga\)\)\?\[\][ ]=' drivers/media/video/gspca/nw80x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_7\(67\|72\)x\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]u8[ ]color_tb\[\]\[6\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]struct[ ]isprsz_coef[ ]filter_coefs[ ]=' drivers/media/video/omap3isp/ispresizer.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9740_reg[ ]ov9740_defaults\[\][ ]=' drivers/media/video/ov9740.c
-    defsnc 'static[ ]int[ ]therm_tbl\[\][ ]=' drivers/mfd/twl4030-madc.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_\(largepage\|4k\)[ ]=' drivers/mtd/nand/mxc_nand.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(\(C\|_c\)ommon_\(wo_xlna_\)\?rx_gain\)\?_1_[01]\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc '\(static[ ]\)\?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\)\(_r3\)\?\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'struct[ ]nphy_gain_ctl_workaround_entry[ ]nphy_gain_ctl_workaround\[2\]\[3\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname '\(ti-connectivity[/]\)\?wl1271-\(fw\(-2\|-ap\)\?\|nvs\)\.bin' drivers/net/wireless/wl12xx/wl1271.h
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\|20[03]\?0\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([1256]000\|4965\)\.c'
-    blobname 'rtlwifi[/]rtl8192cufw\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
-    blobname 'rtlwifi[/]rtl8712u\.bin' drivers/staging/rtl8712/hal_init.c
-    defsnc 'u32[ ]\(RTL\|Rtl\)8192CU\(PHY_REG\|_\?\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\[RTL8192CU\(PHY_REG\|\(RADIO\|Radio\)[AB]\|MAC\|AGCTAB\)_\([21]T\(_HP\)\?_\?\(ARRAY\|Array\)_\?\|\(ARRAY\|Array\)_PG\)\(_HP\)\?\(LENGTH\|Length\)\][ ]=' drivers/net/wireless/rtlwifi/rtl8192cu/table.c
-    blobname 'rtl_nic[/]rtl8105e-1\.fw' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]\(A_INT32\|s32\)[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc '\(static[ ]\)\?const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'static[ ]const[ ]ccktxbbgain_struct[ ]rtl8192_cck_txbbgain_\(ch14_\)\?table\[\][ ]=' drivers/staging/rtl8192e/r8192E_dm.c
-    defsnc '[	]unsigned[ ]char[ ]data_ptr\[36\][ ]=' drivers/usb/storage/ene_ub6250.c
-    blobname 'ene-ub6250[/]sd_\(init[12]\|rdwr\)\.bin' drivers/usb/storage/ene_ub6250.c
-    defsnc 'static[ ]const[ ]struct[ ]hdmi_timings[ ]cea_vesa_timings\[OMAP_HDMI_TIMINGS_NB\][ ]=' drivers/video/omap2/dss/hdmi.c
-    defsnc 'static[ ]struct[ ]pll_config[ ]\(cle266\|k800\|cx700\|vx855\)_pll_config\[\][ ]=' drivers/video/via/hw.c
-    defsnc 'static[ ]char[ ]channel_map_unity_ss\[HDSPM_MAX_CHANNELS\][ ]=' sound/pci/rme9652/hdspm.c
-    defsnc 'static[ ]const[ ]u8[ ]log_volume_table\[128\][ ]=' sound/usb/6fire/control.c
-    defsnc 'static[ ]const[ ]struct[ ][{][^}]*[}][\n]init_data\[\][ ]=' drivers/usb/6fire/control.c
-    blobname '6fire[/]dmx6fire\(l2\|ap\|cf\)\.\(ihx\|bin\)' sound/usb/6fire/firmware.c
-    defsnc 'static[ ]const[ ]u8[ ]BIT_REVERSE_TABLE\[256\][ ]=' sound/usb/6fire/firmware.c
-    initnc '[/][*][\n][ ][*][ ]\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h[\n][ ][*]\([^\n]*[\n][ ][*]\)*[/]' 'drivers/media/video/omap3isp/\(cfa_coef\|gamma\|luma_enhance\|noise_filter\)_table\.h'
-    blobna 'rocess_sigma_firmwar'
-    defsnc 'int[ ]process_sigma_firmware[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*request_firmware' drivers/firmware/sigma.c
-    accept 'EXPORT_SYMBOL[(]process_sigma_firmware[)]' drivers/firmware/sigma.c
-    accept 'extern[ ]int[ ]process_sigma_firmware[(][^)]*[)][;]' include/linux/sigma.h
-    blobname 'maxtouch\.fw' drivers/input/touchscreen/atmel_mxt_ts.c
-    blobname 'fm\(c\|_[rt]x\)_ch8\(_[0-9a-f]*\.[0-9]*\.bts\)\?' drivers/media/radio/wl128x/fmdrv_common.h
-    blobname '%s_%x\.%d\.bts' drivers/media/radio/wl128x/fmdrv_common.c
-    ;;
-
-  */rtl8180*.patch)
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    ;;
-
-  */patch*-2.6.38-rc*)
-    # New in 2.6.38
-    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][ 	\n]*sst_drv_ctx->pci_id[,][ ]["]\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    accept '[*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_asm.S
-    defsnc 'static[ ]struct[ ]aead_testvec[ ]\(aes_gcm_rfc4106\)_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/testmgr.h'
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ]\([{][^}]*[}][ ]\)\?\(stk1160\|saa7113\)config\(PAL\|NTSC\)\?\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    blobname '\(sep[/]\)\?\extapp\.image\.bin' drivers/staging/sep/sep_driver.c
-    blobname 'radeon[/]\(BARTS\|BTC\|TURKS\|CAICOS\|%s\)_\(pfp\|rlc\|m[ec]\)\.bin' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]const[ ]u32[ ]\(barts\|turks\|caicos\)_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]int[ ]types\[0x80\][ ]=' drivers/gpu/drm/nouveau/nv50_vram.c
-    blobname '\(nouveau[/]\)\?fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvc0_graph.c
-    defsnc '[	][}][ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]nec_8048_init_seq\[\][ ]=' drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
-    defsnc 'static[ ]const[ ]int[ ]mc13892_sw1\?\[\][ ]=' drivers/regulator/mc13892-regulator.c
-    defsnc 'static[ ]const[ ]int[ ]dcdc[12]_voltages\[\][ ]=' drivers/regulator/tps6524x-regulator.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u8[ ]init_hash_seed\[\][ ]=' drivers/net/qlge/qlge_main.c
-    blobname 'vxge[/]X3fw\(-pxe\)\.ncf' drivers/net/vxge/vxge-main.c
-    defsnc '[ ][ ]\(static[ ]const[ ]\)\?int[ ]poly\[\]=' drivers/net/pcmcia/nmclan_cs.c
-    defsnc 'static[ ]\(const[ ]\)\?int[ ]fifo_map\[\]\[MAX_TX_FIFOS\][ ]=' drivers/net/s2io.h
-    defsnc 'static[ ]const[ ]struct[ ]efuse_map[ ]RTL8712_SDIO_EFUSE_TABLE\[\][ ]=' drivers/net/wireless/rtlwifi/efuse.c
-    defsnc 'static[ ]const[ ]u32[ ]ofdmswing_table\[OFDM_TABLE_SIZE\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    defsnc 'static[ ]const[ ]u8[ ]cckswing_table_ch\(1ch13\|14\)\[CCK_TABLE_SIZE\]\[8\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
-    blobname 'rtlwifi[/]rtl8192cfw\.bin' drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-    # This looks like pure data.
-    defsnc 'static[ ]u8[ ]reserved_page_packet\[TOTAL_RESERVED_PKT_LEN\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
-    defsnc 'u32[ ]RTL8192CE\(PHY_REG\|_\?RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY\|ARRAY_PG\)\[\(PHY_REG\|RADIO[AB]\|MAC\|AGCTAB\)_\([21]T_\?ARRAY_\?\|ARRAY_PG\)LENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8192ce/table.c
-    defsc 'static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_[hx]11[236][ ]=' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9485_1_0_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485\(Common_\(wo_xlna_\)\?rx_gain\)\?_1_0\(_\(radio\|baseband\|mac\)_core\)\?\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9485Modes_\(high\|low\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
-    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_rev\([34568]\|7_9\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
-    blobname '["]softing-4[.]6[/]["]' drivers/net/can/softing/softing_platform.h
-    blobname '\(softing-4[.]6[/]\)\?\(\(b\|ld\)card2\?\|can\(card\|sja\|crd2\)\)\.bin' drivers/net/can/softing/softing_cs.c
-    blobna 'which[ ]you[ ]can[ ]get[ ]at[\n][	][ ][ ]http:[/][/][^\n]*[/]socketcan[/][\n][^-]*firmware[ ]version' drivers/net/can/softing/Kconfig
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    defsnc 'static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]\(brit\|contrast\|colors\)_7660\[\]\[\(6\|7\|31\)\][ ]=' drivers/media/video/gspca/ov519.c
-    blobname 'radio-wl1273-fw\.bin' drivers/media/radio/radio-wl1273.c
-    defsnc '[}][ ]scrubrates\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc '[	]static[ ]const[ ]uint8_t[ ]branch_table\[32\][ ]=' lib/xz/xz_dec_bcj.c
-    defsnc 'static[ ]const[ ]struct[ ]_pll_div[ ]codec_master_pll_div\[\][ ]=' sound/soc/codecs/alc5623.c
-    defsnc '[}][ ]coeff_div\[\][ ]=' sound/soc/codecs/wm8737.c
-    blobname 'rpm_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
-    blobname 'mwl8k[/]fmimage_8366_ap-["][ ][#]api[ ]["]\.fw' drivers/net/wireless/mwl8k.c
-    blobname 'rtl_nic[/]rtl8168d-[12]\.fw' drivers/net/r8169.c
-    # Above is for patterns new in 2.6.38, below is for older patterns.
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?const[ ]u32[ ]b43_ntab_framestruct\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/b43/tables_nphy.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]tones\[2048\][ ]=\([ ][{][*][/][;]\)\?' drivers/staging/easycap/easycap_testcard.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    defsnc '[	][	]*\(static[ ]\)\?\(const[ ]\)\?struct[ ]phy_reg[ ]phy_reg_init\(_0\)\?\[\][ ]=' drivers/net/r8169.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf5413_ini_mode_end\[\][ ]=' drivers/net/wireless/ath/ath5k/initvals.c
-    defsnc 'static[ ]const[ ]struct[ ]ath5k_ini_rfbuffer[ ]rfb_\(511[12]a\?\|5413\|231[67]\|24\(1[37]\|25\)\)\[\][ ]=' drivers/net/wireless/ath5k/rfbuffer.h
-    accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
-    defsnc '\(static[ ]\)\?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\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8225\(z2\)\?_\(agc\|ofdm\|\(tx_\)\?\(power\|gain\)_cck\(_ch14\|_ofdm\)\?\)\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]const[ ]u16[ ]rtl8225\(bcd\|z2\)_rxgain\[\][ ]=' 'drivers/net/wireless/rtl818x/rtl818[07]/rtl8225\.c'
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]u8[ ]rtl8187b_reg_table\[\]\[3\][ ]=' drivers/net/wireless/rtl8187_dev.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    accept 'MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\([\n]MODULE_FIRMWARE[(]["]\(cis[/]\)\?\(PCMLM28\|DP83903\|3C\(CF\|X\)EM556\|MT5634ZLX\|COMpad[24]\|RS-COM-2P\|GLOBETROTTER\|SW_\([78]xx\|555\)_SER\)\.cis["][)][;]\)*' drivers/serial/serial_cs.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc 'static[ ]u8[ ]\(init\|c\)_table\[\]=' drivers/media/dvb/frontends/s921_core.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc '[	]static[ ]const[ ]struct[ ]struct_initData[ ]initData\[\][ ]=' drivers/media/video/usbvideo/ibmcam.c
-    defsnc '[	]\(static[ ]const[ ]\)\?u32[ ]reg_boundaries\[\][ ]=' drivers/net/bnx2.c
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    ;;
-
-  */patch*-2.6.38*)
-    # New in 2.6.38.4
-    defsnc '[	]static[ ]DEFINE_TEST_\(OK\|FAIL\)[(][^)]*[)][ ]=' lib/test-kstrtox.c
-    ;;
-
-  */patch*-2.6.37-rc*) # up to -rc8-git3
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[6\][ ]=' arch/arm/mach-s5pv210/clock.c
-    defsnc 'static[ ]struct[ ]titan_gpio_cfg[ ]titan_gpio_table\[\][ ]=' arch/mips/ar7/gpio.c
-    blobname 'sdma-%s-to%d\.bin' drivers/dma/imx-sdma.c
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]fsmc_ecc4_lp_layout[ ]=' drivers/mtd/nand/fsmc_nand.c
-    defsnc 'static[ ]struct[ ]pxa3xx_nand_timing[ ]timing\[\][ ]=' drivers/mtd/nand/pxa3xx_nand.c
-    blobname 'ctfw_cna\.bin' drivers/net/bna/cna.h
-    accept '[#]define[ ]CARL9170FW_NAME[ 	]\+["]carl9170-1\.fw["]' drivers/net/wireless/ath/carl9170/carl9170.h
-    defsnc 'static[ ]struct[ ]carl9170_phy_init[ ]ar5416_phy_init\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]struct[ ]carl9170_rf_initvals[ ]carl9170_rf_initval\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    defsnc 'static[ ]const[ ]struct[ ]carl9170_phy_freq_entry[ ]carl9170_phy_freq_params\[\][ ]=' drivers/net/wireless/carl9170/phy.c
-    accept 'MODULE_FIRMWARE[(]CARL9170FW_NAME[)][;]' drivers/net/wireless/carl9170/usb.c
-    accept '[	]return[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
-    blobname 'iwlwifi-100-' drivers/net/iwlwifi/iwl-1000.c
-    blobname 'iwlwifi-130-' drivers/net/iwlwifi/iwl-6000.c
-    blobname 'libertas[/]cf83\(05\|8[15]\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_cs.c
-    blobname 'libertas[/]sd\(8385\|8686\(_v[89]\)\|8688\)\(_helper\)\?\.bin' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'libertas[/]gspi\(8385\|8686\(_v9\)\?\|8688\)\(_helper\|_hlp\)\?\.bin' drivers/net/wireless/libertas/if_spi.c
-    blobname 'libertas[/]usb\(8388\(_v[59]\)\?\|8682\)\.bin' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][/][*][ ]Try[ ]user-specified[ ]firmware[ ]first[ ][*][/][\n][	]if[ ][(]fwname[)][\n][	][	]return[ ]request_firmware' drivers/net/wireless/libertas/if_usb.c
-    accept '[	][	]ret[ ]=[ ]request_firmware[(]\(helper,[ ]user_helper\|mainfw,[ ]user_mainfw\)' drivers/net/wireless/libertas/main.c
-    defsnc 'static[ ]const[ ]int[ ]\(ldo5\|buck1\)_voltage_map\[\][ ]=' drivers/regulator/lp3972.c
-    accept '\([ ][*][ ]\(format\|information\)[^\n]*\|[#]define[ ]REG_DATA_FILE_A\?G[ ]*\)["]\([.][/]\)\?regulatoryData_A\?G\.bin["]' drivers/staging/ath6kl/include/common/regulatory/reg_dbschema.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(otp\|athwlan\)\.bin\.z77' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    blobname 'ath6k[/]AR6003[/]hw[12]\.0[/]\(athtcmd_ram\|device\|data\.patch\|endpointping\|bdata\.\(SD3[12]\|WB31\|CUSTOM\)\)\.bin' drivers/staging/ath6kl/os/linux/include/ar6000_drv.h
-    defsnc 'static[ ]const[ ]A_INT32[ ]wmi_rateTable\[\]\[2\][ ]=' drivers/staging/ath6kl/wmi/wmi.c
-    defsnc 'static[ ]DDR_SET_NODE[ ]asT3\(LP\)\?B\?_DDRSetting\(80\|100\|133\|160\)MHz\[\][ ]\?=' drivers/staging/bcm/DDRInit.c
-    blobname '\([/]lib[/]firmware[/]\)\?macxvi200\.bin' drivers/staging/bcm/Macros.h
-    accept '-[ ]On-chip[ ]firmware[ ]loaded[ ]using[ ]standard[ ]request_firmware[(][)]' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    blobname 'brcm[/]bcm43xx\(_hdr\)-0[-0-9]*\.fw' drivers/staging/brcm80211/README
-    blobname 'brcm[/]bcm4329-fullmac-4[-0-9]*\.bin' drivers/staging/brcm80211/brcmfmac/README
-    blob 'Firmware[ ]installation[\n]=\+\([\n]\+[^\n=][^\n]*\)\+\([/]lib[/]firmware[/]brcm\|\.fw\)[^\n]*\([\n][^\n=][^\n]*\)*\([\n][\n][^=\n][^\n]*[\n][^=\n][^\n]*\([\n][^\n=][^\n]*\)*\)*' 'drivers/staging/brcm80211\(/brcmfmac\)\?/README'
-    defsnc '[	]u16[ ]nrate_list\[4\]\[8\][ ]=' drivers/staging/brcm80211/brcmfmac/wl_iw.c
-    defsnc 'static[ ]chan_info_basic_t[ ]chan_info_all\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'u16[ ]ltrn_list\[PHY_LTRN_LIST_LEN\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_cmn.c
-    defsnc 'lcnphy_rx_iqcomp_t[ ]lcnphy_rx_iqcomp_table_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]u32[ ]lcnphy_23bitgaincode_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_table\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]const[ ]s8[ ]lcnphy_gain_index_offset_for_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'static[ ]chan_info_2064_lcnphy_t[ ]chan_info_2064_lcnphy\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'lcnphy_radio_regs_t[ ]lcnphy_radio_regs_2064\[\][ ]='     defsnc 's8[ ]lcnphy_gain_index_offset_for_pkt_rssi\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcm.c
-    defsnc 'u16[ \n]*LCNPHY_txdigfiltcoeffs_\(cck\|ofdm\)\[LCNPHY_NUM_TX_DIG_FILTERS_\(CCK\|OFDM\)\][ \n]*\[LCNPHY_NUM_DIG_FILT_COEFFS[ ][+][ ]1\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_lcn.c
-    defsnc 'nphy_ipa_txrxgain_t[ ]nphy_ipa_rxcal_gaintbl_2GHz\(_rev7\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]chan_info_nphy_\(radio\)\?205[5x7]\(_rev5\)\?_t[ ]chan_info_nphy\(rev[3-9]\(n6\)\?\)\?_205[5-7]\(_A1\|v\([5-8]\|11\)\|_rev[4-8]\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'radio_\(20xx_\)\?regs_t[ ]regs_\(SYN_\|[RT]X_\)\?205[5-7]\(_A1\|_rev\([4-8]\|11\)\(v1\)\?\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]tbl_iqcal_gainparams_nphy\[2\]\[NPHY_IQCAL_NUMGAINS\]\[8\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]nphy_tpc_\(5GHz_\)\?txgain\(_[ei]pa\)\?\(\(_[25]g\)\?\(_\(2057\)\?\(rev\([3-7]\|4n6\)\?\)\?\)\?\|_HiPwrEPA\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]const[ ]u16[ ]nphy_tpc_loscale\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u8[ ]pad_all_gain_codes_2057\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'static[ ]u32[ ]nphy_papd_scaltbl\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]s32[ ]poll_results\[8\]\[4\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc '[	]nphy_txiqcal_ladder_t[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phy_n.c
-    defsnc 'const[ ]u32[ ]dot11lcn_gain_\(idx_\|val_\)\?tbl_\(rev[01]\|\(extlna_\)\?2G\|5G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_aux_gain_idx_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_aux_gain_idx_tbl_5G\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_gain_val_tbl_\(rev0\|\(extlna_\)\?2G\)\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(min_sig_sq\|noise_scale\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_sw_ctrl_tbl_\(4313_\)\?\(bt_\)\?\(epa_\)\?\(p250_\)\?rev0\(_combo\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u8[ ]dot11lcn_spur_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u16[ ]dot11lcn_\(unsup_mcs\|iq_local\)_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]lcnphy_tx_gain_tbl_entry[ ]dot11lcnphy_[25]GHz_\(extPA_\)\?gaintable_rev0\[128\][ ]='  drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]dot11lcn_papd_compdelta_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
-    defsnc 'const[ ]u32[ ]frame_struct_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]frame_lut_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(tmap\|tdtrn\)_tbl_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]pilot_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]tdi_tbl[24]0_ant[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]chanest_tbl_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]mcs_tbl_rev0\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]noise_var_tbl[01]\?_rev[037]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u8[ ]\(est\|adj\)_pwr_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]\(gainctrl\|iq\)_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]loft_lut_core[01]_rev[03]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]ant_swctrl_tbl_rev3\(_[1-3]\)\?\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]mcs_tbl_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u16[ ]papd_comp_rfpwr_tbl_core[01]_rev3\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    defsnc 'const[ ]u32[ ]papd_\(comp_epsilon\|cal_scalars\)_tbl_core[01]_rev[37]\[\][ ]=' drivers/staging/brcm80211/phy/wlc_phytbl_n.c
-    blobname 'brcm[/]bcm43xx' drivers/staging/brcm80211/sys/wl_mac80211.c
-    blobname '%s\(_hdr\)\?-%d\.fw' drivers/staging/brcm80211/sys/wl_mac80211.c
-    defsnc 'static[ ]const[ ]u8[ ]crc8_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u16[ ]crc16_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]u32[ ]crc32_table\[256\][ ]=' drivers/staging/brcm80211/util/bcmutils.c
-    defsnc 'static[ ]const[ ]pmu0_xtaltab0_t[ ]pmu0_xtaltab0\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]pmu1_xtaltab0_t[ ]pmu1_xtaltab0\(_880\(_4329\)\?\|_1760\|_1440\|_960\)\[\][ ]=' drivers/staging/brcm80211/util/hndpmu.c
-    defsnc 'static[ ]const[ ]s16[ ]log_table\[\][ ]=' drivers/staging/brcm80211/util/qmath.c
-    blobname 'ft[12]000\.img' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-    blobname 'ft3000\.img' drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
-    defsnc '[ ][ ][ ][ ]u8[ ]ConnectionMsg\[\][ ]='  drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
-    blobname 'fw_sst_0\(80a\|82f\)\.bin' drivers/staging/intel_sst/intel_sst_common.h
-    # This appends a .bin extension, but without loading the firmware
-    # above, it will never arise, so leave it alone for now.
-    accept '[	]len[ ][+]=[ ]snprintf[(]buf[ ][+][ ]len[,][ ]sizeof[(]buf[)][ ]-[ ]len,[ ]["][.]bin["][)][;]' drivers/staging/intel_sst/intel_sst_dsp.c
-    defsnc '[	]struct[ ]sc_reg_access[ ]\(sc_acces[,][ ]\)\?sc_access\[\][ ]=' 'drivers/staging/intel_sst/intelmid_v[012]_control\.c'
-    defsnc '[	]BYTE[ ]data_ptr\[36\][ ]=' 'drivers/staging/keucr/\(ms\|s[dm]\)scsi\.c'
-    defsnc 'static[ ]BYTE[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
-    defsnc 'static[ ]u8[ ]MAC_REG_TABLE\[\]\[2\][ ]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\][ 	]=' drivers/staging/rtl8187se/r8185b_init.c
-    blob 'static[ ]const[ ]unsigned[ ]char[ ]f_array\[122328\][ ]=[ ][{]'"$sepx$blobpat*"',[\n][}][;]' drivers/staging/rtl8712/farray.h
-    blob 'static[ ]u32[ ]rtl871x_open_fw[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*f_array\([\n]\+[^\n}][^\n]*\)*[^\n]*[\n]\+[}]' drivers/staging/rtl8712/hal_init.c
-    defsnc 'static[ ]const[ ]long[ ]frequency_list\[\][ ]=' drivers/staging/rtl8712/rtl871x_ioctl_linux.c
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    defsnc 'static[ ]const[ ]u8[ ]sbox_table\[256\][ ]=' drivers/staging/rtl8712/rtl871x_security.c
-    accept '[	]119,[ ]62,[ ]6,[\n][	]0,[ ]16,[ ]20,[ ]17,[ ]32,[ ]48,[ ]0,\([\n][	][0-9]\+,\([ ][0-9]\+,\)*\)*[\n][	]0,[ ]119' drivers/staging/speakup/speakupmap.h
-    defsnc 'static[ ]u32[ ]\(h_prescale\|v_gain\)\[64\][ ]=' drivers/staging/stradis/stradis.c
-    accept '[/][*][ ]*\([ 1-4][0-9][ ][ ]\)*\(5[0-6][ ][ ]\)*[*][/]' drivers/staging/vt6656/channel.c
-    blobname 'west[ ]bridge[ ]fw' drivers/staging/westbridge/astoria/device/cyasdevice.c
-    defsnc 'static[ ]const[ ]u8[ ]gsm_fcs8\[256\][ ]=' drivers/tty/n_gsm.c
-    defsnc '[	]static[ ]const[ ]struct[ ]dispc_v_coef[ ]coef_v\(up\|down\)_3tap\[8\][ ]=' drivers/video/omap2/dss/dispc.c
-    blobname 'c[bt]fw_\(fc\|cna\)\.bin' drivers/scsi/bfa/bfad_im.h
-    # Above is for patterns new in 2.6.37, below is for older patterns.
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[pxm]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname '\(bnx2x[/]\)\?bnx2x-e[12]h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'v4l-cx23885-enc\.fw' 'drivers/media/video/cx23\(1xx\|885\)/cx23885-417.c'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]int[ ]be_load_fw[(][^\n;{]*[)][*][/][;][\n][^\n]*\([\n]\+[^\n}][^\n]*\)*request_firmware' drivers/net/benet/be_main.c
-    accept 'MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\([\n]MODULE_FIRMWARE[(]["]ar9170\(-[12]\)\?\.fw["][)][;]\)*' drivers/net/wireless/ar9170/usb.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '#define\([ ]_\?IWL\(4965\|[156]000\(G2[AB]\)\?\|1[03]0\|5150\|6050\)_MODULE_FIRMWARE[(]api[)]\)\+' 'drivers/net/iwlwifi/iwl-\([156]000\|4965\)\.c'
-    blobname 'iwlwifi-\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)["][ ]IWL\(3945\|4965\|[156]000\(G2[AB]\)\?\|1[03]0\|6050\)_UCODE_API[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-\(3945\|4965\|[156]000\)\)\.[ch]'
-    blobname '%s%[dus]%s["],[\n 	]*name_pre,[ ]\(\(priv->fw_\)\?index\|tag\),[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    blobname 'libertas_cs\(_helper\)\?\.fw' drivers/net/wireless/libertas/if_cs.c
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin\(["],[\n][	]*\.firmware[ 	]=[ ]["]sd\(8385\|868[68]\)\.bin\)\?' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    blobname 'wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
-    defsnc 'static[ ]int[ ]sh_clk_div6_divisors\[64\][ ]=' '\(arch/sh/kernel/cpu/clock-\|drivers/sh/clk/\)cpg\.c'
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([ ][{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h
-    defsnc 'static[ ]unsigned[ ]short[ ]translations\[\]\[256\][ ]=' drivers/tty/vt/consolemap.c
-    defsnc 'u_short[ ]\(plain\|shift\(_ctrl\)\?\|alt\(gr\)\?\|ctrl\(_alt\)\?\)_map\[NR_KEYS\][ ]*=' drivers/tty/vt/defkeymap.c_shipped
-    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]x86_keycodes\[256\][ ]=' drivers/tty/vt/keyboard.c
-    defsnc '\([	]\)\?static[ ]\(const[ ]\)\?\(unsigned[ ]\(short\|char\)\|struct[ ]SiS_[^ ]*\)[ ]SiS[^[]*\(\[[][ *0-9]*\]\)\+[ ]*='
-    defsnc '[ ][ ]static[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/kconfig/zconf.hash.c_shipped
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    blobname 'TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/staging/ti-st/st_kim.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]\(__devinit[ ]\)\?bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '[	]static[ ]__u8[ ]lgdt3304_\(vsb8\|qam\(64\|256\)\)_data\[\][ ]=' drivers/media/dvb/frontends/lgdt3304.c
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    defsnc '\(preview_snapshot_mode\|noise_reduction\)_reg_settings_array\[\][ ]=' drivers/staging/dream/camera/mt9d112_reg.c
-    defsnc 'u16_t[ ]zgTkipSbox\(Lower\|Upper\)\[256\][ ]=' drivers/staging/otus/80211core/ctkip.c
-    accept '[ 	]*[/][*][ ]*0\([ ]*[123]\)*[ ]*[*][/][\n][ 	]*[/][*][ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9\([ ][0-9]\)*[ ][*][/]' drivers/staging/otus/80211core/ctxrx.c
-    defsnc 'u32_t[ ]crc32_tab\[\][ ]=' drivers/staging/otus/80211core/cwep.c
-    blob 'extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\([\n]extern[ ]const[ ]u32_t[ ]zc\(DK\|P2\)\?Fw\(Buf\)\?Image\(SPI\)\?\(\[\]\|Size\)[;]\)*' drivers/staging/otus/hal/hpmain.c
-    defsnc '[ ][ ][ ][ ]u32_t[ ]eepromBoardData\[15\]\[6\][ ]=' drivers/staging/otus/hal/hpmain.c
-    defsnc 'static[ ]const[ ]u32_t[ ]\(ar5416Modes\|otusBank\)\[\]\[[36]\][ ]=' drivers/staging/otus/hal/otus.ini
-    defsnc 'static[ ]const[ ]u32_t[ ]channel_frequency_11A\[\][ ]=' drivers/staging/otus/ioctl.c
-    defsnc '[ ]\?static[ ]u\(8\|32\)[ ]\(MAC_REG_TABLE\[\]\[2\]\|[ ]*ZEBRA_\(AGC\|RF_RX_GAIN_TABLE\)\[\]\|OFDM_CONFIG\[\]\)=' drivers/staging/rtl8187se/r8185b_init.c
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blob 'u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\([\n][\n]*u8[ ]Rtl8192SUFw\(Img\|Main\|Data\)Array\[\(Img\|Main\|Data\)ArrayLength\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]\)*' drivers/staging/rtl8192su/r8192SU_HWImg.c
-    blobname 'RTL8192SU[/]\(rtl8192sfw\.bin\|\(boot\|main\|data\)\.img\)' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna 'case[ ]FW_SOURCE_HEADER_FILE:[\n]#if[ ]1[\n]#define[^#]*[\n]#endif[\n][	][	][	]break[;]' drivers/staging/rtl8192su/r8192S_firmware.c
-    blobna '\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)rtl8190_fw\(boot\|main\|data\)_array\(\[0\]\|[)]\)\)*' 'drivers/staging/rtl8192su/r819\(2S\|xU\)_firmware\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    accept '[*][ ]drivers[/]staging[/]ft1000[/]ft1000-\(pcmcia\|usb\)[/]ft[13]000\.img:[ ]Removed\.' 'patch-libre.*'
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]ar9300_eeprom[ ]ar9300_default[ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8753_reg\[\][ ]=' sound/soc/codecs/wm8753.c
-    ;;
-
-  */patch*-2.6.36.*)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    ;;
-
-  */patch*-2.6.36-rc*)
-    accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]int[\n ]\)\?_request_firmware[(]const[ ]struct[ ]firmware[ ][*][*]firmware_p,' drivers/base/firmware_class.c
-    accept 'static[ ]int[\n ]request_firmware_work_func[(]void[ ][*]arg[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]_request_firmware[(][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/base/firmware_class.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?request_firmware_nowait[(]' drivers/base/firmware_class.c
-    accept '[	]task[ ]=[ ]kthread_run[(]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc '[	]*static[ ]const[ ]char[ ]sha256_zero\[SHA256_DIGEST_SIZE\][ ]=' drivers/crypto/n2_core.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?const[ ]u32[ ]r[67]xx_default_state\[\][ ]=\([*][/][;]\)\?' drivers/gpu/drm/radeon/r600_blit_shaders.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    blobname 'sms1xxx-\(stellar\|nova-[ab]\|hcw-55xxx\)-dvbt-0[12]\.fw' drivers/media/dvb/siano/sms-cards.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    blobname 'bnx2[/]bnx2-\(mips\|rv2p\)-[-0-9a-z.]*\.fw' drivers/net/bnx2.c
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    defsnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]=' drivers/net/bnx2x/bnx2x_init_opts.h
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    blobname 'bnx2x-e1h\?-\([0-9.%d]*\.fw\)\?' 'drivers/net/\(bnx2x/\)\?bnx2x_main\.c'
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]void[ ]get_regs[(]struct[ ]net_device[ ][*]dev,\([^\n]*[*][/][;]\)\?' drivers/net/cxgb4/cxgb4_main.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(_\?1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar\(5008\|9001\)_\)\?initvals\.h'
-    defsnc 'static[ ]\(const[ ]\)\?u\(32\|_int32_t\)[ ]ar928[05]\(Common\|Modes\(_\(fast_clock\|backoff_[12]3db_rxgain\|\(original\|high_power\)_[tr]x_\?gain\)\)\?\)_928\(0_2\|5\(_1_2\)\?\)\[\]\[[236]\][ ]=' 'drivers/net/wireless/ath9k/\(ar9002_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar928\(5Modes_XE2\|7Modes_9287_1\)_0_\(normal\|high\)_power\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87Common_9287_1_[01]\|71Common_9271\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar92\(87\|71\)Modes_\(\(normal\|high\)_power_\)\?\([tr]x_gain_\)\?92\(87_1_[01]\|71\(_ANI_reg\)\?\)\[\]\[6\][ ]=' drivers/net/wireless/ath/ath9k/ar9002_initvals.h
-    defsnc 'static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    defsnc 'static[ ]const[ ]u32[ ]ar9300Common_\(wo_xlna_\)\?rx_gain_table_\(merlin_\)\?2p[02]\[\]\[2\][ ]=' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h'
-    accept 'static[ ]int[ ]ipw2100_mod_firmware_load[(]' 'drivers/net/wireless/\(ipw2x00/\)\?ipw2100\.c'
-    accept '[	]*card->firmware[ ]=[ ]\(if_sdio\|lbs_fw\|fw_name\)' drivers/net/wireless/libertas/if_sdio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\([\n]#define[ ]BCM_5710_FW_\(\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\|COMPILE_FLAGS\)[ 	]*[0-9]\+\)*' 'drivers/net/\(bnx2x[/]\)\?bnx2x_hsi\.h'
-    blob 'static[ ]int[ ]__devinit[ ]bnx2x_check_firmware[(]struct[ ]bnx2x[ ][*]bp[)][\n][{][^\n]*\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'if[ ][(][(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ][|][|][\n][ 	]*[(]fw_ver\[[0-3]\][ ]!=[ ]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\)*[)][ ][{][^{}]*[}]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'sprintf[(]fw_file_name[ ][+][ ]offset,[ ]["]%d[.]%d[.]%d[.]%d[.]fw["]\(,[\n][ 	]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION\)*[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    blobna 'rc[ ]=[ ]bnx2x_check_firmware[(]bp[)][;]' 'drivers/net/\(bnx2x[/]\)\?bnx2x_main\.c'
-    defsnc '\(static[ ]\)\?struct[ ]crb_128M_2M_block_map[ ]crb_128M_2M_map\[64\][ ]=' 'drivers/scsi/\(qla2xxx/qla_nx\.c\|qla4xxx/ql4_nx\.c\)'
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc 'u32[ ]Rtl8192SU\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?\[\(PHY_\(REG\|ChangeTo\)_\([12]T[12]R\)\?\|Radio[AB]_\(\(\(to\)\?[12]T\|GM\)_\)\?\|MAC\(PHY\|_[12]T\)_\|AGCTAB_\)Array\(_PG\)\?Length\][ ]=' drivers/staging/rtl8192su/rtl92SU_HWImg.c
-    defsnc '[}][ ]*ChannelRuleTab\[\][ ]=' drivers/staging/vt6656/channel.c
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DRAMType\[17\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_SDRDRAM_TYPE\[13\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_DDRDRAM_TYPE20\[12\]\[5\][ ]*=' 'drivers/staging/xgifb/\(vb_table\.h\|vb_init\.c\)'
-    defsnc '\(USHORT\|unsigned[ ]short\)[ ]XGINew_\(MD\|[CEV]G\)A_DAC\[\][ ]*=' drivers/staging/xgifb/vb_setmode.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(UCHAR\|unsigned[ ]char\)[ ]XGI340_CR6F\[8\]\[32\][ ]*=\([{][*][/][;]\)\?' drivers/staging/xgifb/vb_table.h 
-    blobname 'sd\(8385\|868[68]\)\(_helper\)\?\.bin' 'drivers/\(net/wireless/libertas/if_sdio\.c\|bluetooth/btmrvl_sdio\.c\)'
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]dvb_usb_device_properties[ ]\(megasky\|digivox_mini_ii\|tvwalkertwin\|dposh\)_properties[ ]=[ ][{]\([*][/][;]\)\?[\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/m920x.c
-    blobname 'dvb-usb-\(\(megasky\|digivox\)-02\|tvwalkert\|dposh-01\)\.fw' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'myri10ge_\(rss_\)\?ethp\?_z8e\.dat' drivers/net/myri10ge.c
-    blobname 'iwlwifi-6000g2[ab]-' drivers/net/iwlwifi/iwl-6000.c
-    blobname '#api[ ]["]\.ucode["]' 'drivers/net/iwlwifi/iwl-\(3945.h\|\(4965\|[156]000\)\.c\)'
-    blobname 'c[tb]fw\(_\(fc\|cna\)\)\?\.bin' drivers/scsi/bfa/bfad_fwimg.c
-    blobna 'seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\([ 	\n]*seq_printf[(]seq[,][ ]["][^"]*%s[ ]%s[^"]*["][,][ 	\n]*\(GB_RCV\|MOJAVE_\)UCODE_VERS_STRING[,][ ]\(GB_RCV\|MOJAVE_\)UCODE_VERS_DATE[)][;]\)*' drivers/staging/slicoss/slicoss.c
-    blobname 'slicoss[/]\(oasis\|gb\)\(rcvucode\|download\)\.sys' drivers/staging/slicoss/slicoss.c
-    blobname 'CMV[x9ae][yip]\.bin\(\.v2\)\?' drivers/usb/atm/ueagle-atm.c
-    blobname 'v4l-cx2341x-\(enc\|dec\)\.fw' include/media/cr2341x.h
-    blobname 'yam[/]\(12\|96\)00\.bin' drivers/net/hamradio/yam.c
-    blob 'If[ ]you[ ]need[ ]to[ ]use[ ]any[ ]of[ ]the[ ]above[^\n]*download[^:]*:[\n 	]*http:[^\n]*ixp4[^\n]*' Documentation/arm/IXP4xx
-    # New in 2.6.36-rc3:
-    defsnc 'static[ ]struct[ ]clk_pll_table[ ]tegra_pll_[px]_table\[\][ ]=' arch/arm/mach-tegra/tegra2_clocks.c
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]qi_lb60_ecclayout_[12]gb[ ]=' arch/mips/jz4740/board-qi_lb60.c
-    blobname 'qt602240\.fw' drivers/input/touchscreen/qt602240_ts.c
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxx.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]pwm_lookup_table\[256\][ ]=' drivers/platform/x86/compal-laptop.c
-    defsnc 'static[ ]int[ ]tps6586x_\(ldo4\|sm2\|dvm\)_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
-    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]muxonechan\[\][ ]=' drivers/staging/comedi/drivers/adv_pci1710.c
-    defsnc 'const[ ]struct[ ]\(stk1160\|saa7113\)config[ ][{][^}]*[}][ ]\(stk1160\|saa7113\)config\[256\][ ]=' drivers/staging/easycap/easycap_low.c
-    defsnc 'int[ ]tones\[2048\][ ]=' drivers/staging/easycap/easycap_testcard.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/staging/lirc/lirc_ttusbir.c
-    defsnc 'static[ ]unsigned[ ]char[ ]jpeg_header\[\][ ]=' drivers/staging/solo6x10/solo6010-jpeg.h
-    defsc 'static[ ]const[ ]unsigned[ ]int[ ]solo_osd_font\[\][ ]=' drivers/staging/solo6x10/solo6010-osd-font.h
-    defsnc '[	]unsigned[ ]char[ ]regs\[128\][ ]=' drivers/staging/solo6x10/solo6010-tw28.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vid_vop_header\[\][ ]=' drivers/staging/solo6x10/solo6010-v4l2-enc.c
-    defsnc 'static[ ]const[ ]u16[ ]rop_\(map1\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/reloc_table_c6000.c
-    defsnc 'static[ ]const[ ]u16[ ]tramp_\(map\|action\|info\)\[\][ ]=' drivers/staging/tidspbridge/dynload/tramp_table_c6000.c
-    defsnc 'unsigned[ ]char[ ]\(sbox\|dot[23]\)_table\[256\][ ]=' drivers/staging/vt6655/aes_ccmp.c
-    defsnc 'static[ ]struct[ ]pll_map[ ]pll_value\[\][ ]=' drivers/video/via/hw.c
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/bytestream-example.c
-    defsnc 'static[ ]const[ ]int[ ]expected_result\[FIFO_SIZE\][ ]=' samples/kfifo/inttype-example.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    ;;
-
-  */hid-support*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-    ;;
-
-  */sched*)
-    accept 'CPU[ ]\+before[ ]\+after[\n]\([\n][01][0-9][ ]\+:[ ][0-9]\+[ ]\+:[ ][67]\)*'
-    defsnc '[	][	]degrade_factor\[CPU_LOAD_IDX_MAX\]\[DEGRADE_SHIFT[ ][+][ ]1\][ ]=' kernel/sched.c
-    accept '\(All[ ]CPUS[ ]idle[ ]for[ ]10[ ]seconds[ ][(]HZ=1000[)]\|One[ ]CPU[ ]busy[ ]rest[ ]idle[ ]for[ ]10[ ]seconds\|All[ ]CPUs[ ]busy[ ]for[ ]10[ ]seconds\)[\n][0-9 \n]*'
-    accept 'domainstats:[ ]*domain0[\n][ ]*cpu[ ]*cnt[ ]*bln[ ]*fld[ ]*imb[ ]*gain[ ]*hgain[ ]*nobusyq[ ]*nobusyg[\n 0-9:]*'    
-    ;;
-
-  */*-loongson.patch)
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' drivers/net/wireless/rtl8187b/ieee80211/ieee80211_crypt_tkip.c
-    defsnc 'u16[ ]rtl8225bcd_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'u8[ ]rtl8225_agc\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225.c
-    defsnc 'static[ ]u32[ ]MAC_REG_TABLE\[\]\[3\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u8[ ][ ]*ZEBRA_AGC\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]u32[ ]ZEBRA_RF_RX_GAIN_TABLE\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]ZEBRA2_CCK_OFDM_GAIN_SETTING\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u16[ ]rtl8225z2_rxgain\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'u8[ ]rtl8225z2_tx_power_cck\(_ch14\)\?\[\]=' drivers/net/wireless/rtl8187b/r8180_rtl8225z2.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    ;;
-
-  */patch*-2.6.34-rc*)
-    # New in 2.6.34, should be duplicated in the main pattern set.
-    blobname 'cxgb4[/]t4fw\.bin' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]reg_ranges\[\][ ]=' drivers/net/cxgb4/cxgb4_main.c
-    defsnc '[	]static[ ]const[ ]unsigned[ ]int[ ]avg_pkts\[NCCTRL_WIN\][ ]=' drivers/net/cxgb4/t4_hw.c
-    # above in -rc5
-    defsnc 'static[ ]u32[ ]epll_div\[\]\[5\][ ]=' arch/arm/mach-s5p6440/clock.c
-    accept '[	]aru->firmware[ ]=[ ]fw[;]' drivers/net/wireless/ath/ar9170/usb.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]fw_entry,[ ]["]broadsheet\.wbf["],[ ]dev[)][;]' drivers/video/broadsheetfb.c
-    # above in -rc2, below in -rc1
-    accept '#[ ]\(Usage:[ ]cxacru-cf\.py[ ][<]\|Warning:\|Note:[ ]support[ ]for\)[ ]cxacru-cf\.bin' 'Documentation/networking/cxacru\(-cf\.py\|\.txt\)'
-    defsnc 'static[ ]struct[ ]cdce_reg[ ]cdce_y1_27000\[\][ ]=' arch/arm/mach-davinci/cdce949.c
-    defsnc '[	]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]az6027_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/az6027.c
-    blobname 'dvb-usb-az6027-03\.fw' drivers/media/dvb/dvb-usb/az6027.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    blobname 'dvb-usb-p7500\.fw' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]u8[ ]ITUDecoderSetup\[4\]\[16\][ ]=' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'ngene_1[5678]\.fw' drivers/media/dvb/ngene/ngene-core.c
-    blobname 'sms1xxx-hcw-55xxx-i\?sdbt-02\.fw' drivers/media/dvb/siano/sms-cards.c
-    defsnc 'static[ ]u8[ ]samsung_smt_7020_inittab\[\][ ]=' drivers/media/video/cx88/cx88-dvb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'tlg2300_firmware\.bin' drivers/media/video/tlg2300/pd-main.c
-    defsnc '[	]u8[ ]pattern\[42\][ ]=' drivers/net/ksz884x.c
-    defsnc '\(static[ ]\)\?const[ ]u8[ ]b43_ntab_framelookup\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u32[ ]\(b43_ntab_tx_gain_rev\(0_1_2\|3plus_2ghz\|\([34]\|5plus\)_5ghz\)\|txpwrctrl_tx_gain_ipa\(_\(rev\)\?[56]g\?\)\?\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]tbl_iqcal_gainparams\[2\]\[9\]\[8\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]struct[ ]nphy_txiqcal_ladder[ ]ladder_\(lo\|iq\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    defsnc 'const[ ]u16[ ]loscale\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
-    blobname 'isl38\(86\|87\|90\)\(pci\|usb\(_bare\)\?\)\?' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=[ ][{][*][/][;]' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc '[	][}][ ]grtpkts\[\][ ]=' drivers/staging/mimio/mimio.c
-    blobname 'rt\(28[67]0\|30[79][01]\)\.bin' drivers/staging/rt2860/common/rtmp_mcu.c
-    accept '[	]adapter->firmware[ ]=[ ]fw[;]' drivers/staging/rt2860/common/rtmp_mcu.c
-    blob '[/][*][^*]*\([*]\+[^/*][^*]*\)*[*]*RTL8192SU[/]rtl1892swf\.bin[^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/staging/rtl8192su/r8192S_firmware.c
-    accept 'MODULE_FIRMWARE[(]["]keyspan_pda[/]\(keyspan_pda\|xircom_pgs\)\.fw["][)][;]' drivers/usb/serial/keyspan_pda.c
-    # It's not clear that wm2000_anc.bin is pure data.
-    # Check with developer, clean up for now.
-    blobname 'wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    blob '[ ][*][ ]The[ ]download[ ]image[ ]for[ ]the[ ]WM2000[^*]*\([*]\+[^/*][^*]*\)*[*]*[<][ ]file[^*\n]*[\n][ ][*][/]' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ ].wm2000_anc\.bin.[ ]by[ ]default' sound/soc/codecs/wm2000.c
-    # accept '[ ][*][ 	]*[<][ ]file[ ]\+[>]wm2000_anc\.bin' sound/soc/codecs/wm2000.c
-    # accept '[	]filename[ ]=[ ]["]wm2000_anc\.bin["][;]' sound/soc/codecs/wm2000.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' 'sound/soc/wm890[34]\.c'
-    defsnc '[}][ ]clock_cfgs\[\][ ]=' sound/soc/codecs/wm8955.c
-    blobname 'siu_spb\.bin' sound/soc/sh/siu_dai.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc 'crb_128M_2M_map\[64\][ ]__cacheline_aligned_in_smp[ ]=' 'drivers/net/\(netxen/netxen_nic_hw.c\|qlcnic/qlcnic_hw.c\)'
-    # Pattern present prior to 2.6.34, or already adjusted for 2.6.34 in
-    # the main pattern set.
-    accept '[ ][ ][ ]Bit[ 0-7]*' Documentation/input/sentelic.txt
-    accept 'The[ ]hd-audio[ ]driver[ ]reads[ ]the[ ]file[ ]via[ ]request_firmware[(][)]\.' Documentation/sound/alsa/HD-Audio.txt
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" arch/powerpc/lib/copyuser_64.S
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp0222\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp1110\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp3033\[256\][ ]=' crypto/camellia.c
-    defsnc 'static[ ]const[ ]u32[ ]camellia_sp4404\[256\][ ]=' crypto/camellia.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/pac7302.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blob 'sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|cx\(23\(1xx\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\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\|885\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\|af9015\|ngene\)[ ]*[{]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}]\)*' Documentation/dvb/get_dvb_firmware
-    accept '\([/][*][*][\n]\)\?[ ][*][ ]request_firmware_nowait\(:\|[ ]-\)[ ]asynchronous[ ]version[ ]of[ ]request_firmware' drivers/base/firmware_class.c
-    blobname 'b43\(legacy\)\?\(%s\)\?[/]\(%s\|ucode\([2459]\|1[1345]\)\|pcm5\|[abn]0g[01]initvals\(5\|1[13]\)\)\.fw' 'drivers/net/wireless/b43\(legacy\)\?/main.c'
-    blobname '\(sep[/]\)\?\(cache\|resident\)\.image\.bin' drivers/staging/sep/sep_driver.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func' drivers/base/firmware_class.c
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(__u16\|struct[ ]cmd\)[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\(\[3\]\)\?[ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sunplus.c
-    # above is in -rc1, below in -rc2
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' 'arch/sh/kernel/cpu/sh2a/pinmux-sh7203\.c\|arch/arm/mach-shmobile/pfc-sh73[67]7\.c'
-    defsnc 'static[ ]const[ ]u8[ ]ratio_lut\[\][ ]=' drivers/misc/tsl2550.c
-    initnc 'static[ ]const[ ]u16[ ]count_lut\[\][ ]=' drivers/misc/tsl2550.c
-    accept 'static[ ]int[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    accept '[	]\(err[ ]=\|return\)[ ]request_firmware\(_nowait\)\?[(][^\n]*["]ar9170\(-[12]\)\?\.fw["],' drivers/net/wireless/ar9170/usb.c
-    accept '[	]err[ ]=[ ]ar9170_usb_request_firmware[(]' drivers/net/wireless/ar9170/usb.c
-    blobname '%s%[du]%s["],[\n 	]*name_pre,[ ]\(priv->fw_\)\?index,[ ]["]\.ucode' 'drivers/net/iwlwifi/iwl\(3945-base\|-agn\).c'
-    accept '#include[ ]["]ixp2400_[rt]x\.ucode["]' drivers/net/ixp2000/ixpdev.c
-    ;;
-
-  */patch*-2.6.33-rc*)
-    accept 'static[ ]inline[ ]int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?[(][^{;]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*\([\n]\+[}]\)\?' include/linux/firmware.h
-    accept '[	][	]ranges[ ]=[ ]<'"$blobpat*"'>[;]' 'arch/powerpc/boot/dts/\(mpc8572ds\|p2020ds\|katmai\)\.dts'
-    defsnc 'static[ ]unsigned[ ]char[ ]camera_ncm03j_magic\[\][ ]=' 'arch/sh/boards/\(board-ap325rxa\.c\|mach-ap325rxa/setup\.c\)'
-    defsnc 'static[ ]unsigned[ ]char[ ]vga_font\[cmapsz\][ ]\(BTDATA[ ]\)\?=' arch/sparc/kernel/btext.c
-    accept '[	][	][	]req_firm_rc[ ]=[ ]request_firmware_nowait[(][^;]*,[ ]["]dell_rbu["],' drivers/firmware/dell_rbu.c
-    defsnc 'struct[ ]nv17_tv_norm_params[ ]nv17_tv_norms\[NUM_TV_NORMS\][ ]=' drivers/gpu/drm/nouveau/nv17_tv_modes.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u16[ ]stufftab\[5[ ][*][ ]256\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/isdn/gigaset/isocdata.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' 'drivers/media/video/gspca/pac73\(02\|11\)\.c'
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals\(_3070\)\?\[\][ ]=' drivers/net/wireless/prism54/islpci_dev.c
-    defsnc 'static[ ]uint32[ ][FR]Sb\[256\][ ]=' 'drivers/staging/rt28[67]0/common/\(md5\|cmm_aes\)\.c'
-    defsnc 'static[ ]const[ ]u16[ ]Sbox\[256\][ ]=' # 'drivers/staging/rtl8192u/r819xU_firmware.c' and elsewhere
-    defsnc 'u16[ ]MCS_DATA_RATE\[2\]\[2\]\[77\][ ]=' 'drivers/staging/\(rtl8192su/ieee80211/rtl819x_HTProc\.c\|rtl8192u/r819xU_firmware\.c\)'
-    defsnc '\(static[ ]\)\?u32[ ]Rtl8190PciE\?\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)Array\[\(AGCTAB_\|PHY_REG\(_1T2R\)\?\|Radio[ABCD]_\)ArrayLength\][ ]=' 'drivers/staging/\(rtl8192e/r819xE_phy\.c\|rtl8192u/r819xU_firmware_img.c\)'
-    defsnc 'u32[ ]Rtl8192Usb\(PHY_REG\(_1T2R\)\?\|\(Radio[ABCD]\|MACPHY\|AGCTAB\)_\)Array\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192su/rtl819xU_firmware_img.c
-    defsnc '[ ][ ]static[ ]const[ ]unsigned[ ]char[ ]asso_values\[\][ ]=' scripts/genksyms/keywords.c_shipped
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]request_firmware_work_func[(]void[ ][*]arg[)][*][/][;][\n]\([^\n]*[\n]\)\+\([	]ret[ ]=[ ]_request_firmware[(]\|request_firmware_nowait[(]\)\?' drivers/base/firmware_class.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ]af9015_properties\(\[\]\)\?[ ]=[ ][{][*][/][;][\n][	][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/af9015.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]bridge_start_ov965x\[\]\[2\][ ]=[ ][{][*][/][;][\n]' drivers/media/video/gspca/ov534.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_ov965x_\(\([qs]\?v\|x\)ga\|cif\)\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\|po1030\)_sensor_init\[\]\[8\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u_int32_t[ ]ar9271\(Common\|Modes\)_9271_1_0\[\]\[[26]\][ ]=[ ][{][*][/][;][\n]' drivers/net/wireless/ath9k/initvals.h
-    defsnc '\(U\(INT\|CHAR\)\|u\(32\|8\)\)[ ]\(Tkip_Sbox_\(Lower\|Upper\)\|SboxTable\)\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_tkip\.c'
-    defsnc '\(RTMP_RF_REGS\|struct[ ]rt_rtmp_rf_regs\)[ ]RF2850RegTable\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(FREQUENCY_ITEM\|struct[ ]rt_frequency_item\)[ ]FreqItems3020\[\][ ]=' 'drivers/staging/rt28[67]0/common/\(mlme\.c\|cmm_asic\.c\)'
-    defsnc '\(UINT\|u32\)[ ]FCSTAB_32\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/common/\(rtmp\|cmm\)_wep\.c'
-    defsnc '\(UCHAR\|u8\)[ ]RateSwitchTable\(11B\?G\?\(N[123]S\(ForABand\)\?\)\?\)\?\[\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(UCHAR\|u8\)[ 	]*ZeroSsid\[32\][ ]=' 'drivers/staging/rt28[67]0/common/mlme\.c'
-    defsnc '\(CH_FREQ_MAP\|struct[ ]rt_ch_freq_map\)[ ]CH_HZ_ID_MAP\[\][ ]\?=' 'drivers/staging/\(rt2860\|rt3090\)/common/rt_channel\.c'
-    defsnc '\(DOT11_REGULATORY_INFORMATION\|struct[ ]rt_dot11_regulatory_information\)[ ]\(USA\|Europe\|Japan\)RegulatoryInfo\[\][ ]=' 'drivers/staging/\(rt3090\|rt2860\)/common/spectrum\.c'
-    defsnc '\([ ][ ][ ][ ]\|[	]\)u_int32_t[ ]ralinkrate\[256\][ ]=' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.c'
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv10_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]\(dw\(210[24]\|3101\)\|s6[3x]0\)_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\|size_of_priv\)[ ]*=[ ][^",]*,[\n]*\)*[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/dw2102.c
-    defsnc 'static[ ]int[ ]zoom2_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom2.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=[ ][{]\([*][/][;]\)\?[\n]' drivers/media/video/gspca/zc3xx.c
-    defsnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]=' drivers/net/wireless/zd1211rw/zd_chip.c
-    defsnc '[ ][ ][ ][ ]static[ ]UINT32[ ]MD5Table\[64\][ ]=' 'drivers/staging/rt28[67]0/common/md5\.c'
-    defsnc 'ULONG[ ][ ]*BIT32\[\][ ]=' 'drivers/staging/rt28[67]0/common/rtmp_init\.c'
-    defsnc 'static[ ]UINT8[ ]WPS_DH_\([PRX]\|RRModP\)_VALUE\[1\(9[23]\|84\)\][ ]=' drivers/staging/rt3090/common/crypt_biginteger.c
-    defsnc 'static[ ]const[ ]UINT32[ ]SHA256_K\[64\][ ]=' drivers/staging/rt3090/common/crpt_sha2.c
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'const[ ]unsigned[ ]short[ ]ccitt_16Table\[\][ ]=' 'drivers/staging/rt\(28[67]0\|3090\)/common/rtmp_init\.c'
-    defsnc 'static[ ]const[ ]USHORT[ ]Sbox\[256\][ ]=' drivers/staging/rt3090/sta/rtmp_ckipmic.c
-    accept '[	]len[ ]=[ ]mod_firmware_load[(]fn,[ ][&]data[)][;][\n][	]if[ ][^{]*[ ][{][\n][	][	 ]*printk[(]KERN_ERR[ ]["]sscape:' sound/oss/sscape.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' 'sound/pci/ice1712/\(phase\|aureon\)\.c'
-    accept '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]inline[ ]\)\?int[ ]request_firmware\(_nowait\)\?[(]\(const[ ]struct[ ]firmware[ ][*][*]\|[\n][	]struct[ ]module[ ][*]\)' include/linux/firmware.h
-    blobname 'isl38\(77\|86\|90\)' drivers/net/wireless/prism54/islpci_dev.c
-    accept '[ ]*#[ ]*define[ ]\(STA_PROFILE\|CARD_INFO\)_PATH[	]*["][/]etc[/]Wireless[/]RT\(28[67]\|307\)0STA[/]RT\(28[67]\|307\)0STA\(Card\)\?\.dat["]' 'drivers/staging/rt\(28[67]0\|3070\)/rt_linux\.h'
-    accept '#include[ ]["]rf\.h["][\n]#include[ ]["]firmware\.h["]' drivers/staging/vt6656/main_usb.c
-    blob '#include[ 	]*["]\(\.\.[/]\(\.\.[/]rt30[79]0[/]\)\?\)\?firmware\.h["]' 'drivers/staging/rt\(28[67]\|309\)0/common/rtmp_\(init\|mcu\)\.c'
-    blobna 'Derived[ ]from[ ]proprietary[ ]unpublished[ ]source[ ]code' drivers/net/tg3.c
-    blobname 'atmel_at76c50\(2\([de]\|_3com\)\?\|4a\?\(_2958\)\?\|6\)\(\.bin\)\?' drivers/net/wireless/atmel.c
-    blobna '\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\([\n	 ]*\(pFirmwareImage[ ]=\([ ]FirmwareImage\(_\(28[67]\|30[79]\)0\)\?\|[\n 	]*[(]\(PUCHAR\|u8[ ][*]\)[)][&][\n 	]*FirmwareImage\(_\(28\|30\)70\)\?\[FIRMWAREIMAGE\(V[12]\)\?_LENGTH\]\)\|File[lL]ength[ ]=[ ]\(sizeof[(]FirmwareImage[)]\|FIRMWAREIMAGE\(V[12]\|_MAX\)\?_LENGTH\)\)[;]\)*' 'drivers/staging/rt\(28[67]0\|30[79]0\)/common/rtmp_init\.c'
-    blobname '\(nx\(romimg\|3fw\(ct\|mn\)\)\|phanfw\)\.bin' 'drivers/net/netxen/netxen_nic\(_\(hw\|init\)\.c\|\.h\)'
-    # The above are covered by the main Linux patterns.  The patterns
-    # below are to be kept in sync in the 2.6.33 block within the main
-    # Linux patterns, until 2.6.33 is released.
-    accept '[ ]*just[ ]run[ ]["]cat[ ][/]sys[/]firmware[/]acpi[/]tables[/]DSDT[ ]>[ ][/]tmp[/]dsdt[.]dat["]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*b[)][ ]disassemble[ ]the[ ]table[ ]by[ ]running[ ]["]iasl[ ]-d[ ]dsdt[.]dat["][.]' Documentation/acpi/method-customizing.txt
-    accept '[ ]*x=["]7999\([ ][0-9]\+\)\+["]' Documentation/blockdev/drbd/DRBD-8.3-data-packets.svg
-    defsnc 'static[ ]int[ ]zoom_batt_table\[\][ ]=' arch/arm/mach-omap2/board-zoom-peripherals.c
-    defsnc 'static[ ]u16[ ]x[48]_vectors\[\][ ]=' drivers/edac/amd64_edac.c
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-    accept '[	]\.download_firmware[ ]=[ ]ec168_download_firmware,[\n][	]\.firmware[ ]=[ ]' drivers/media/dvb/dvb-usb/ec168.c
-    blobname 'dvb-usb-ec168\.fw' drivers/media/dvb/dvb-usb/ec168.c
-    defsnc 'static[ ]const[ ]u16[ ]dib0090_defaults\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    blobname 'dvb-fe-ds3000\.fw' drivers/media/dvb/frontends/ds3000.c
-    blob '[/][*][ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*[*][/]\([\n][/][*]\([ ]\(as[ ]of[ ][^\n]*[ ]current[ ]DS3000[ ]firmware\|DS3000[ ]FW\)[^/]*\|[(]DEBLOBBED[)]\)[*][/]\)*' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]u8[ ]ds3000_dvbs2\?_init_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc '[	]static[ ]const[ ]u16[ ]dvbs2_snr_tab\[\][ ]=' drivers/media/dvb/frontends/ds3000.c
-    defsnc 'static[ ]const[ ]struct[ ]cnr[ ]cnr_tab\[\][ ]=' drivers/media/dvb/frontends/mb86a16.c
-    defsnc 'u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/dvb/mantis/mantis_vp1033.c
-    defsnc 'static[ ]const[ ]struct[ ]ov9640_reg[ ]ov9640_regs_dflt\[\][ ]=' drivers/media/video/ov9640.c
-    defsnc 'const[ ]static[ ]struct[ ]rj54n1_reg_val[ ]bank_[4578]\[\][ ]=' drivers/media/video/rj54n1cb0c.c
-    blob '#define[ ]_FW_NAME[(]api[)][ ]DRV_NAME[ ]["][.]["][ ]#api[ ]["]\.fw["]' drivers/media/video/iwmc3200top.h
-    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]nandv2_hw_eccoob_largepage[ ]=' drivers/mtd/nand/mxc_nand.c
-    blob '#define[ ]FW_FILE_VERSION\([	]*[\\][\n][	]__stringify[(]BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\|ENGINEERING\)_VERSION[)]\([ ]["][.]["]\)\?\)\+' drivers/net/bnx2x_main.c
-    blobname 'bnx2x-e1h\?-["][ ]FW_FILE_VERSION[ ]["]\.fw' drivers/net/bnx2x_main.c
-    blob '#define[ ]FW_VERSION\([ ]__stringify[(]FW_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3fw-["][ ]FW_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    blob '#define[ ]TPSRAM_VERSION\([ ]__stringify[(]TP_VERSION_\(MAJOR\|MINOR\|MICRO\)[)]\([ ]["][.]["]\)\?\([	]*[\\][\n]\)\?\)\+' drivers/net/cxgb3/cxgb3_main.c
-    blobname 'cxgb3[/]t3\(%c\|[bc]\)_psram-["][ ]TPSRAM_VERSION[ ]["]\.bin' drivers/net/cxgb3/cxgb3_main.c
-    defsnc '[	]static[ ]const[ ]u8[ ]rsshash\[40\][ ]=' drivers/net/igb/igb_main.c
-    defsnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_302x\[\][ ]=' drivers/net/wireless/rt2x00/rt2800lib.c
-    defsnc 'static[ ]struct[ ]conf_drv_settings[ ]default_conf[ ]=' drivers/net/wireless/wl12xx/wl1271_main.c
-    defsnc 'static[ ]u16[ ]bios_to_linux_keycode\[256\][ ]=' drivers/platform/x86/dell-wmi.c
-    accept '[	]err[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
-    defsnc 'static[ ]unsigned[ ]char[ ]vpdb0_data\[\][ ]=' drivers/scsi/scsi_debug.c
-    defsnc 'static[ ]struct[ ]vesa_mode_table[ ]vesa_mode\[\][ ]=' drivers/staging/sm7xx/smtcfb.c
-    defsnc 'struct[ ]ModeInit[ ]VGAMode\[\][ ]=' drivers/staging/sm7xx/smtcfb.h
-    blob 'static[ ]const[ ]hcf_8[ ]fw_image_[1234]_data\[\][ ]=[^;]*[;]\([ ]*[/][*][ ]fw_image_[1234]_data[ ][*][/]\)\?' 'drivers/staging/wlags49_h2/\(ap\|sta\)_h25\?\.c'
-    blobname '[/]etc[/]agere[/]fw\.bin' drivers/staging/wlags49_h2/wl_profile.c
-    defsnc 'static[ ]const[ ]long[ ]chan_freq_list\[\]\[MAX_CHAN_FREQ_MAP_ENTRIES\][ ]=' drivers/staging/wlags49_h2/wl_util.c
-    blobname 'scope\.cod' 'sound/isa/\(Kconfig\|sscape\.c\)'
-    blobname 'sndscape\.co\([?dx01234]\|%d\)' 'sound/\(isa/\(Kconfig\|sscape\.c\)\|oss/README\.OSS\)'
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    blobname 'ath3k-1\.fw' drivers/bluetooth/ath3k.c
-    ;;
-
-  */patch*-2.6.27*|*/patch*-2.6.31.*)
-    accept '[	]request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    ;;
-
-  */patch*-2.6.30*)
-    initnc '[}][ ]bclk_divs\[\][ ]=[ ][{]' sound/soc/codecs/wm8903.c
-    ;;
-
-  */patch*-2.6.28-rc*)
-    # new in 2.6.28
-    accept '\(static[ ]\)\?const[ ]char[ ]\(inv\)\?parity\[256\][ ]=[ ][{][	 \n01,]*[}][;]' 'Documentation/mtd/nand_ecc\.txt\|drivers/mtd/nand/nand_ecc\.c'
-    defsnc 'static[ ]const[ ]char[ ]\(bitsperbyte\|addressbits\)\[256\][ ]=' drivers/mtd/nand/nand_ecc.c
-    defsnc 'static[ ]struct[ ]pinmux_cfg_reg[ ]pinmux_config_regs\[\][ ]=' arch/sh/kernel/cpu/sh2a/pinmux-sh7203.c
-    defsnc '[	]static[ ]const[ ]u8[ ]e_keymap\[\][ ]=' drivers/hid/hid-lg.c
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    defsnc 'DEFINE_DEFAULT_PDR[(]0x0161,[ ]256,' drivers/net/wireless/hermes_dld.c
-    defsnc 'static[ ]const[ ]int[ ]isink_cur\[\][ ]=' drivers/regulator/wm8350-regulator.c
-    defsnc 'static[ ]const[ ]s16[ ]\(converge_speed_ipb\?\|LAMBDA_table\[4\]\)\[101\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u32[ ]addrinctab\[33\]\[2\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]u8[ ]\(default_intra_quant_table\|\(val\|bits\)_[ad]c_\(lu\|chro\)minance\)\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]const[ ]int[ ]zz\[64\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc '[	]u16[ ]pack\[\][ ]=' drivers/staging/go7007/go7007-fw.c
-    defsnc 'static[ ]u8[ ]\(initial\|channel\)_registers\[\][ ]=' 'drivers/staging/go7007/wis-\(ov7640\|saa7113\|tw2804\).c'
-    defsnc 'u16[ ]MTO_One_Exchange_Time_Tbl_[ls]\[MTO_MAX_FRAG_TH_LEVELS\]\[MTO_MAX_DATA_RATE_LEVELS\][ ]=' drivers/staging/winbond/mto.c
-    defsnc 'u32[ ]\(al2230_txvga_data\|w89rf242_txvga_old_mapping\)\[\]\[2\][ ]=' drivers/staging/winbond/reg.c
-    defsnc 'static[ ]const[ ]UINT16[ ]crc16tab\[256\][ ]=' drivers/staging/wlan-ng/hfa384x.c
-    defsnc 'static[ ]const[ ]UINT32[ ]wep_crc32_table\[256\][ ]=' drivers/staging/wlan-ng/p80211wep.c
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]snr_table[ ]\(qpsk\|qam\(16\|64\)\)_snr_table\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=' drivers/media/dvb/frontends/af9013_priv.h
-    defsnc 'static[ ]u8[ ]stv0288_earda_inittab\[\][ ]=' drivers/media/dvb/frontends/eds1547.h
-    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
-
-    # Non-Free license in entire file.
-    blob 'static[ ]unsigned[ ]char[ ]xilinx_firm\(_4610\)\?\[\][ ]=[ ][{]'"$sepx$blobpat*$sepx"'[}][;]' 'drivers/staging/me4000/me4\(00\|61\)0_firmware\.h'
-    blob 'static[ ]struct[ ]PHY_UCODE[ ]PhyUcode\[\][ ]=[^;]*[;]' drivers/staging/sxg/sxgphycode.h
-    blob 'static[ ]unsigned[ ]char[ ]SaharaUCode\[2\]\[57972\][ ]=[^;]*[;]' drivers/staging/sxg/saharadbgdownload.h
-    blob '#include[ ]["]saharadbgdownload\.h["]' drivers/staging/sxg/sxg.c
-    blob 'static[ ]u8[ ]\(Mojave\|Oasis\)UCode\[2\]\[65536\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\(dbg\)\?\)download\.h'
-    blob 'static[ ]u8[ ]\(GB\|Oasis\)RcvUCode\[2560\][ ]=[^;]*[;]' 'drivers/staging/slicoss/\(gb\|oasis\)rcvucode\.h'
-
-    # ok from earlier releases
-    accept 'for[ ]i[ ]in[ ][ 	0-9\\\n]*[\n]do' 'Documentation/specialix.txt|Documentation/serial/specialix.txt'
-    defsnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    defsnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=[*][/][;]' '.*\.tab\.c_shipped'
-    defsnc 'static[ ]struct[ ]cipher_testvec[ ]\(aes\|anubis\|bf\|camellia\|cts_mode\|des3_ede\|cast6\|salsa20_stream\|serpent\|tf\|tnepres\|xeta\|x\?tea\)\(_\(cbc\|ctr\|xts\)\)\?_\(enc\|dec\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]comp_testvec[ ]\(deflate\|lzo\)_\(de\)\?comp_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(aes_xcbc128\|crc32c\|hmac_sha2\(24\|56\)\|\(sha\|wp\)\(256\|384\|512\)\)_tv_template\[\][ ]=' 'crypto/\(tcrypt\|testmgr\).h'
-    defsnc 'static[ ]\(const[ ]\)\?RegInitializer[ ]initData\[\][ ]__initdata[ ]=' 'drivers/ide/ali14xx\.c\|drivers/ide/legacy/ali14xx\.c'
-    defsnc 'static[ ]const[ ]u8[ ]setup\[\][ ]=' 'drivers/ide/pci/delkin_cb\.c\|drivers/ide/delkin_cb\.c'
-    defsnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]u8[ ]\(act\|ini\|rco\)_time_value\[\]\[8\][ ]=' 'drivers/ide/sis5513\.c\|drivers/ide/pci/sis5513\.c'
-    defsnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' 'drivers/ide/umc8672\.c\|drivers/ide/legacy/umc8672\.c'
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[\(MAX_[A-Z]*\|[A-Z]*_MAX\)\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    defsnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]=' net/wireless/b43/phy.c
-    accept '#define[ ]_MAP_0_32_ASCII_SEG7_NON_PRINTABLE[	]\\[\n][	]\(0,\)\+$' 'drivers/input/misc/map_to_7segment\.h\|include/linux/map_to_7segment\.h'
-    accept '[ *	]*0[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]1[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]2[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]3[\n][ *	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' 'net/\(netfilter\|ipv4\)/ipvs/ip_vs_sync\.c\|net/sctp/sm_make_chunk\.c\|include/linux/scpt\.h\|drivers/staging/rt3090/common/igmp_snoop\.c'
-    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dht\[0x1a4\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-    defsnc 'static[ ]const[ ]char[ ]zr360[56]0_dqt\[0x86\][ ]=' 'drivers/media/video/zr36060\.c\|drivers/media/video/zoran/zr36060\.c'
-
-    # These are removed in 2.6.28, they're here so --reverse-patch tests pass.
-    defsnc 'static[ ]unsigned[ ]char[ ]irq_xlate\[32\][ ]=' arch/sparc/kernel/sun4m_irq.c
-    defsnc 'static[ ]int[ ]logitech_expanded_keymap\[LOGITECH_EXPANDED_KEYMAP_SIZE\][ ]=' drivers/hid/hid-input.c
-    initc '[	]static[ ]const[ ]__u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u_char[ ]nand_ecc_precalc_table\[\][ ]=' drivers/mtd/nand/nand_ecc.c
-    oprepline '#define[ ]AR5K_RATES_\(11[ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]INIT_2\[127\][ ]=' drivers/video/omap/lcd_sx1.c
-
-    initc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov7630_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    ;;
-
-  */patch*-2.6.27-rc* | */patch*-2.6.26-git* | */git-linus.diff)
-    accept '[	]\.section[ ]__ex_table,["]a["]'"$sepx$blobpat*" 'arch/x86/lib/copy_user_\(nocache_\)\?64.S'
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]des3_ede_cbc_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    accept 'desc_config1:[\n][	]\.byte[ ]0x09,[ ]0x02'"$sepx$blobpat*" 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_mfg:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_mfg_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept 'string_product:[\n]\?\([;]\?[	]\.byte[^\n]*[\n]\)\+string_product_end:' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).S'
-    accept ':03000000020200F9[\n]:040023000205\(9B0037\|5F0073\)[\n]\(:050030000000000000CB[\n]\|:0400430002010000B6[\n]\)*'"$sepx$blobpat*"'[\n]:\(0E06E0006400670065007400060334003700F4\|0606A000060334003700E0\)[\n]:00000001FF[\n]' 'firmware/keyspan_pda/\(keyspan_pda\|xircom_pgs\).HEX'
-    accept ':100000000C004000000000000000000000000000A4[\n]'"$sepx$blobpat*"'[\n][/][*][ ]DSP56001[ ]bootstrap[ ]code[ ][*][/]' firmware/dsp56k/bootstrap.bin.ihex
-    initnc 'static[ ]const[ ]u16[ ]uda1380_reg\[UDA1380_CACHEREGNUM\][ ]=' sound/soc/codecs/uda1380.c
-    initnc 'static[ ]const[ ]u16[ ]wm8510_reg\[WM8510_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8510.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_set[23]_keycode\[512\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]short[ ]atkbd_unxlate_table\[128\][ ]=' drivers/input/keyboard/atkbd.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]usb_kbd_keycode\[256\][ ]=' drivers/hid/usbhid/usbkbd.c
-    initnc '[	][	]u8[ ]buf,[ ]bufs\[\][ ]=' drivers/media/dvb/dvb-usb/cxusb.c
-    initnc 'static[ ]struct[ ]dvb_pll_desc[ ][^\n]*[ ]=' drivers/media/dvb/frontends/dvb-pll.c
-    initnc '[	]static[ ]int[ ]sysdiv_to_div_x_2\[\][ ]=' arch/powerpc/platforms/512x/clock.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_inits_\(176\|320\|352\|640\)\[\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cx_jpeg_init\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    defsnc 'static[ ]const[ ]__u8[ ]cxjpeg_\(640\|352\|320\|176\|qtable\)\[\]\[8\][ ]=' drivers/media/video/gspca/conex.c
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]quant\[\]\[0x88\][ ]=' drivers/media/video/gspca/jpeg.h
-    initnc 'static[ ]unsigned[ ]char[ ]huffman\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_76[1247]0\[\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc 'static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/pac207.c
-    initnc 'static[ ]const[ ]__u8[ ]pac7311_jpeg_header\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page[34]\)_73\(02\|11\)\[\][ ]=' drivers/media/video/gspca/pac7311.c
-    initnc 'static[ ]const[ ]__u8[ ]init\(Hv7131\|Ov\(6650\|7630\(_3\)\?\)\|Pas\(106\|202\)\|Tas51[13]0\)\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc 'static[ ]const[ ]__u8[ ]\(hv7131\|ov\(6650\|7630\(_3\)\?\)\|pas\(106\|202\)\|tas51[13]0\)_sensor_init\(_com\)\?\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable4\[\][ ]=' drivers/media/video/gspca/sonixj.c
-    initnc 'static[ ]const[ ]__u16[ ]\(spca500_visual\|Clicksmart510\)_defaults\[\]\[3\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|kodak_ez200\|pocketdv\)\[2\]\[64\][ ]=' drivers/media/video/gspca/spca500.c
-    initnc 'static[ ]const[ ]__u16[ ]spca501c\?_\(\(3com\|arowana\|mysterious\)_\)\?\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca501.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    initnc 'static[ ]const[ ]__u16[ ]spca508\(cs110\|_sightcam2\?\|_vista\)\?_init_data\[\]\[3\][ ]=' drivers/media/video/gspca/spca508.c
-    initnc 'static[ ]const[ ]__u16[ ]spca561_init_data\[\]\[2\][ ]=' drivers/media/video/gspca/spca561.c
-    initnc 'static[ ]const[ ]__u16[ ]spca504\(_pccam600\|A_clicksmart420\)_\(init\|open\)_data\[\]\[3\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]qtable_\(creative_pccam\|spca504_default\)\[2\]\[64\][ ]=' drivers/media/video/gspca/sunplus.c
-    initnc 'static[ ]const[ ]__u8[ ]\(effects\|gamma\)_table\[MAX_[A-Z]*\]\[[0-9]*\][ ]=' drivers/media/video/gspca/t631.c
-    initnc 'static[ ]const[ ]__u8[ ]tas5130a_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(mi13[12]0\|po3130\|hv7131r\|ov76[67]0\)_\(\(soc\)\?initQ\?VGA_\(JPG\|data\)\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    initnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105axx\|ov7630c\|pb0330[3x]x\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]__u16[ ]t10_dif_crc_table\[256\][ ]=' lib/crc-t10dif.c
-    initnc 'static[ ]crb_128M_2M_block_map_t[ ]crb_128M_2M_map\[64\][ ]=' drivers/net/netxen/netxen_hw.c
-    initnc 'static[ ]const[ ]__u16[ ]crc10_table\[256\][ ]=' drivers/usb/serial/safe_serial.c
-    accept '[ 	]*\([ ]*0\)*\([ ]*1\)*[\n][ 	]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]*2[ ]3[ ]4[ ]5[ ]6[ ]7' 'Documentation/bt8xxgpio.txt'
-    initnc '[	]static[ ]int[ ]exp_lut\[256\][ ]=' drivers/isdn/mISDN/dsp_audio.c
-    initnc 'static[ ]const[ ]u32[ ]bf_pbox\[16[ ][+][ ]2\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]const[ ]u32[ ]bf_sbox\[256[ ][*][ ]4\][ ]=' drivers/isdn/mISDN/dsp_blowfish.c
-    initnc 'static[ ]u8[ ]sample_\(german_\(all\|old\)\|american_\(dialtone\|ringing\|busy\)\|special[123]\|silence\)\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'struct[ ]pattern[ ][{][^}]*int[ ]tone[;][^}]*[}][ ]pattern\[\][ ]=' drivers/isdn/mISDN/dsp_tones.c
-    initnc 'static[ ]u8[ ]\([au]\|_4\)law_to_\([ua]law\|4bit\)\[256\][ ]=' drivers/isdn/mISDN/l1oip_codec.c
-    initnc 'static[ ]unsigned[ ]char[ ]banner_table\[\][ ]=' arch/sh/boards/mach-microdev/led.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]\(yytype_u\?int\(8\|16\)\|\(unsigned[ ]\)\?\(short\([ ]int\)\?\|char\)\)[ ]yy[^[]*\[\][ ]=[*][/][;]' scripts/genksyms/parse.c_shipped
-    accept 'irq_prio_\([hdl]\|l[cd]\):'"$sepx$blobpat*" arch/arm/inlcude/asm/hardware/entry-macro-iomd.S
-    defsnc '[	]static[ ]const[ ]int[ ]desc_idx_table\[\][ ]=' arch/arm/include/asm/hardware/iop3xx-adma.h
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]\(hv7131r\|mi0360\|mo4000\|ov76\(60\|48\)\)_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ath_hal[ ]ar5416hal[ ]=' drivers/net/wireless/ath9k/hw.c
-    defsnc 'static[ ]\(const[ ]\)\?u32[ ]ar\(5416\|9280\)\(Modes\(_fast_clock\)\?\|Common\|BB_RfGain\|Bank6\(TPC\)\?\|Addac\)\(_91[06]0\(1_1\)\?\|_9280\(_2\)\?\)\?\[\]\[[236]\][ ]=' drivers/net/wireless/ath9k/initvals.h
-    ;;
-
-  */linux-2.6-gspca-git.patch)
-    # Probably for 2.6.28 or .29.
-    initnc 'static[ ]const[ ]__u8[ ]ov\(534\|772x\)_reg_initdata\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    # Already in 2.6.27.
-    initnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    initnc '[	][/][*][ ]Some[ ]more[ ]unknown[ ]stuff[ ][*][/]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]ov7648_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # No merge needed
-    defsnc '#if[ ]0[\n][	][{]0x30,[ ]0x0154,[ ]0x0008[}],' drivers/media/video/gspca/sunplus.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
-    defsnc 'static[ ]const[ ]u16[ ]wm8900_reg_defaults\[WM8900_MAXREG\][ ]=' sound/soc/wm8900.c
-    defsnc '[}][ ]\(clk_sys_ratios\|bclk_divs\)\[\][ ]=' sound/soc/wm8903.c
-    ;;
-
-  */patch*-2.6.26-rc*)
-    initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
-    initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
-    initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
-    initnc 'static[ ]struct[ ]hash_testvec[ ]\(hmac_sha\(224\|256\)\|aes_xcbc128\|crc32c\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc 'static[ ]struct[ ]cipher_testvec[ ]\(bf_cbc\|serpent\|tnepres\|aes\(_\(cbc\|ctr\|xts\)\)\?\|x\?tea\|anubis\(_cbc\)\?\|xeta\|camellia_cbc\|cts_mode\)_\(enc\|dec\)_tv_template\[\][ ]=' crypto/tcrypt.h
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{"]' crypto/tcrypt.h
-    initnc 'static[ ]const[ ]u8[ ]speedtab[ ]\[3\]\[12\][ ]=' drivers/ide/legacy/umc8672.c
-    initnc 'static[ ]u8[ ]cvs_time_value\[\]\[XFER_UDMA_6[ ]-[ ]XFER_UDMA_0[ ][+][ ]1\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]\(ini\|act\|rco\)_time_value\[\]\[8\][ ]=' drivers/ide/pci/sis5513.c
-    initnc 'static[ ]u8[ ]mt2131_config1\[\][ ]=' drivers/media/common/tuners/mt2131.c
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]=' drivers/media/common/tuners/mt2266.c
-    initnc 'u16[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c
-    initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
-    oprepline '#define[ ]AR5K_RATES_11[ABG][ ]' drivers/net/wireless/ath5k/ath5k.h
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]1000,[ ]2,[ ]139,[ ]1[ ][}],[	]' drivers/net/wireless/ath5k/ath5k.h
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]=' '.*\.lex\.c_shipped'
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^\n []*\[\][ ]=' '.*\.lex\.c_shipped'
-    # new in 2.6.26
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initnc '[}][ ]itd1000_\(lpf_pga\|fre_values\)\[\][ ]=' drivers/media/dvb/frontends/itd1000.c
-    initnc '[}][ ]\(vsb\|qam\(64\|256\)\)_snr_tab\[\][ ]=' drivers/media/dvb/frontends/s5h1411.c
-    initnc '[}][ ]snr_tab\[\][ ]=' drivers/media/dvb/frontends/tda10048.c
-    initnc '[	]static[ ]const[ ]u8[ ]biphase_tbl\[\][ ]=' drivers/media/video/cx18/cx18-av-vbi.c
-    initnc '[	]static[ ]const[ ]u8[ ]mpeg_hdr_data\[\][ ]=' drivers/media/video/cx18/cx18-vbi.c
-    initnc 'static[ ]u32[ ]reg_init_initialize\[\][ ]=' drivers/media/video/saa717x.c
-    initnc '[	][}][ ]vals\[\][ ]=' drivers/media/video/saa717x.c
-    initnc 'static[ ]const[ ]u32[ ]\(main\|gear\)_seedset\[BACKOFF_SEEDSET_ROWS\]\[BACKOFF_SEEDSET_LFSRS\][ ]=' drivers/net/forcedeth.c
-    blob 'unsigned[ ]char[ ]\(IDX_ACTIVATE_\(READ\|WRITE\)\|\(CM\|ULP\)_\(ENABLE\|SETUP\)\|DM_ACT\)[ ]=[ ]'"$sepx$blobpat*$sepx[;]" drivers/s390/net/qeth_core_mpc.c # from drivers/s390/net/qeth_mpc.c in 2.6.25
-    initnc '[}][ ]pll_table\[\][ ]=' drivers/video/geode/lxfb_ops.c
-    accept "[ ][ ][{][ ]0x00014284,[ ][ ]19688[ ][}],[\n][ ][ ][{][ ]0x00011104,[ ][ ]20400[ ][}],[\n][ ][ ][{][ ]$blobpat*[ ][}]," drivers/video/geode/lxfb_ops.c # won't be necessary in rc3
-    initnc 'static[ ]const[ ]u16[ ]wm9713_reg\[\][ ]=' sound/soc/codecs/wm9713.c
-    accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_blackfin_clut224.ppm
-    ;;
-  */patch*-2.6.25-rc*)
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]uchar[ ]sbox\[8\]\[4\]\[16\][ ]=[ ][{][*][/][;]'
-    accept '[	][$]3[ ]=[ ][{][{]pge[ ]=[ ][{][{]ste[ ]=[ ][{]\(\([0-9][0-9a-fx{},\n 	]*\|\(pge\|ste\)[ ]=\|<repeats[ ][0-9]\+[ ]times>\)[{},\n 	]*\)*<repeats[ ]11[ ]times>[}]$'
-    initnc 'static[ ]yyconst[ ]flex_int\(16\|32\)_t[ ]yy_[^[]*\[[0-9]*\][ ]='
-    initnc 'static[ ]const[ ]yytype_u\?int\(8\|16\)[ ]yy[^[]*\[\][ ]='
-    initnc '[	]int[ ]bcomm_irq\[3[*]16\][ ]='
-    initnc '[	]static[ ]const[ ]int8[ ]countLeadingZerosHigh\[\][ ]='
-    initnc 'static[ ]unsigned[ ]long[ ]shmedia_opcode_table\[64\][ ]='
-    initnc 'u_char[ ]const[ ]data_sizes_16\[32\][ ]='
-    initnc 'static[ ]u_char[ ]const[ ]data_sizes_32\[32\][ ]='
-    initnc '[	][	]\.\(digest\|entries\|input\|key\|output\|plaintext\|result\)[ 	]*=[ ][{]'
-    initnc 'static[ ]struct[ ][^\n]*_testvec[ ][^\n]*_tv_template\[\][ ]='
-    initnc 'static[ ]struct[ ]nic_qp_map[ ]nic_qp_mapping_[01]\[\][ ]='
-    initnc 'static[ ]u8[ ]mt2266_init2\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]ov_initvals\[\][ ]='
-    initnc 'static[ ]struct[ ]regval[ ]stk1125_initvals\[\][ ]='
-    initnc 'static[ ]u8[ ]bnx2x_stats_len_arr\[BNX2X_NUM_STATS\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]read_arb_data\[NUM_RD_Q\]\[MAX_RD_ORD[ ][+][ ]1\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]arb_line[ ]write_arb_data\[NUM_WR_Q\]\[MAX_WR_ORD[ ][+][ ]1\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_cable_length_table\[IGP01E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    initnc 'uint16_t[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11\([ABG]\|TURBO\|XR\)[ ]' drivers/net/wireless/ath5k/ath5k.h
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    accept '[ ][ ][ ][ ][ ]\([ ]49,\)*[\n]\([ 0-9,]*[\n]\)*[ ][ ][ ][ ][ ]\([ ]49,\)*$'
-    initnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]='
-    accept 'domain<N>[ ]<cpumask>[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]10[ ]11[ ]12[ ]13[ ]14[ ]15[ ]16[ ]17[ ]18[ ]19[ ]20[ ]21[ ]22[ ]23[ ]24[ ]25[ ]26[ ]27[ ]28[ ]29[ ]30[ ]31[ ]32[ ]33[ ]34[ ]35[ ]36$'
-    defsnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    accept '[	]24[ ]=>[ ]\[[\n]\([^\n]*[\n]\)*[	]\]\(,[ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    accept '[	][	]'"[']"'0x[^\n]*[\n]\([^\n]*[\n]\)*[	]\]\([,][ ][0-9]\+[ ]=>[ ]\[\)\?$'
-    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 'static[ ]const[ ]u32[ ]cayman_io_mc_regs\[BTC_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/ni.c
-    defsnc 'static[ ]struct[ ]v_table[ ]v_table\[\][ ]=' drivers/gpu/drm/i915/i915_dma.c
-    defsnc '[}][ ]est3_modes\[\][ ]=' drivers/gpu/drm/drm_edid.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
-    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
-    defsnc '\(static[ ]uint32_t\|[}]\)[ ]nv04_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv04_graph.c
-    defsnc 'static[ ]int[ ]nv1[07]_graph_ctx_regs[ ]\?\[\][ ]=' drivers/char/drm/nv10_graph.c
-    defsnc '[	][}][ ]common_modes\[17\][ ]=' drivers/gpu/drm/radeon/radeon_connectors.c
-    defsnc 'static[ ]const[ ]u8[ ]types\[256\][ ]=' drivers/gpu/drm/nouveau/nvc0_vram.c
-
-    # drm-upgrayedd.patch
-    defsnc 'static[ ]const[ ]u16[ ]\(y\|uv\)_static_hcoeffs\[N_HORIZ_\(Y\|UV\)_TAPS[ ][*][ ]N_PHASES\][ ]=' drivers/gpu/drm/i915/intel_overlay.c
-
-    # Although the developers of the drivers are not trying to stop
-    # anyone from modifying it or understanding it, they acknowledge
-    # 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.
-
-    # initnc 'static[ ]uint32_t[ ]nv\(4[013467ace]\|49_4b\|8[46]\)_ctx_\(voodoo\|prog\)\[\][ ]=' 'drivers/char/drm/nv40_graph.c|.*'
-    ;;
-  */linux-2.6*-lirc.patch | */lirc-*.patch)
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    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
-    ;;
-  */v4l1*.patch)
-    accept '[(]at[ ]which[ ]point[ ]it[ ]should[ ]use[ ]request_firmware'
-    ;;
-  */linux-2.6-v4l-dvb*.patch)
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]unsigned[ ]char[ ]hid_keyboard\[256\][ ]=\([ ][{][*][/][;]\)\?' drivers/hid/hid-input.c
-  # post 2.6.37 fixes start here
-    defsnc 'static[ ]const[ ]struct[ ]dib0090_pll[ ]dib0090_p1g_pll_table\[\][ ]=' drivers/media/dvb/frontends/dib0090.c
-    defsnc '[	]static[ ]u8[ ]sine\[\][ ]=' drivers/media/dvb/frontends/dib7000p.c
-    defsnc 'u32[ ]fe_info\[44\][ ]=' drivers/media/dvb/frontends/dib9000.c
-    defsnc 'static[ ]const[ ]struct[ ]regval_list[ ]ov2640_init_regs\[\][ ]=' drivers/media/video/ov2640.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]technisat_usb2_devices[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.identify_state[ ]*=[ ]technisat_usb2_identify_state,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/technisat-usb2.c
-    # present in 2.6.37
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    accept '[	]\+request_firmware[(][)][ ]will[ ]hit[ ]an[ ]OOPS' drivers/media/dvb/frontends/dib7000p.c
-    # post 2.6.35 fixes start here
-    defsnc '[	]static[ ]u8[ ]def_regs\[\][ ]=' drivers/media/common/tuners/tda18218.c
-    accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
-    accept 'static[ ]struct[ ]dvb_usb_device_properties[ ]lme2510c\?_properties[ ]=[ ][{][\n]\([	]\.\(caps\|usb_ctrl\)[ ]*=[ ][^",]*,[\n]*\)*\([	]\.download_firmware[ ]=[ ]lme2510_download_firmware,[\n]\)\?[	]\.firmware[ ]*=[ ]' drivers/media/dvb/dvb-usb/lmedm04.c
-    blobname 'dvb-usb-lme2510c\?-\(lg\|s7395\)\.fw' drivers/media/dvb/dvb-usb/lmedm04.c
-    defsnc 'static[ ]u8[ ]s7395_inittab\[\][ ]=' drivers/media/dvb/dvb-usb/lmedm04.h
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]regdesc[ ]\(ofsm_init\|tuner_init_\(env77h11d5\|mt2060\(_2\)\?\|mxl500\(3d\|5\)\|qt1010\|mc44s803\|unknown\|tda18271\)\)\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/media/dvb/frontends/af9013_priv.h
-    blobname 'lgs8g75\.fw' drivers/media/dvb/frontends/lgs8gxxx.c
-    defsnc 'static[ ]struct[ ]regdata[ ]mb86a20s_init\[\][ ]=' drivers/media/dvb/frontends/mb86a20s.c
-    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]struct[ ]dvb_usb_device_properties[ ][*][/][;][\n][	]\.firmware[ ]*=[ ]["][/][*][(]DEBLOBBED[)][*][/]["],[\n][	]\.download_firmware[ ]=[ ]m920x_firmware_download' drivers/media/dvb/dvb-usb/m920x.c
-    defsnc 'static[ ]struct[ ]regdata[ ]s921_init\[\][ ]=' drivers/media/dvb/frontends/s921.c
-    blobname 'v4l-cx23885-enc\.fw' drivers/media/video/cx23885/cx23885-417.c
-    initc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]struct[ ]idxdata[ ]tbl_common\(_[a-e]\|5\|_\?3B\?\)\[\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/media/video/gspca/gl860/gl860-\(mi2020\|mi1320\|ov9655\|ov2640\)\.c'
-    initc '[	]\?static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]norm_7660\[\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_regvals[ ]bridge_ov7660\[2\]\[10\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]u8[ ]fr_tb\[2\]\[6\]\[3\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]brit_7660\[\]\[7\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]contrast_7660\[\]\[31\][ ]=' drivers/media/video/gspca/ov519.c
-    defsnc '[	]static[ ]const[ ]struct[ ]ov_i2c_regvals[ ]colors_7660\[\]\[6\][ ]=' drivers/media/video/gspca/ov519.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pac207_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/pac207.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\(\][ ]=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]struct[ ]ucbus_write_cmd[ ]\(icx098bq\|lz24bp\)_start_[012]\[\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc '[}][ ]capconfig\[4\]\[2\][ ]=' drivers/media/video/gspca/sq930x.c
-    defsnc 'static[ ]const[ ]u16[ ]rca_initdata\[\]\[3\][ ]=' drivers/media/video/gspca/xirlink_cit.c
-    defsnc 'static[ ]const[ ]struct[ ]usb_action[ ]\(cs2102\|hdcs2020xx\|icm105a\(xx\)\?\|ov7630c\|mt9v111_[13]\|pb0330\([3x]x\)\?\|mi0360soc\)_Initial\(Scale\)\?\[\][ ]=' drivers/media/video/gspca/zc3xx.c
-    blobname 'NXP7164-2010-03-10\.1\.fw' drivers/media/video/saa7164/saa7164-fw.c
-    defsnc 'const[ ]unsigned[ ]char[ ]map_table\[\][ ]=' drivers/input/lirc/lirc_ttusbir.c
-    blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
-    # removed bits
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(leadtek\|twinhan\|a_link\|msi\|mygictv\|kworld\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\|trekstor\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'static[ ]struct[ ]keyboard_layout_map_t[ ]keyboard_layout_maps\[\][ ]=' drivers/media/dvb/siano/smsir.c
-    defsnc 'static[ ]\(u16\|struct[ ]i2c_reg_u16\)[ ]\(bridge\|mt9\(v\(11[12]\|011\)\|m001\)\)_init\[\]\(\[2\]\)\?[ ]=' drivers/media/video/gspca/sn9c20x.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/sonixj.c
-    initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]\(=[ ][{]\)\?\([*][/][;]\)\?' drivers/media/video/gspca/vc032x.c
-    # post 2.6.33 fixes start here
-    defsnc 'static[ ]struct[ ]i2c_reg_u8[ ]ov9655_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c
-    defsnc 'static[ ]const[ ]u8[ ]\(gc0307\|po2030n\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    # rebase-gspca-to-latest 2.6.33ish starts here
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]u8[ ]bridge_start_\([qs]\?v\|x\)ga\[\]\[2\][ ]=' drivers/media/video/gspca/ov534_9.c
-    defsnc 'static[ ]const[ ]__u8[ ]\(start\|page3\)_7302\[\][ ]=' drivers/media/video/gspca/pac7302.c
-    defsnc '[	]struct[ ]init_command[ ]\(spy\|cif\|ms350\|genius\|vivitar\)_start_commands\[\][ ]=' drivers/media/video/gspca/sn9c2028.c
-    defsnc 'static[ ]const[ ]__u8[ ]initOv6650\[\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]ov6650_sensor_init\[\]\[8\][ ]=[*][/][;]' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]__u8[ ]pas202_sensor_init\[\]\[8\][ ]=' drivers/media/video/gspca/sonixb.c
-    defsnc 'static[ ]const[ ]u8[ ]\(adcm1700\|om6802\|po1030\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]hv7131r_sensor_init\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]po1030_sensor_param1\[\]\[8\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]u8[ ]\(mi1320\|po3130\)_initVGA_data\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]u8[ ]poxxxx_init\(_common\|Q\?VGA\|_end_1\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    defsnc '[	]static[ ]const[ ]u8[ ]gamma_tb\[6\]\[16\][ ]=' drivers/media/video/gspca/zc3xx.c
-    # rebase-gspca-to-latest ends here
-    defsnc 'static[ ]u8[ ]af9015_ir_table_\(avermedia\(_ks\)\?\|digittrade\)\[\][ ]=' drivers/media/dvb/dvb-usb/af9015.h
-    defsnc 'struct[ ]au8522_register_config[ ]lpfilter_coef\[\][ ]=' drivers/media/dvb/frontends/au8522_decoder.c
-    defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    defsnc '[}][ ]\(VSB\|QAM\)_mod_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
-    initc 'static[ ]const[ ]u8[ ]jpeg_head\[\][ ]=' drivers/media/video/gspca/jpeg.h
-    defsnc 'static[ ]const[ ]u8[ ]\(bridge\|sensor\)_init_ov965x\(_2\)\?\[\]\[2\][ ]=' drivers/media/video/gspca/ov534.c
-    defsnc '[	]static[ ]const[ ]u8[ ]probe_tb\[\]\[4\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
-    defsnc 'static[ ]const[ ]\(__u16\|u8\)[ ]spca505b\?_\(init\|open\)_data\(_ccd\)\?\[\]\[3\][ ]=' drivers/media/video/gspca/spca505.c
-    defsnc 'static[ ]const[ ]u8[ ]n4_lt168g\[\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc '[	]static[ ]const[ ]\(__\)\?u8[ ]\(read_indexs\|n\(set\)\?[0-9]*\(_other\)\?\|missing\)\[[0-9x]*\][ ]=' drivers/media/video/gspca/t613.c
-    defsnc 'static[ ]const[ ]u8[ ]eeprom_data\[\]\[3\][ ]=' drivers/media/gspca/tv8532.c
-    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u16[ ]spca508_vista_init_data\[\]\[3\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/spca508.c
-    defsc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]__u8[ ]mi1310_socinitVGA_JPG\[\]\[4\][ ]=[ ][{][*][/][;]' drivers/media/video/gspca/vc032x.c
-    initc 'static[ ]const[ ]\(__\)\?u8[ ]\(mi\(0360\|13[12]0\)\|po\(1200\|3130\)\|hv7131r\|ov76[67]0\)_\(\(soc\)\?_\?[iI]nit\(Q\?V\|SX\)GA\(_\(JPG\|data\)\)\?\|rundata\)\[\]\[4\][ ]=' drivers/media/video/gspca/vc032x.c
-    ;;
-  */linux-2.6-modsign-mpilib.patch)
-    initnc 'const[ ]unsigned[ ]char[ ]__clz_tab\[\][ ]='
-    ;;
-  */linux-2.6-netdev*.patch | \
-  */linux-2.6.27-net-r8169-2.6.28.patch)
-    defsnc '[	][	]*struct[ ]phy_reg[ ]phy_reg_init_[01]\[\][ ]=' drivers/net/r8169.c
-    ;;
-  */linux-2.6-wireless*.patch | */linux-2.6-ath5k.patch | \
-  */git-wireless-dev.patch | */linux-2.6-zd1211rw-mac80211.patch)
-    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\)\[\][ ]='
-    initnc 'static[ ]const[ ]s8[ ]\(b43\(legacy\)\?\|bcm43xx\)_tssi2dbm_[bg]_table\[\][ ]='
-    initnc 'static[ ]struct[ ]iwl\(3945\)\?_tx_power[ ]power_gain_table\[2\]\[IWL_MAX_GAIN_ENTRIES\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]gain_entry[ ]gain_table\[2\]\[108\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5222\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5225_2527\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_5226\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2522\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2523\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2524\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2525e\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_bg_2528\[\][ ]=' drivers/net/wireless/rt2x00/rt73usb.c
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_noseq\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]rf_channel[ ]rf_vals_seq\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]t\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225bcd_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_agc\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225_tx_power_cck_ch14\[\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]rtl8225z2_rxgain\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5111\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5112a\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_rf[ ]rfregs_5413\[\][ ]='
-    oprepline '#define[ ]AR5K_RATES_11A[ ]'
-    oprepline '#define[ ]AR5K_RATES_11B[ ]'
-    oprepline '#define[ ]AR5K_RATES_11G[ ]'
-    oprepline '#define[ ]AR5K_RATES_TURBO[ ]'
-    oprepline '#define[ ]AR5K_RATES_XR[ ]'
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini[ ]ar5212_ini\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]rf\(5413\|24\(13\|25\)\)_ini_mode_end\[\][ ]=' drivers/net/wireless/ath5k/initvals.c # ?
-    initnc '[	][	][}][ ]blinkrates\[\][ ]='
-
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_agc\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_ofdm\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_power_cck_ch14\[\][ ]=' drivers/net/wireless/rtl8187_rtl8225.c
-
-    # git logs
-    accept '[ ][ ][ ]sudo[ ]modprobe[ ]ath5k[ ]debug=0x00000400[\n][ 	]*[\n]\([ 	]*Band[^\n]*[\n]\([ 	]*\(\(channels\|rates\):\|[- 	0-9a-f]*\|\[\.\.\.[ ]etc[ ]\]\)[\n]\)\+\)\+[ ][ ][ ][ ][ ][ ][ ]540[ ]000c[ ]0000[ ]0000'
-    oprepline '[	][{][ ]1,[ ]MODULATION_XR,[ ]3000,[ ]1,[ ]150,[ ]3[ ][}],'
-
-    # Fedora 8ish kernel-xen builds
-    initnc 'const[ ]u16[ ]crc_itu_t_table\[256\][ ]='
-    initnc 'static[ ]const[ ]u16[ ]tkip_sbox\[256\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5211_ini_mode\[\][ ]='
-    initnc 'static[ ]const[ ]struct[ ]ath5k_ini_mode[ ]ar5212_rf511[12]_ini_mode\[\][ ]='
-    initnc '[	]static[ ]const[ ]u8[ ]log10\[\][ ]='
-    initnc 'static[ ]const[ ]u8[ ]rtl8225z2_tx_gain_cck_ofdm\[\][ ]='
-    initnc 'static[ ]const[ ]u32[ ]rf_vals_abg_5222\[\][ ]='
-    ;;
-
-  */linux-2.6-netdev-e1000e*.patch)
-    initnc 'static[ ]const[ ]u16[ ]e1000_igp_2_cable_length_table\[\][ ]=' drivers/net/e1000e/phy.c
-    ;;
-
-  */deblob-check-testsuite/*)
-    accept 'accept[(][^)]*[)]'
-    blobname 'blob[(][^)]*[)]'
-    blobname 'blobeol[^\n]*[\n]'
-    ;;
-  esac
-}
-
-# Regular expression that matches a literal constant.
-constx="[0-9][0-9a-fA-FxX]*"
-# Regular expression that matches a separator between consecutive
-# literal constants.
-sepx="\\([ 	\\n]*\\(\\([ 	\\n]\\|[,:{}LlUu\"\'\\\\][,:{} 	\\nLlUu\"\'\\\\]*\\)[xX\$]\\?\\|[.][a-zA-Z][a-zA-Z0-9]*[ 	][ 	]*[\$]\\?\\)\\)"
-
-# Regular expression that matches a continuation of a blob, after an
-# initial constant.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobcont="\\($sepx$constx\\)"
-
-# Regular expression that matches the initial constant of a blob plus
-# its continuation.  *, \+ and \? can be safely appended to it without
-# \(\)s.
-blobpat="$constx$blobcont"
-
-# Regular expression that matches a blob with at least the number of
-# constants specified as sensitivity.
-blobseq="$blobpat\\{$sens,\\}"
-
-# Regular expression that matches the beginning of the pattern or a
-# line break.  It must be \(\)ed, such that it can be named in
-# replacement patterns.
-bol="\\(^\\|[\\n]\\)"
-
-# Regular expression that matches the end of the pattern or a line
-# break.  It must be \(\)ed, such that it can be named in replacement
-# patterns.
-eol="\\([\\n]\\|\$\\)"
-
-# Regular expression that matches a C-style comment.
-comment="\\([/][*][^*]*\\([*]\\+[^*/][^*]*\\)*[*]\\+[/]\\|[/][/][^\\n]*[\\n]\\)"
-
-# Regular expression that matches comments typically used in assembly.
-asmcomment="\\($comment\\|[;#][^\\n]*[\\n]\\)"
-
-# Regular expression that matches a braced initializer containing at
-# least one blob.
-initblob="[^\\n=]*=\\([ 	\\n\\\\]\\|$comment\\)*[{]\\([^;]\\|$comment\\)*$blobseq\\([^;]\\|$comment\\)*[}]\\?\\([ 	\\n\\\\]*\\|$comment\\)[;]\\?"
-
-# Regular expression that matches a C (possibly multi-line) #define
-# that contains a blob.
-defineblob='[ 	]*#[ 	]*define[ 	][^\n]*\([\\][\n][^\n]*\)*'"$blobseq"'\([^\n]*\\[\n]\)*'
-
-# Regular expression that matches an assembly label followed by a blob
-# without any intervening label.
-asmblob="[a-zA-Z_.][^\\n:;#/ 	]*:\\([^:{}]\\|$asmcomment\\)*$blobseq\\([^:]*\\|$asmcomment\\)*"
-
-# Set up the sed script that will go through the (processed) input,
-# looking for sequences of blobs and printing whatever was requested.
-# It accepts 3 arguments.
-
-# $1 is the action in case blobs were found in the input.
-
-# $2 is the action in case no blobs were found, not even false positives.
-
-# $3 is the action in case false positives were located.
-
-# $4 is the action for every complete input pattern.
-
-set_sed_main () {
-  falsepos=`${SED-sed} -n 's,^[+]\^*,,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-  blobs=`${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e 's,[$]$,\\\\([\\\\n]\\\\|$\\\\),' \
-	-e '1h; 1!H; ${g;s,[\n],\\\\|,g;s,^\(..*\)$,\\\\(\1\\\\),;p;}'`
-
-  # Regular expression that matches one or more blobs without
-  # intervening line breaks.
-  sblobctx="\\(\\([^\\n]\\|[/][*](DEBLOB-\\nBED)[*][/]\\)*$blobs\\)\\+"
-
-  # Regular expression that matches the context for a long blob match.
-  lblobctx="\\($initblob\\|$defineblob\\|$asmblob\\|$sblobctx\\)"
-
-  if test "X$falsepos" != X; then
-    check_false_positives="$v:???falsepos
-/$bol$falsepos/!b blob
-$v:+++falsepos
-h
-s/$bol$falsepos/\\1;\/**\/;/g
-# See if, after removing all matches, we end up without any blobs.
-$v:???blobs
-/$blobs/!{
-  g
-  b falsepos
-}
-g
-"
-  else
-    falsepos="$.^"
-    check_false_positives=
-  fi
-
-  $echo "#! /bin/sed -nf
-
-/^$/N
-/^[\\n]\\?;[/][*]\\(end .*\\)\\?[*][/];$/{
-  $4
-  d
-}
-# /^;[/][*]begin /!{
-#   : internal_error
-#   $v:internal_error
-#   s,.*,Internal error at\\n&[\\n]/*(DEBLOB-\\nERROR)*/,;
-#   q 2
-# }
-$v:reading file in
-h
-n
-: read_more
-/^;[/][*]end [^\\n]*[*][/];$/! {
-  H
-  n
-  b read_more
-}
-H
-g
-$4
-$v:read all
-s/^\\(;[/][*]begin [^\\n]*[\\n]\\)*//
-s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//
-$v:???!blobs
-/$blobs/!b clean
-$check_false_positives
-# Fall through.
-: blob
-$v:blob
-$1
-d
-: clean
-$v:clean
-$2
-d
-: falsepos
-$v:falsepos
-$3
-d
-
-: print_matches
-$v:print_matches
-/^$falsepos/! {
-  $v:delete unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  : print_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_matches_nomatch_loop
-  }
-  x
-  b print_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/ {
-  i\\
-::: $file :::
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_matches
-
-: print_marked_matches
-$v:print_marked_matches
-/^$falsepos/! {
-  h
-  s/[\\n]$falsepos.*//
-  : print_marked_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_matches_nomatch_loop
-  }
-  x
-  b print_marked_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  i\\
-::: $file :::
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-  p
-}
-g
-s/^\\($falsepos[^\\n]*\\)//
-: print_marked_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_matches
-
-: print_blobs
-$v:print_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_blobs_match_loop
-    }
-    G
-    b print_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_blobs_nomatch_loop
-  }
-  x
-  b print_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_blobs
-
-: print_marked_blobs
-$v:print_marked_blobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_blobs_match_loop
-    }
-    G
-    b print_marked_blobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^falsepos//
-    b print_marked_blobs_delete_to_eol
-  }
-}
-/^\([^\\n]\|[/][*](DEBLOB-\\nBED)[*][/]\)*$blobs/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_marked_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_blobs_nomatch_loop
-  }
-  x
-  b print_marked_blobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_blobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_blobs_output_false_positive
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: print_marked_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_blobs
-
-: print_cblobs
-$v:print_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_cblobs_match_loop
-    }
-    G
-    b print_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_cblobs_nomatch_loop
-  }
-  x
-  b print_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_cblobs
-
-: print_marked_cblobs
-$v:print_marked_cblobs
-/^$falsepos/ {
-  $v:delete false positive
-  # This is tricky.  We don't want to print the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:delete false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1/
-    $v:matched false positive
-    : print_marked_cblobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      s/^[^\\n]*[\\n]//
-      x
-      b print_marked_cblobs_match_loop
-    }
-    G
-    b print_marked_cblobs_delete_to_eol
-  }
-  /^$falsepos[/][*](DEBLOB-\\nBED)[*][/]/! {
-    s/^$falsepos//
-    b print_marked_cblobs_delete_to_eol
-  }
-}
-/^$lblobctx/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|$lblobctx\\).*//
-  $v:matched non-blob header
-  : print_marked_cblobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_marked_cblobs_nomatch_loop
-  }
-  x
-  b print_marked_cblobs_delete_to_eol
-}
-i\\
-::: $file :::
-: print_marked_cblobs_output_false_positive
-/[^\\n]*[/][*](DEBLOB-[\\n]BED)[*][/]/ {
-  P
-  s,^[^\\n]*[\\n],,
-  b print_marked_cblobs_output_false_positive
-}
-h
-s/^\\($lblobctx\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\($lblobctx[^\\n]*\\($blobs[^\\n]*\\)*\\)//
-: print_marked_cblobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_marked_cblobs
-
-: print_both
-$v:print_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:delete non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  $v:matched non-blob header
-  : print_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b print_both_nomatch_loop
-  }
-  x
-  b print_both_delete_to_eol
-}
-h
-i\\
-::: $file :::
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: print_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b print_both
-
-: list_matches
-$v:list_matches
-/^$falsepos/! {
-  $v:print unmatching lines
-  h
-  s/[\\n]$falsepos.*//
-  p
-  : list_matches_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_matches_nomatch_loop
-  }
-  x
-  b list_matches_delete_to_eol
-}
-h
-s/^\\($falsepos[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to match
-/$blobs/{
-  # s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-  s/$blobs/\/*(DEBLOBBED)*\//g
-}
-p
-g
-s/^\\($falsepos[^\\n]*\\)//
-: list_matches_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_matches
-
-: list_blobs
-$v:list_blobs
-/^$falsepos/ {
-  $v:print false positive
-  # This is tricky.  We don't want to deblob the false positive.
-  /^$falsepos[^\\n]*$blobs/ {
-    $v:print false positive immediately followed by blob
-    s/^\\($falsepos\\)/\\1\/*(DEBLOB-\\nBED)*\//
-    h
-    s/^\\($falsepos\\).*/\\1\\n/
-    : list_blobs_match_loop
-    /[\\n]/ {
-      s/^[^\\n]*[\\n]//
-      x
-      P
-      s/^[^\\n]*[\\n]//
-      x
-      b list_blobs_match_loop
-    }
-    G
-    b list_blobs_delete_to_eol
-  }
-  h
-  s/^\\($falsepos[^\\n]*\\)[\\n].*/\\1/
-  p
-  g
-  s/^\\($falsepos[^\\n]*\\)//
-  b list_blobs_delete_to_eol
-}
-/^[^\\n]*$blobs/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_blobs_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_blobs_nomatch_loop
-  }
-  x
-  b list_blobs_delete_to_eol
-}
-h
-s/\\($blobs\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/\\(\\($blobs[^\\n]*\\)\\+\\)//
-: list_blobs_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_blobs
-
-: list_both
-$v:list_both
-/^\\($falsepos\\|[^\\n]*$blobs\\)/! {
-  $v:print non-blob header
-  h
-  s/[\\n]\\($falsepos\\|[^\\n]*$blobs\\).*//
-  p
-  : list_both_nomatch_loop
-  /[\\n]/ {
-    s/^[^\\n]*[\\n]//
-    x
-    s/^[^\\n]*[\\n]//
-    x
-    b list_both_nomatch_loop
-  }
-  x
-  b list_both_delete_to_eol
-}
-h
-s/^\\(\\($falsepos\\|[^\\n]*$blobs\\)\\([^\\n]*$blobs\\)*[^\\n]*\\)\\([\\n].*\\)\\?$/\\1/
-$v:narrowed to blob
-# s/{\\($sepx\\)\\?$blobseq\\($sepx\\)\\?}[ 	]*;/{\/*(DEBLOBBED)*\/};/g
-s/$blobs/\/*(DEBLOBBED)*\//g
-p
-g
-s/^\\(\\($falsepos[^\\n]*\\|[^\\n]*$blobs[^\\n]*\\)\\($blobs[^\\n]*\\)*\\)//
-: list_both_delete_to_eol
-$v:delete to eol
-s/^[^\\n]*//
-/^$/d
-s/^[\\n]//
-b list_both
-
-" > "$scriptname"
-
-  scriptcmd='${SED-sed} -n -f "$scriptname"'
-
-  case $vp in
-  [01]) xv= ;;
-  2) xv='# ';;
-  esac
-
-  sedunbreak='
-: restart
-/[/][*](DEBLOB-$/ {
-  N
-  /[/][*](DEBLOB-[\n]ERROR)[*][/]/{q 1;}'"
-$xv"'s,[/][*](DEBLOB-[\n]BED)[*][/],,
-  b restart
-}
-p
-'
-  scriptcmd2='${SED-sed} -n -e "$sedunbreak"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_python_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  cat >> "$scriptname" <<EOF
-#! /usr/bin/python
-
-import sys
-import re
-
-# Should we replace blobs and false positives with replacement?
-replace_blob = 0
-replace_falsepos = 0
-replacement = '/*(DEBLOBBED)*/'
-
-# Should we print lines containing blobs, false positives, and neither?
-print_blob = 0
-with_context = 0
-print_falsepos = 0
-print_nomatch = 0
-
-# Should we print the input stack if we find blobs or false positives?
-list_blob = 0
-list_falsepos = 0
-
-# Should we forget everything we know about false positives?
-falsepos = None
-no_falsepos = 0
-
-verbose = $vp
-
-# Which of the defaults above should we override?
-$@ = 1
-
-EOF
-
-  if test "X$DEBLOB_CHECK_PYTHON_REGEX" = Xdebug; then
-    ${SED-sed} -e 's,^[+-],,' -e "$adjust_rx" \
-	-e "s,.*,re.compile (r'&'),g" \
-	< "$regex_name" >> "$scriptname"
-  fi
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,falsepos = r'(?P<falsepos>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,blob = r'(?P<blob>\\1)',;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,cblob = r'(?P<cblob>\\1)'," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-if no_falsepos or falsepos is None:
-    falsepos = r'(?!)'
-
-rx = '^%s|%s' % (falsepos, blob)
-
-if with_context:
-    rx += '|^' + cblob
-
-rxc = re.compile('(?<=.)(?:%s)' % rx, re.M | re.S)
-
-filenames = None
-
-s = '\n'
-
-for line in sys.stdin:
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if line[:3] == ';/*' and line[-4:] == '*/;\n':
-        if line[3:9] == 'begin ':
-            nextfilenames = (line[9:-4], filenames)
-            if s == '\n':
-                filenames = nextfilenames
-                del nextfilenames
-                continue
-        elif line[3:7] == 'end ':
-	    #if print_blob and not print_nomatch:
-	    # from time import time
-	    # sys.stderr.write('%i %i %s\n' % (time(), len(s), filenames[0]))
-            assert line[7:-4] == filenames[0]
-            nextfilenames = filenames[1]
-        else:
-            assert filenames != None
-            s += line
-            continue
-    else:
-        assert filenames != None
-        s += line
-        continue
-
-    if verbose:
-            print('looking for matches')
-            sfilenames = filenames
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print(filenames[0] + ' within')
-                filenames = filenames[1]
-            filenames = sfilenames
-
-    if s[-1] == '\n':
-        s = s[:-1]
-
-    pp = 1
-    p = pend = 0
-    match = rxc.search (s, p)
-    while match != None:
-        firstmatch = match
-        blobs = falses = 0
-        while 1:
-            if verbose:
-                print('found match')
-            what = match.lastgroup
-
-            if what == 'cblob':
-                if verbose: print('match is a blob context')
-                pend = s.find ('\n', match.end()) + 1
-                if pend == 0:
-                    pend = len(s)
-                p = match.start() + 1
-                blob_p = 2
-            else:
-                blob_p = what == 'blob'
-                assert blob_p or what == 'falsepos'
-
-                if blob_p:
-                    if verbose: print('match is a blob')
-                    blobs += 1
-                else:
-                    if verbose: print('match is a false positive')
-                    falses += 1
-
-                if blob_p and replace_blob or not blob_p and replace_falsepos:
-                    s = s[:match.start(what)] + replacement + s[match.end(what):]
-                    p = match.start(what) + len(replacement)
-                    if pend > match.start(what):
-                        pend += p - match.end(what)
-                else:
-                    p = match.end(what)
-
-                if p > pend:
-                    pend = s.find ('\n', p) + 1
-                    if (pend == 0):
-                        pend = len(s)
-
-            match = rxc.search (s, p)
-            if match is None or match.start () >= pend or \
-	       (blob_p and not print_blob and not falses) or \
-	       (not blob_p and not print_falsepos and not blobs):
-                break
-
-        if print_nomatch:
-            sys.stdout.write (s[pp:firstmatch.start() + 1])
-            pp = firstmatch.start() + 1
-        else:
-            pp = s.rfind ('\n', 0, firstmatch.start () + 1) + 1
-
-        if print_blob and blobs or print_falsepos and falses:
-            if not print_nomatch:
-                sfilenames = filenames
-                while filenames != None:
-                    print('::: ' + filenames[0] + ' :::')
-                    filenames = filenames[1]
-                filenames = sfilenames
-            sys.stdout.write (s[pp:pend])
-            pp = pend
-
-        if list_blob and blobs or list_falsepos and falses:
-            while filenames != None:
-                if filenames[1] is None:
-                    print(filenames[0])
-                else:
-                    print (filenames[0] + ' within')
-                filenames = filenames[1]
-            exit (1)
-
-    if print_nomatch:
-        sys.stdout.write(s[pp:])
-
-    if verbose:
-        print('no further matches')
-
-    s = '\n'
-    filenames = nextfilenames
-    del nextfilenames
-
-assert filenames is None
-
-exit (0)
-EOF
-
-  scriptcmd="${PYTHON-python} "'"$scriptname"'
-}
-
-set_perl_main () {
-  adjust_rx='
-s,\\(,\\(?:,g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  # Add $ before arguments
-  set `echo "$@" | sed 's,\(^\|= *\),&$,g'`
-
-  cat >> "$scriptname" <<\EOF
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-# Should we replace blobs and false positives with replacement?
-my $replace_blob = 0;
-my $replace_falsepos = 0;
-my $replacement = '/*(DEBLOBBED)*/';
-
-# Should we print lines containing blobs, false positives, and neither?
-my $print_blob = 0;
-my $with_context = 0;
-my $print_falsepos = 0;
-my $print_nomatch = 0;
-
-# Should we print the input stack and exit if we find blobs or false positives?
-my $list_blob = 0;
-my $list_falsepos = 0;
-
-# Should we forget everything we know about false positives?
-my $falsepos;
-my $no_falsepos = 0;
-
-EOF
-
-  cat >> "$scriptname" <<EOF
-my \$verbose = $vp;
-
-# Which of the defaults above should we override?
-$@ = 1;
-
-EOF
-
-  ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,\$falsepos = qr'(?<falsepos>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; '"\
-s,^\\(.*\\)\$,my \$blob = qr'(?<blob>\\1)'ms;,;\
-"' p;}' >> "$scriptname"
-
-  echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx" \
-        -e "s,^\\(.*\\)\$,my \$cblob = qr'(?<cblob>\\1)'ms if \$with_context;," >> "$scriptname"
-
-  cat >> "$scriptname" <<\EOF
-
-$falsepos = qr/(?<falsepos>(?!))/ if $no_falsepos || ! defined $falsepos;
-
-my $rx = qr/^$falsepos|$blob/ms;
-
-$rx = qr/$rx|^$cblob/ms if $with_context;
-
-my @filenames;
-my $nfilenames = 0;
-my $nextnfilenames;
-
-my $s = '';
-
-while (<STDIN>) {
-    # Read into s all lines between begin and end.  An empty line, without
-    # even the '\n', flags the end of the input.
-    if (m:^[;][/][*](begin|end) (.*)[*][/][;]$:) {
-	if ($1 eq 'begin') {
-	    print "entering $2\n" if $verbose;
-	    $filenames[$nfilenames] = $2;
-	    $nextnfilenames = $nfilenames + 1;
-	    if ($s eq '') {
-		$nfilenames = $nextnfilenames;
-		next;
-	    }
-	} else {
-	    $nextnfilenames = $nfilenames - 1;
-	    print "processing $filenames[$nextnfilenames]\n" if $verbose;
-	}
-    } else {
-	$s .= $_;
-	next;
-    }
-
-    if ($verbose) {
-	print "looking for matches in\n";
-	for (my $i = $nfilenames; --$i > 0; ) {
-	    print $filenames[$i], " within\n";
-	}
-	print $filenames[0], "\n";
-    }
-
-    $s =~ s/[\n]$//;
-
-    my $pp = my $p = 0;
-
-    my $matchfound = substr ($s, $p) =~ /$rx/o;
-    while ($matchfound) {
-	print "found first match\n" if $verbose;
-	my $firstmatchstart = $-[0] + $p;
-	my $blobs = my $falses = 0;
-	my $matchstart = $-[0] + $p;
-	my $pend = -1;
-	my $blob_p;
-	do {{
-	    my $matchend = $+[0] + $p;
-	    print "found match $matchstart..$matchend\n" if $verbose;
-	    print "$&" if $verbose > 1;
-
-	    if (defined $+{'cblob'}) {
-		print "match is a blob context\n" if ($verbose);
-		$pend = index ($s, "\n", $matchend) + 1;
-		$pend = length $s if !$pend;
-	    }
-
-	    if (defined $+{'falsepos'}) {
-		print "match is a false positive\n" if ($verbose);
-		# $matchend -= $+[0] - $+[1];
-		$blob_p = 0;
-		$falses++;
-	    } elsif (defined $+{'blob'}) {
-		$blob_p = 1;
-		$blobs++;
-		print "match is a blob at $matchstart\n" if ($verbose);
-	    } else {
-		$blob_p = 2;
-		$p = $matchstart;
-		print "searching up to $pend\n" if $verbose;
-		next;
-	    }
-
-	    if ($blob_p ? $replace_blob : $replace_falsepos) {
-		substr ($s, $matchstart, $matchend - $matchstart,
-			$replacement);
-		$p = $matchstart + length $replacement;
-		$pend += $p - $matchend if $pend >= $matchstart;
-	    } else {
-		$p = $matchend;
-	    }
-
-	    $pend = index ($s, "\n", $p) + 1 if $p >= $pend;
-	    $pend = length $s if !$pend;
-	    print "searching up to $pend\n" if $verbose;
-	    $p--;
-	}} while (($matchfound = (substr ($s, $p) =~ /(?<=.)$rx/mso))
-		  && ($matchstart = $-[0] + $p) < $pend
-		  && !($blob_p
-		       ? (!$print_blob && !$falses)
-		       : (!$print_falsepos && !$blobs)));
-
-	print "last match before $pend\n" if $verbose;
-
-	if ($print_nomatch) {
-	    print substr ($s, $pp, $firstmatchstart - $pp);
-	    $pp = $firstmatchstart;
-	} elsif (($print_blob || $print_falsepos) && $firstmatchstart > 0) {
-	    $pp = rindex ($s, "\n", $firstmatchstart - 1) + 1;
-	}
-
-	if (($print_blob && $blobs) || ($print_falsepos && $falses)) {
-	    if (!$print_nomatch) {
-		for (my $i = $nfilenames; $i-- > 0;) {
-		    print "::: ", $filenames[$i], " :::\n";
-		}
-	    }
-
-	    print substr ($s, $pp, $pend - $pp);
-	    $pp = $pend;
-	}
-
-	if (($list_blob && $blobs) || ($list_falsepos && $falses)) {
-	    for (my $i = $nfilenames; --$i > 0;) {
-		print $filenames[$i], " within ";
-	    }
-	    print $filenames[0], "\n";
-	    exit (1);
-	}
-    }
-
-    print substr ($s, $pp) if $print_nomatch;
-
-    print "no further matches\n" if $verbose;
-
-    $s = '';
-    $nfilenames = $nextnfilenames;
-}
-
-exit (0);
-EOF
-
-  scriptcmd="${PERL-perl} "'"$scriptname"'
-}
-
-set_awk_main () {
-  adjust_rx='
-s,[$]$,([\\n]|$),;
-s,\[^\],[^\\],g;
-s,\\\([{(|)}?+]\),\1,g;
-'
-
-  case " = $@ = " in
-  *" = no_falsepos = "*) falsepos='$.^';;
-  *) falsepos=`
-    ${SED-sed} -n 's,^[+],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" -e 's,\^,,' \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'
-    `
-     case $falsepos in "") falsepos='$.^';; esac;;
-  esac
-
-  blob=`
-    ${SED-sed} -n 's,^[-],,p' < "$regex_name" |
-    ${SED-sed} -n -e "$adjust_rx" \
-	-e '1h; 1!H; $ { g; s,[\n],|,g; p;}'`
-
-  case " = $@ = " in
-  *" = with_context = "*) cblob=`
-    $echo "\\($initblob\\|$defineblob\\|$asmblob\\)" |
-    ${SED-sed} -e "$adjust_rx"
-   `;;
-  *) cblob='$.^';;
-  esac
-
-  xrs= nrs="# " eor="RT" eormatch='RT ~ ' eornl='[\n]' eornlsz=1
-  # Uncomment the line below to disable the use of a regular
-  # expression for the awk Record Separator, a GNU awk extension.
-  # Using this extension appears to save a lot of memory for long
-  # deblob-check runs.
-  # xrs="# " nrs= eor='$0' eormatch='' eornl= eornlsz=0
-
-  cat >> "$scriptname" <<EOF
-#! /bin/gawk --re-interval -f
-
-BEGIN {
-    # Should we replace blobs and false positives with replacement?
-    replace_blob = 0;
-    replace_falsepos = 0;
-    replacement = "/*(DEBLOBBED)*/";
-
-    # Should we print lines containing blobs, false positives, and neither?
-    print_blob = 0;
-    with_context = 0;
-    print_falsepos = 0;
-    print_nomatch = 0;
-
-    # Should we print the input stack and exit if we find blobs or
-    # false positives?
-    list_blob = 0;
-    list_falsepos = 0;
-
-    # Should we forget everything we know about false positives?
-    no_falsepos = 0;
-
-    verbose = $vp;
-
-    nfilenames = 0;
-    s = "\n";
-
-    # Which of the defaults above should we override?
-    $@ = 1;
-
-    # requires GNU awk RS extension:
-$xrs	RS = "[;][/][*](begin|end) [^\n]*[*][/][;][\n]";
-}
-# requires GNU awk RS extension:
-$xrs { s = s \$0; }
-# does not require GNU awk RS extension:
-$nrs !/^[;][/][*].*[*][/][;]$/ {
-$nrs	 s = s \$0 "\n";
-$nrs	 next;
-$nrs }
-$eormatch /^[;][/][*]begin .*[*][/][;]$eornl$/ {
-    filenames[nfilenames] = substr($eor, 10, length ($eor) - 12 - $eornlsz);
-    if (verbose) print "entering " nfilenames ": " filenames[nfilenames];
-    nextnfilenames = nfilenames + 1;
-    if (s == "\n") {
-	nfilenames = nextnfilenames;
-	next;
-    }
-}
-$eormatch /^[;][/][*]end .*[*][/][;]$eornl$/ {
-    nextnfilenames = nfilenames - 1;
-    if (verbose)
-	print "got to the end of " nextnfilenames ": " filenames[nextnfilenames];
-}
-{
-    if (verbose) {
-	print "looking for matches";
-	for (i = nfilenames; --i > 0;)
-	    print filenames[i] " within";
-	print filenames[0]
-    }
-
-    s = substr (s, 1, length (s) - 1)
-
-    pp = 2;
-    p = pend = 1;
-    if (verbose > 1) print "searching starting at", substr (s, p, 10)
-    matchfound = match (substr (s, p),
-			/[\n]($falsepos)|[\n]($cblob)|.($blob)/);
-    while (matchfound) {
-	blobs = falses = 0;
-	firstmatchstart = RSTART + p;
-	for (;;) {
-	    matchstart = RSTART + p - 1;
-	    matchlen = RLENGTH;
-	    if (verbose) {
-		print "found match", matchstart, matchlen;
-		if (verbose > 1)
-		    print substr (s, matchstart + 1, matchlen - 1);
-	    }
-
-	    if (match (substr (s, matchstart, matchlen), /^[\n]($falsepos)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a false positive of length", matchlen;
-		blob_p = 0;
-		falses++;
-	    } else if (match (substr (s, matchstart, matchlen), /^.($blob)/) == 1) {
-		matchlen = RLENGTH;
-		if (verbose) print "match is a blob of length", matchlen;
-		blob_p = 1;
-		blobs++;
-	    } else if (match (substr (s, matchstart, matchlen), /^[\n]($cblob)$/) == 1) {
-		if (verbose) print "match is a blob context";
-		pend = index (substr (s, matchstart + matchlen), "\n");
-		if (pend)
-		    pend += matchstart + matchlen;
-		else
-		    pend = length (s);
-		p = matchstart + 1;
-		blob_p = 2;
-		if (verbose > 1) print "range is:", substr (s, p, pend - p);
-	    }
-
-	    if (blob_p < 2) {
-		if (blob_p ? replace_blob : replace_falsepos) {
-		    s = substr (s, 1, matchstart)		\\
-			replacement				\\
-			substr (s, matchstart + matchlen);
-		    p = matchstart + length (replacement) - 1;
-		    pend += (p + 1 - matchstart - matchlen);
-		} else
-		    p = matchstart + matchlen - 1;
-
-		if (p >= pend) {
-		    i = index (substr (s, p + 1), "\n");
-		    if (i)
-			pend = p + 1 + i;
-		    else
-			pend = length (s)
-		}
-	    }
-
-	    if (verbose) print "search until", pend;
-
-	    if (!(matchfound = match (substr (s, p),
-				      /[\n]($falsepos)|[\n]($cblob)|.($blob)/)) ||
-		p + RSTART >= pend ||
-		(blob_p ?
-		 (!print_blob && !falses) :
-		 (!print_falsepos && !blobs)))
-		break;
-	}
-
-	if (print_nomatch)
-	    printf "%s", substr (s, pp, firstmatchstart - pp);
-	else if (print_blob || print_falsepos) {
-	    lastline = substr (s, pp, firstmatchstart - pp);
-	    sub (/.*[\n]/, "", lastline);
-	    if (verbose) print "lastline: " lastline "\\\\n"
-	    firstmatchstart -= length (lastline);
-	}
-	pp = firstmatchstart;
-
-	if (verbose) print "match set range:", pp, pend
-
-	if ((print_blob && blobs) || (print_falsepos && falses)) {
-	    if (!print_nomatch)
-		for (i = nfilenames; i-- > 0;)
-		    print "::: " filenames[i] " :::";
-	    printf "%s", substr (s, pp, pend - pp);
-	    pp = pend;
-	}
-
-	if ((list_blob && blobs) || (list_falsepos && falses)) {
-	    for (i = nfilenames; --i > 0;)
-		print filenames[i] " within";
-	    print filenames[0];
-	    exit (1);
-	}
-    }
-
-    if (print_nomatch)
-	printf "%s", substr (s, pp)
-
-    if (verbose)
-	print "no further matches";
-
-    s = "\n";
-    nfilenames = nextnfilenames;
-    next;
-}
-EOF
-
-  scriptcmd="${AWK-gawk} --re-interval -f "'"$scriptname"'
-}
-
-set_flex_main () {
-  adjust_rx='
-s,\\\([{(|)}?+]\),\1,g
-s,^\([-+]\)\(\^\?\)\(.*\)\(\$\?\)$,\2(?s:\3)\4\1,g
-s,[+]$, { falsepos (); },
-s,[-]$, { blob (); },
-'
-
-  echo '%%' > "$scriptname"
-  ${SED-sed} "$adjust_rx" < "$regex_name" >> "$scriptname"
-  echo '\n|. { unmatched (); }
-%%
-int falsepos () {}
-int blob () {}
-int unmatched () {}
-' >> "$scriptname"
-
-  scriptcmd=false
-}
-
-set_save_script_input_main () {
-  savename=`mktemp -t deblob-check-input-XXXXXX`
-  scriptcmd="{ echo saving input in $savename && cat > $savename && echo done; }"
-}
-
-# Process an input file named in $1 and run it through the blob
-# recognizer.  Functions set_except and set_sed_cmd provide additional
-# arguments on a per-file and per-action basis.
-
-check () {
-  case "$#" in 1) ;; *) echo ICE >&2; exit 1;; esac
-
-  input=$1
-
-  # Add $1 to falsepos.  Its usage makes it implicitly anchored to the
-  # beginning of the line.  $2, if present, will some day narrow the
-  # falsepos matches to files that match it.
-  addx () {
-    $echo "+^$1" >> $regex_name
-  }
-
-  # Add $1 to falseneg.  Unlike addx, it is NOT implicitly anchored to
-  # the beginning of the line.  $2, if present, will some day narrow
-  # the falseneg matches to files that match it.
-  badx () {
-    $echo "-$1" >> $regex_name
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';'.  $2 may optionally name the files in which this
-  # match is to be disregarded as a potential blob.
-  initnc () {
-    addx "$1[^;]*[;]\\?" $2
-  }
-
-  # Same as initnc, but require the terminating semicolon.
-  defsnc () {
-    addx "$1[^;]*[;]" $2
-  }
-
-  # Look for a multi-line definition starting with a line that matches
-  # $1 (implicitly anchored to the beginning of the line), and ending
-  # at the first ';' that's not within comments.
-  initc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]\\?" $2
-  }
-
-  # Same as initc, but require the terminating semicolon.
-  defsc () {
-    addx "$1\\([^;/]\\+\\($comment\\|[/][^/*;]\\)\\+\\)*[^;/]*[;]" $2
-  }
-
-  # Accept as a non-blob an expression $1 that would have otherwise
-  # triggered blob detection.  The expression must end in a way that
-  # would trigger the blob detection machinery.
-  accept () {
-    addx "$1" $2
-  }
-
-  # Match up to the end a comment started in $1.
-  ocomment () {
-    addx "$1[/]*\\([*]*[^*/][/]*\\)*[*]\+[/]" $2
-  }
-
-  # Match $1 followed by backslash-terminated lines and a last
-  # non-backslash-terminated line.
-  oprepline () {
-    addx "$1\\([^\\\\\\n]*[\\\\][\\n]\\)*[^\\\\\\n]*$" $2
-  }
-
-  # Match $1 in $2 as a blob.  Not anchored.
-  blobna () {
-    badx "$1" $2
-  }
-
-  # Match $1 as a blob anywhere.  $2 is just for documentation purposes.
-  blobname () {
-    badx "$1"
-  }
-
-  # Match $1 in $2 as a blob.  The expectation is a match in the
-  # beginning of line, but we don't do anchoring of blob patterns ATM.
-  blob () {
-    badx "$1" $2
-  }
-
-  regex_name=`mktemp -t deblob-check-regex-XXXXXX`
-  tempfiles="$regex_name"
-
-  set_except "$input"
-
-  # Check that all regular expressions match our requirements.
-  ${SED-sed} -n '
-s,^\(-\^\?\|[+]\^\),,
-h
-s,[$]$,,
-s,\([^\\]\|^\)\(\(\\\\\)*\)\(\[^\?[]]\?[^]]\+\]\([*]\|\\[+?]\)\?\(\\\\\)*\)\+,\1\2,g
-/\([^\\]\|^\)\(\\\\\)*\([{(|)}?+^$"'"'"'; 	]\)\|^$/{
-  g
-  i\
-BAD regular expression:
-  p
-  q 1
-}' $regex_name >&2 || exit 1
-
-  scriptname=`mktemp -t deblob-check-script-XXXXXX`
-  tempfiles="$tempfiles $scriptname"
-
-  scriptcmd=false
-  scriptcmd2=
-
-  $set_cmd "$input"
-
-  for f in $tempfiles; do
-    case $f in "$scriptname") ;;
-    *) rm -f "$f" ;;
-    esac
-  done
-  tempfiles="$scriptname"
-
-  # Choose the input source...
-  case $input in
-  -) in= ;;
-  *) in='< "$input"' ;;
-  esac
-
-  set fnord # shifted out below
-
-  # Decompress as needed...
-  case $input in
-  *.bz2) cmd='bunzip2' ;;
-  *.xz) cmd='unxz' ;;
-  *.lz) cmd='lzip -d' ;;
-  *.gz | *.tgz) cmd='gunzip' ;;
-  *) cmd= ;;
-  esac
-  if test -n "$cmd"; then
-    set "$@" "$cmd"
-  fi
-
-  # Extract or otherwise munge...
-  case /$input in
-  *.tar*)
-    tarwrap=`mktemp -t deblob-check-tarwrap-XXXXXX`
-    tempfiles="$tempfiles $tarwrap"
-    
-    cat >> $tarwrap <<EOF
-#! /bin/sh
-echo='$echo' &&
-\$echo ";/*begin \$1*/;" &&
-cat &&
-echo &&
-\$echo ";/*end \$1*/;"
-EOF
-    chmod +x $tarwrap
-    cmd="tar -xf - --to-command='$tarwrap \"\$TAR_FILENAME\"'"
-    ;;
-  *.patch | *.patch.*z* | */patch-* | *.diff | *.diff.*z*)
-    if $reverse_patch; then
-      s=- r=+
-    else
-      s=+ r=-
-    fi
-    sedpatch="
-      /^[$r]/b testlastline;
-      # /^[*!]/ {
-      # 	s,^,context diffs are not properly supported\\n,;
-      # 	W /dev/stderr
-      # 	d;
-      # }
-      /^\\(@@ \\|$s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^\\($s$s$s \\|[^$s @]\\|$\\)/ {
-	x;
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      /^$s$s$s / {
-	H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	s,^$s$s$s \\(.*\\)$,;/*begin \\1*/;,;
-	p;
-	d;
-      }
-      /^@@ / {
-        H;
-	x;
-	s,^[\\n],,;
-	s,^\\(.*\\)[\\n]\\([^\\n]*\\)$,\\2\\n\\1,;
-	x;
-	# A number of patterns for patches depend on the ;/*@@ lines for
-	# context.
-	s,^.*$,;/*begin &*/;\\n;/*&*/;,;
-	p;
-	d;
-      }
-      s,^[ !$s],,
-      p;
-      :testlastline
-      $ {
-	x;
-	/^@@ /{
-	  s,^,;/*end ,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-;/**/;
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	/^$s$s$s /{
-	  s,^$s$s$s,;/*end,;
-	  s,\\([\\n]\\|$\\),*/;&,;
-	  i\\
-
-	  P;
-	  s,^[^\\n]*\\([\\n]\\|$\\),,;
-	}
-	x;
-      }
-      d;"
-    cmd='${SED-sed} "$sedpatch"'
-    ;;
-  *)
-    cmd='cat'
-    ;;
-  esac
-  cmd="{ echo \";/*begin $input*/;\"; $cmd; echo; echo \";/*end $input*/;\"; }"
-  set "$@" "$cmd"
-
-  case $input in
-  *.tar*)
-    cmd="{ cat; cat > /dev/null; }"
-    set "$@" "$cmd"
-    ;;
-  esac
-
-  # Then run through the selected action.
-  set "$@" "$scriptcmd"
-
-  case $scriptcmd2 in "" | cat) ;;
-  *) set "$@" "$scriptcmd2"
-  esac
-
-  # test $# = 1 || set "$@" "cat"
-
-  shift # fnord goes out here
-
-  pipe=
-  for cmd
-  do
-    if test -z "$pipe"; then
-      pipe="$cmd $in"
-    else
-      pipe="$pipe | $cmd"
-    fi
-  done
-
-  eval "$pipe"
-  status=$?
-
-  $rm $tempfiles
-  tempfiles=
-
-  (exit $status)
-}
-
-# If no input given, use stdin.
-case $# in
-0)
-  test -t 0 && echo reading from standard input >&2
-  set fnord -
-  shift
-  ;;
-esac
-
-# The lines below commented out out #list: can be used to get a list
-# of matching inputs.  ATM this is useless, so we just use a shell
-# boolean.
-
-#list: n=$#
-pass=:
-
-tempfiles=
-trap "status=$?; test -z \"$tempfiles\" || rm -f $tempfiles; (exit $status); exit" 0 1 2 15
-
-process_arg=
-
-# Go through each of the input files in the command line.
-for file
-do
-  case $process_arg in
-  "") ;;
-  --implied-prefix | --prefix | -i)
-    prefix=$file
-    case $prefix in
-    /*/) ;;
-    */) prefix=/$prefix ;;
-    /*) prefix=$prefix/ ;;
-    *) prefix=/$prefix/ ;;
-    esac
-    process_arg=
-    continue
-    ;;
-  *)
-    echo Internal error with process_arg=$process_arg >&2
-    exit 1
-    ;;
-  esac
-
-  case $sawdashdash$file in
-  --implied-prefix | --prefix | -i)
-    process_arg=$file
-    continue
-    ;;
-  esac
-
-  # If we print anything whatsoever (even a blank line) while
-  # processing it, we've failed.
-  if check "$file"; then
-    :
-  else
-    pass=false
-    #list: set fnord "$@" "$file"
-    #list: shift
-  fi
-done
-
-case $process_arg in
-"") ;;
-*)
-  echo Missing argument to $process_arg >&2
-  exit 1
-  ;;
-esac
-
-#list: shift $n
-
-#list: exec test $# = 0
-$pass
-exit
diff --git a/helpers/DATA/linux-lts-wily/deblob-main b/helpers/DATA/linux-lts-wily/deblob-main
deleted file mode 100644
index b2bf813ce..000000000
--- a/helpers/DATA/linux-lts-wily/deblob-main
+++ /dev/null
@@ -1,311 +0,0 @@
-#! /bin/sh
-
-# Copyright (C) 2008-2014 Alexandre Oliva <lxoliva@fsfla.org>
-
-# This program is part of GNU Linux-libre, a GNU project that
-# publishes scripts to clean up Linux so as to make it suitable for
-# use in the GNU Project and in Free System Distributions.
-
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-# deblob-main - prepare a GNU Linux-libre tarball out of a non-libre
-# Linux tarball.  It expects the Linux release (mver, say 3.0) as the
-# first argument, the gnu sub-release (extra) as the second optional
-# argument, and the patch release (sver, say .13) as an optional third
-# argument.  mver and sver are pasted together to form kver.
-
-# linux-$kver.tar.bz2 and deblob-$mver must exist in the current
-# directory, and the line that sets kver and extra in deblob-$mver
-# must match mver and extra.
-
-# The resulting tarball is put in linux-libre-$kver-gnu$extra.tar.bz2.
-# An uncompressed xdelta that produces linux-libre-$kver-gnu$extra.tar
-# out of linux-$kver.tar is put in linux-libre-$kver-gnu$extra.xdelta.
-# This xdelta can be distributed to enable third parties to easily
-# reconstruct the binary tarball starting out of sources downloaded
-# from kernel.org, but without distributing non-Free Software
-# yourself, because xdelta (unlike patches) is not reversible: the
-# removed bits are not present in it at all.
-
-# xdelta version 3 uses different command line syntax, and it switched
-# to the more standardized but less efficient vcdiff file format.
-# This script will also produce a vcdiff file if xdelta3 is present,
-# and it expects the xdelta program to use the version 1 syntax.
-
-# To enable you to check the differences between the tarballs, a patch
-# file is generated in linux-libre-$kver-gnu$extra.patch.  This patch
-# file contains the non-Free blobs, even though in reversed form, so
-# its distribution is discouraged.
-
-# The tar files and binary deltas are finally compressed with bzip2,
-# and optionally with lzip and xz too, if the compressors are
-# available.
-
-# At the end, the script attempts to generate a digital signature for
-# the newly-created tarball.  This is the last thing the script does,
-# so interrupting it at that point to skip the signing won't fail to
-# do anything else.
-
-# It is safe to interrupt the script at any other point.  When it gets
-# a ^C (other than during signing), it starts cleaning up all of its
-# temporary and output files.  If you insist, it may leave junk
-# behind, and then it will refuse to run again before you clean it up
-# by hand.  It takes extra care to avoid overwriting useful files.
-
-# If deblob-$mver finds any unexpected situation, it will error out,
-# and then deblob-main will quit.  Pass --force to deblob-main, before
-# any other argument, for deblob-main to ignore any such situations.
-
-case $1 in
---force) force=--force; shift;;
-*) force=;;
-esac
-
-# We don't want e.g. diff output translations to affect us.
-LC_ALL=C; export LC_ALL
-LANGUAGE=C; export LANGUAGE
-
-mver=$1 extra=$2 sver=$3
-kver=$mver$sver gnu=gnu$extra
-deblob= dir=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`
-
-if test -f linux-$kver.tar; then
-  zext=tar     zcmd=
-elif test -f linux-$kver.tar.bz2; then
-  zext=tar.bz2 zcmd=bunzip2
-elif test -f linux-$kver.tar.xz; then
-  zext=tar.xz  zcmd=unxz
-elif test -f linux-$kver.tar.lz; then
-  zext=tar.lz  zcmd="lzip -d"
-elif test -f linux-$kver.tar.gz; then
-  zext=tar.gz  zcmd=gunzip
-elif test -f linux-$kver.tgz; then
-  zext=tgz     zcmd=gunzip
-else
-  echo linux-$kver.tar not found, tried .bz2, .xz, .lz, .gz and .tgz too >&2
-  exit 1
-fi
-
-if test -f deblob-$mver; then
-  deblob=deblob-$mver
-elif test -f deblob; then
-  deblob=deblob
-elif test -f $dir/deblob-$mver; then
-  cp $dir/deblob-$mver deblob
-  deblob=deblob
-else
-  echo deblob does not exist >&2
-  exit 1
-fi
-
-x1="kver=$mver extra=$extra"
-x2=`grep "^kver=[^ ]* extra=" $deblob`
-if test "$x1" = "$x2"; then
-  :
-else
-  echo deblob script does not match command-line arguments >&2
-  echo expected: $x1 >&2
-  echo found   : $x2 >&2
-  exit 1
-fi
-
-cleanup=
-
-for f in \
-  linux-libre-$kver-$gnu.tar.bz2 \
-  linux-libre-$kver-$gnu.tar.bz2.asc \
-  linux-libre-$kver-$gnu.tar.bz2.sign \
-  linux-libre-$kver-$gnu.tar.xz \
-  linux-libre-$kver-$gnu.tar.xz.asc \
-  linux-libre-$kver-$gnu.tar.xz.sign \
-  linux-libre-$kver-$gnu.tar.lz \
-  linux-libre-$kver-$gnu.tar.lz.asc \
-  linux-libre-$kver-$gnu.tar.lz.sign \
-  linux-libre-$kver-$gnu.tar \
-  linux-libre-$kver-$gnu.tar.asc \
-  linux-libre-$kver-$gnu.tar.sign \
-  linux-libre-$kver-$gnu.patch \
-  linux-libre-$kver-$gnu.log \
-  linux-libre-$kver-$gnu.vcdiff \
-  linux-libre-$kver-$gnu.vcdiff.bz2 \
-  linux-libre-$kver-$gnu.vcdiff.bz2.asc \
-  linux-libre-$kver-$gnu.vcdiff.bz2.sign \
-  linux-libre-$kver-$gnu.vcdiff.xz \
-  linux-libre-$kver-$gnu.vcdiff.xz.asc \
-  linux-libre-$kver-$gnu.vcdiff.xz.sign \
-  linux-libre-$kver-$gnu.vcdiff.lz \
-  linux-libre-$kver-$gnu.vcdiff.lz.asc \
-  linux-libre-$kver-$gnu.vcdiff.lz.sign \
-  linux-libre-$kver-$gnu.xdelta \
-  linux-libre-$kver-$gnu.xdelta.bz2 \
-  linux-libre-$kver-$gnu.xdelta.bz2.asc \
-  linux-libre-$kver-$gnu.xdelta.bz2.sign \
-  linux-libre-$kver-$gnu.xdelta.xz \
-  linux-libre-$kver-$gnu.xdelta.xz.asc \
-  linux-libre-$kver-$gnu.xdelta.xz.sign \
-  linux-libre-$kver-$gnu.xdelta.lz \
-  linux-libre-$kver-$gnu.xdelta.lz.asc \
-  linux-libre-$kver-$gnu.xdelta.lz.sign \
-; do
-  if test -f $f; then
-    echo $f already exists >&2
-    exit 1
-  fi
-  cleanup="$cleanup $f"
-done
-
-for d in \
-  linux-$kver \
-  linux-libre-$kver-$gnu \
-  orig-linux-$kver \
-; do
-  if test -d $d; then
-    echo $d already exists >&2
-    exit 1
-  fi
-  cleanup="$cleanup $d"
-done
-
-if test -f $dir/deblob-$kver; then
-  if cmp $dir/deblob-$kver $deblob; then
-    :
-  else
-    echo $dir/deblob-$kver and $deblob are different >&2
-    exit 1
-  fi
-fi
-
-if test ! -f deblob-check; then
-  if test -f $dir/deblob-check; then
-    cp $dir/deblob-check deblob-check
-  fi
-else
-  if test -f $dir/deblob-check; then
-    if cmp $dir/deblob-check deblob-check; then
-      :
-    else
-      echo $dir/deblob-check and deblob-check are different >&2
-      exit 1
-    fi
-  fi
-fi
-
-trap 'status=$?; echo cleaning up...; rm -rf $cleanup; (exit $status); exit' 0 1 2 15
-
-set -e
-
-if test -n "$zcmd"; then
-  echo Uncompressing linux-$kver.$zext into linux-$kver.tar
-  rm -rf linux-$kver.tar
-  cleanup="$cleanup linux-$kver.tar"
-  $zcmd < linux-$kver.$zext > linux-$kver.tar
-fi
-
-echo Extracting linux-$kver.tar into linux-$kver
-rm -rf linux-$kver
-tar -xf linux-$kver.tar
-rm -rf linux-libre-$kver-$gnu linux-libre-$kver-$gnu.tar
-
-echo Copying linux-$kver to linux-libre-$kver-$gnu
-cp linux-$kver.tar linux-libre-$kver-$gnu.tar
-cp -lR linux-$kver/. linux-libre-$kver-$gnu
-
-rm -f linux-libre-$kver-$gnu.log linux-libre-$kver-$gnu.log.tmp
-echo Deblobbing within linux-libre-$kver-$gnu, saving output to linux-libre-$kver-$gnu.log
-# We can't just pipe deblob into tee, for then we fail to detect
-# error conditions.  Use file renaming to tell whether we succeeded.
-if (cd linux-libre-$kver-$gnu && /bin/sh ../$deblob $force) 2>&1; then
-  mv linux-libre-$kver-$gnu.log.tmp linux-libre-$kver-$gnu.log
-fi | tee linux-libre-$kver-$gnu.log.tmp
-if test ! -f linux-libre-$kver-$gnu.log; then
-  mv linux-libre-$kver-$gnu.log.tmp linux-libre-$kver-$gnu.log
-  echo $deblob failed, aborting >&2
-  exit 1
-fi
-rm -f linux-libre-$kver-$gnu.patch
-
-# Do not copy these scripts for now, deblob-check regards itself as a blob.
-# cp -p $0 $deblob deblob-check linux-libre-$kver-$gnu
-
-echo Generating linux-libre-$kver-$gnu.patch
-diff -druN linux-$kver linux-libre-$kver-$gnu > linux-libre-$kver-$gnu.patch || :
-
-echo Removing removed or modified files from linux-libre-$kver-$gnu.tar
-diff -rq linux-$kver linux-libre-$kver-$gnu |
-sed -n "
-  s,^Only in \\(linux-$kver\\(/.*\\)\\?\\): \\(.*\\),\1/\3,p;
-  s,^Files \\(linux-$kver\\)/\\(.*\\) and linux-libre-$kver-$gnu/\\2 differ,\\1/\\2,p;
-" |
-xargs tar --delete -f linux-libre-$kver-$gnu.tar
-
-echo Adding modified or added files to linux-libre-$kver-$gnu.tar
-rm -rf orig-linux-$kver
-mv linux-$kver orig-linux-$kver
-mv linux-libre-$kver-$gnu linux-$kver
-diff -rq orig-linux-$kver linux-$kver |
-sed -n "
-  s,^Files orig-\\(linux-$kver/.*\\) and \\1 differ,\\1,p;
-  s,^Only in \\(linux-$kver\\(/.*\\)\\?\\): \\(.*\\),\\1/\\3,p;
-" |
-xargs tar --append -f linux-libre-$kver-$gnu.tar
-
-echo Wiping out extracted trees
-rm -rf linux-$kver orig-linux-$kver
-
-echo Creating vcdiff between linux-$kver.tar and linux-libre-$kver-$gnu.tar
-xdelta3 -e -9 -S djw -s linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.vcdiff || : # don't fail if xdelta3 is not present
-
-echo Creating xdelta between linux-$kver.tar and linux-libre-$kver-$gnu.tar
-xdelta delta -0 linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta || : # xdelta returns nonzero on success
-
-cleanup="linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta"
-
-echo Compressing binary deltas and linux-libre-$kver-$gnu.tar
-rm -f linux-$kver.tar
-if test -f linux-libre-$kver-$gnu.xdelta; then
-  bzip2 -k9 linux-libre-$kver-$gnu.xdelta
-  xz -k9 linux-libre-$kver-$gnu.xdelta || :
-  lzip -k9 linux-libre-$kver-$gnu.xdelta || :
-fi
-bzip2 -k9 linux-libre-$kver-$gnu.tar
-xz -k9 linux-libre-$kver-$gnu.tar || :
-lzip -k9 linux-libre-$kver-$gnu.tar || :
-
-echo Done except for signing, feel free to interrupt
-for f in \
-  linux-libre-$kver-$gnu.tar \
-  linux-libre-$kver-$gnu.tar.bz2 \
-  linux-libre-$kver-$gnu.tar.xz \
-  linux-libre-$kver-$gnu.tar.lz \
-  linux-libre-$kver-$gnu.vcdiff \
-  linux-libre-$kver-$gnu.xdelta \
-  linux-libre-$kver-$gnu.xdelta.bz2 \
-  linux-libre-$kver-$gnu.xdelta.xz \
-  linux-libre-$kver-$gnu.xdelta.lz \
-; do
-  if test -f $f; then
-    gpg -a --detach-sign $f
-    mv $f.asc $f.sign
-  fi
-done
-
-rm -f $cleanup
-cleanup=
-trap 'status=$?; (exit $status); exit' 0 1 2 15
-
-echo All set, please review linux-libre-$kver-$gnu.patch
-
-exit 0
diff --git a/helpers/DATA/linux-meta/linux.control b/helpers/DATA/linux-meta/linux.control
deleted file mode 100644
index 86a36595b..000000000
--- a/helpers/DATA/linux-meta/linux.control
+++ /dev/null
@@ -1,165 +0,0 @@
-Source: linux-meta
-Section: devel
-Priority: optional
-Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
-Standards-Version: 3.6.1
-Build-Depends: dpkg (>= 1.13.19), debhelper (>= 5), gawk
-
-Package: linux
-Architecture: i386 amd64 
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image (= ${binary:Version})
-Description: Generic complete Linux-Libre kernel.
- This package will always depend on the latest generic complete Linux-Libre kernel
- available.
-
-Package: linux-source
-Architecture: all
-Section: devel
-Priority: optional
-Depends: ${misc:Depends}, linux-source-${kernel-version}
-Description: Linux-Libre kernel source with Ubuntu patches
- This package will always depend on the latest Linux-Libre kernel source code
- available. The Ubuntu patches have been applied.
-
-Package: linux-image
-Architecture: i386 amd64 
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-${generic-depends} (= ${binary:Version})
-Description: Generic Linux-Libre kernel image.
- This package will always depend on the latest generic Linux-Libre kernel image
- available.
-
-Package: linux-crashdump
-Architecture: i386 amd64
-Section: devel
-Depends: ${misc:Depends}, kexec-tools, makedumpfile, grub-pc (>= 1.96+20090611-1ubuntu2) | grub (>= 0.97-29ubuntu24)
-Recommends: apport
-Suggests: crash
-Description: Linux-Libre kernel crashdump setup for the latest generic kernel
- This package installs all the needed infrstracture to get crashdumps from
- your running system. If you are experiencing kernel crashes that cannot
- be debugged normally (because the problem is infrequent or panic's the
- system in such a way as to make information gathering impossible), then
- you can install this package to automatically enable capture of the
- vmcore on crashes.
-
-Package: linux-tools
-Architecture: i386 amd64 armel
-Section: metapackages
-Depends: ${misc:Depends}, linux-tools-${kernel-abi-version}
-Description: Linux-Libre kernel versioned Tools
- This package will always depend on the latest Linux-Libre kernel versioned tools 
- available. The Ubuntu patches have been applied.
-
-
-Package: linux-headers-generic
-Architecture: i386 amd64
-Section: devel
-Priority: optional
-Depends: ${misc:Depends}, linux-headers-${kernel-abi-version}-generic
-Description: Generic Linux-Libre kernel headers
- This package will always depend on the latest generic kernel headers
- available.
-
-Package: linux-image-generic
-Architecture: i386 amd64
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-${kernel-abi-version}-generic
-Description: Generic Linux-Libre kernel image
- This package will always depend on the latest generic kernel image
- available.
-
-Package: linux-generic
-Architecture: i386 amd64
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-generic (= ${binary:Version})
-Description: Complete Generic Linux-Libre kernel
- This package will always depend on the latest complete generic Linux-Libre kernel
- available.
-
-Package: linux-headers-generic-pae
-Architecture: i386
-Section: devel
-Priority: optional
-Depends: ${misc:Depends}, linux-headers-${kernel-abi-version}-generic-pae
-Description: Generic Linux-Libre kernel headers
- This package will always depend on the latest generic kernel headers
- available.
-
-Package: linux-image-generic-pae
-Architecture: i386
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-${kernel-abi-version}-generic-pae
-Description: Generic Linux-Libre kernel image
- This package will always depend on the latest generic kernel image
- available.
-
-Package: linux-generic-pae
-Architecture: i386
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-generic-pae (= ${binary:Version})
-Description: Complete Generic Linux-Libre kernel
- This package will always depend on the latest complete generic Linux-Libre kernel
- available.
-
-Package: linux-headers-server
-Architecture: amd64 i386
-Section: devel
-Priority: optional
-Depends: ${misc:Depends}, linux-headers-${kernel-abi-version}-server [amd64], linux-headers-generic-pae [i386]
-Description: Linux-Libre kernel headers on Server Equipment.
- This package will always depend on the latest kernel headers available
- for Server Equipment.
-
-Package: linux-image-server
-Architecture: amd64 i386
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-${kernel-abi-version}-server [amd64], linux-image-generic-pae [i386]
-Description: Linux-Libre kernel image on Server Equipment.
- This package will always depend on the latest kernel image available
- for Server Equipment.
-
-Package: linux-server
-Architecture: amd64 i386
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-server (= ${binary:Version}) [amd64], linux-generic-pae [i386]
-Description: Complete Linux-Libre kernel on Server Equipment.
- This package will always depend on the latest complete Linux-Libre kernel available
- for Server Equipment.
-
-Package: linux-headers-virtual
-Architecture: i386 amd64
-Section: devel
-Priority: optional
-Depends: ${misc:Depends}, linux-headers-${kernel-abi-version}-virtual
-Description: Linux-Libre kernel headers for virtual machines
- This package will always depend on the latest kernel headers available
- for virtual machines.
-
-Package: linux-image-virtual
-Architecture: i386 amd64
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-${kernel-abi-version}-virtual
-Description: Linux-Libre kernel image for virtual machines
- This package will always depend on the latest kernel image available
- for virtual machines.
-
-Package: linux-virtual
-Architecture: i386 amd64
-Section: metapackages
-Priority: optional
-Depends: ${misc:Depends}, linux-image-virtual (= ${binary:Version})
-Description: Complete Linux-Libre kernel for virtual machines
- This package will always depend on the latest complete Linux-Libre kernel available
- for virtual machines.
-
diff --git a/helpers/DATA/linux-lts-wily/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch b/helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.4.0.patch
similarity index 73%
rename from helpers/DATA/linux-lts-wily/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch
rename to helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.4.0.patch
index 9e70d675a..a5bf7cf8c 100644
--- a/helpers/DATA/linux-lts-wily/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r8-3.19.0.patch
+++ b/helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.4.0.patch
@@ -1,19 +1,20 @@
-From 2b248dae913fb3e556f3fe761970291ceea0442c Mon Sep 17 00:00:00 2001
+From f54f3003586bf00ba0ee5974a92b732477b834e3 Mon Sep 17 00:00:00 2001
 From: Paolo Valente <paolo.valente@unimore.it>
-Date: Sat, 6 Jun 2015 17:56:31 +0200
-Subject: [PATCH 1/3] block: cgroups, kconfig, build bits for BFQ-v7r8-3.19.0
+Date: Tue, 7 Apr 2015 13:39:12 +0200
+Subject: [PATCH 1/3] block: cgroups, kconfig, build bits for BFQ-v7r11-4.4.0
 
 Update Kconfig.iosched and do the related Makefile changes to include
-kernel configuration options for BFQ. Also add the bfqio controller
-to the cgroups subsystem.
+kernel configuration options for BFQ. Also increase the number of
+policies supported by the blkio controller so that BFQ can add its
+own.
 
 Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
+Signed-off-by: Arianna Avanzini <avanzini@google.com>
 ---
- block/Kconfig.iosched         | 32 ++++++++++++++++++++++++++++++++
- block/Makefile                |  1 +
- include/linux/cgroup_subsys.h |  4 ++++
- 3 files changed, 37 insertions(+)
+ block/Kconfig.iosched  | 32 ++++++++++++++++++++++++++++++++
+ block/Makefile         |  1 +
+ include/linux/blkdev.h |  2 +-
+ 3 files changed, 34 insertions(+), 1 deletion(-)
 
 diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
 index 421bef9..0ee5f0f 100644
@@ -84,21 +85,19 @@ index 00ecc97..1ed86d5 100644
  
  obj-$(CONFIG_BLOCK_COMPAT)	+= compat_ioctl.o
  obj-$(CONFIG_BLK_CMDLINE_PARSER)	+= cmdline-parser.o
-diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
-index 98c4f9b..13b010d 100644
---- a/include/linux/cgroup_subsys.h
-+++ b/include/linux/cgroup_subsys.h
-@@ -35,6 +35,10 @@ SUBSYS(net_cls)
- SUBSYS(blkio)
- #endif
+diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
+index c70e358..ae43492 100644
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -44,7 +44,7 @@ struct pr_ops;
+  * Maximum number of blkcg policies allowed to be registered concurrently.
+  * Defined here to simplify include dependency.
+  */
+-#define BLKCG_MAX_POLS		2
++#define BLKCG_MAX_POLS		3
  
-+#if IS_ENABLED(CONFIG_CGROUP_BFQIO)
-+SUBSYS(bfqio)
-+#endif
-+
- #if IS_ENABLED(CONFIG_CGROUP_PERF)
- SUBSYS(perf_event)
- #endif
+ struct request;
+ typedef void (rq_end_io_fn)(struct request *, int);
 -- 
-2.1.4
+1.9.1
 
diff --git a/helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r5-3.13.patch b/helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r5-3.13.patch
deleted file mode 100644
index daf376aba..000000000
--- a/helpers/DATA/linux/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r5-3.13.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 35b91cb0131f9c63141a887d5dbb7657f01d8808 Mon Sep 17 00:00:00 2001
-From: Paolo Valente <paolo.valente@unimore.it>
-Date: Tue, 3 Sep 2013 16:50:42 +0200
-Subject: [PATCH 1/3] block: cgroups, kconfig, build bits for BFQ-v7r5-3.13
-
-Update Kconfig.iosched and do the related Makefile changes to include
-kernel configuration options for BFQ. Also add the bfqio controller
-to the cgroups subsystem.
-
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
----
- block/Kconfig.iosched         | 32 ++++++++++++++++++++++++++++++++
- block/Makefile                |  1 +
- include/linux/cgroup_subsys.h |  4 ++++
- 3 files changed, 37 insertions(+)
-
-diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
-index 421bef9..0ee5f0f 100644
---- a/block/Kconfig.iosched
-+++ b/block/Kconfig.iosched
-@@ -39,6 +39,27 @@ config CFQ_GROUP_IOSCHED
- 	---help---
- 	  Enable group IO scheduling in CFQ.
- 
-+config IOSCHED_BFQ
-+	tristate "BFQ I/O scheduler"
-+	default n
-+	---help---
-+	  The BFQ I/O scheduler tries to distribute bandwidth among
-+	  all processes according to their weights.
-+	  It aims at distributing the bandwidth as desired, independently of
-+	  the disk parameters and with any workload. It also tries to
-+	  guarantee low latency to interactive and soft real-time
-+	  applications. If compiled built-in (saying Y here), BFQ can
-+	  be configured to support hierarchical scheduling.
-+
-+config CGROUP_BFQIO
-+	bool "BFQ hierarchical scheduling support"
-+	depends on CGROUPS && IOSCHED_BFQ=y
-+	default n
-+	---help---
-+	  Enable hierarchical scheduling in BFQ, using the cgroups
-+	  filesystem interface.  The name of the subsystem will be
-+	  bfqio.
-+
- choice
- 	prompt "Default I/O scheduler"
- 	default DEFAULT_CFQ
-@@ -52,6 +73,16 @@ choice
- 	config DEFAULT_CFQ
- 		bool "CFQ" if IOSCHED_CFQ=y
- 
-+	config DEFAULT_BFQ
-+		bool "BFQ" if IOSCHED_BFQ=y
-+		help
-+		  Selects BFQ as the default I/O scheduler which will be
-+		  used by default for all block devices.
-+		  The BFQ I/O scheduler aims at distributing the bandwidth
-+		  as desired, independently of the disk parameters and with
-+		  any workload. It also tries to guarantee low latency to
-+		  interactive and soft real-time applications.
-+
- 	config DEFAULT_NOOP
- 		bool "No-op"
- 
-@@ -61,6 +92,7 @@ config DEFAULT_IOSCHED
- 	string
- 	default "deadline" if DEFAULT_DEADLINE
- 	default "cfq" if DEFAULT_CFQ
-+	default "bfq" if DEFAULT_BFQ
- 	default "noop" if DEFAULT_NOOP
- 
- endmenu
-diff --git a/block/Makefile b/block/Makefile
-index 20645e8..cbd83fb 100644
---- a/block/Makefile
-+++ b/block/Makefile
-@@ -16,6 +16,7 @@ obj-$(CONFIG_BLK_DEV_THROTTLING)	+= blk-throttle.o
- obj-$(CONFIG_IOSCHED_NOOP)	+= noop-iosched.o
- obj-$(CONFIG_IOSCHED_DEADLINE)	+= deadline-iosched.o
- obj-$(CONFIG_IOSCHED_CFQ)	+= cfq-iosched.o
-+obj-$(CONFIG_IOSCHED_BFQ)	+= bfq-iosched.o
- 
- obj-$(CONFIG_BLOCK_COMPAT)	+= compat_ioctl.o
- obj-$(CONFIG_BLK_DEV_INTEGRITY)	+= blk-integrity.o
-diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
-index b613ffd..43c5dc9 100644
---- a/include/linux/cgroup_subsys.h
-+++ b/include/linux/cgroup_subsys.h
-@@ -39,6 +39,10 @@ SUBSYS(net_cls)
- SUBSYS(blkio)
- #endif
- 
-+#if IS_SUBSYS_ENABLED(CONFIG_CGROUP_BFQIO)
-+SUBSYS(bfqio)
-+#endif
-+
- #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_PERF)
- SUBSYS(perf)
- #endif
--- 
-1.9.3
-
diff --git a/helpers/DATA/linux-lts-wily/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch b/helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.4.0.patch
similarity index 74%
rename from helpers/DATA/linux-lts-wily/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch
rename to helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.4.0.patch
index 1f3a08902..6ed697364 100644
--- a/helpers/DATA/linux-lts-wily/0002-block-introduce-the-BFQ-v7r8-I-O-sched-for-3.19.0.patch
+++ b/helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.4.0.patch
@@ -1,9 +1,8 @@
-From aeda87684a7306350bce27db3a0112e31091c0a7 Mon Sep 17 00:00:00 2001
+From 03d30cc06a5436c05ee338bd21903802181bafe9 Mon Sep 17 00:00:00 2001
 From: Paolo Valente <paolo.valente@unimore.it>
 Date: Thu, 9 May 2013 19:10:02 +0200
-Subject: [PATCH 2/3] block: introduce the BFQ-v7r8 I/O sched for 3.19.0
+Subject: [PATCH 2/3] block: introduce the BFQ-v7r11 I/O sched for 4.4.0
 
-Add the BFQ-v7r8 I/O scheduler to 3.19.0.
 The general structure is borrowed from CFQ, as much of the code for
 handling I/O contexts. Over time, several useful features have been
 ported from CFQ as well (details in the changelog in README.BFQ). A
@@ -54,26 +53,48 @@ until it expires.
       prevent it from starving.
 
 Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
+Signed-off-by: Arianna Avanzini <avanzini@google.com>
 ---
- block/bfq-cgroup.c  |  936 +++++++++++++
- block/bfq-ioc.c     |   36 +
- block/bfq-iosched.c | 3898 +++++++++++++++++++++++++++++++++++++++++++++++++++
- block/bfq-sched.c   | 1208 ++++++++++++++++
- block/bfq.h         |  771 ++++++++++
- 5 files changed, 6849 insertions(+)
+ block/Kconfig.iosched |    6 +-
+ block/bfq-cgroup.c    | 1182 ++++++++++++++++
+ block/bfq-ioc.c       |   36 +
+ block/bfq-iosched.c   | 3754 +++++++++++++++++++++++++++++++++++++++++++++++++
+ block/bfq-sched.c     | 1200 ++++++++++++++++
+ block/bfq.h           |  801 +++++++++++
+ 6 files changed, 6975 insertions(+), 4 deletions(-)
  create mode 100644 block/bfq-cgroup.c
  create mode 100644 block/bfq-ioc.c
  create mode 100644 block/bfq-iosched.c
  create mode 100644 block/bfq-sched.c
  create mode 100644 block/bfq.h
 
+diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched
+index 0ee5f0f..f78cd1a 100644
+--- a/block/Kconfig.iosched
++++ b/block/Kconfig.iosched
+@@ -51,14 +51,12 @@ config IOSCHED_BFQ
+ 	  applications. If compiled built-in (saying Y here), BFQ can
+ 	  be configured to support hierarchical scheduling.
+ 
+-config CGROUP_BFQIO
++config BFQ_GROUP_IOSCHED
+ 	bool "BFQ hierarchical scheduling support"
+ 	depends on CGROUPS && IOSCHED_BFQ=y
+ 	default n
+ 	---help---
+-	  Enable hierarchical scheduling in BFQ, using the cgroups
+-	  filesystem interface.  The name of the subsystem will be
+-	  bfqio.
++	  Enable hierarchical scheduling in BFQ, using the blkio controller.
+ 
+ choice
+ 	prompt "Default I/O scheduler"
 diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
 new file mode 100644
-index 0000000..11e2f1d
+index 0000000..8610cd6
 --- /dev/null
 +++ b/block/bfq-cgroup.c
-@@ -0,0 +1,936 @@
+@@ -0,0 +1,1182 @@
 +/*
 + * BFQ: CGROUPS support.
 + *
@@ -89,250 +110,519 @@ index 0000000..11e2f1d
 + * file.
 + */
 +
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +
-+static DEFINE_MUTEX(bfqio_mutex);
++/* bfqg stats flags */
++enum bfqg_stats_flags {
++	BFQG_stats_waiting = 0,
++	BFQG_stats_idling,
++	BFQG_stats_empty,
++};
 +
-+static bool bfqio_is_removed(struct bfqio_cgroup *bgrp)
-+{
-+	return bgrp ? !bgrp->online : false;
-+}
++#define BFQG_FLAG_FNS(name)						\
++static void bfqg_stats_mark_##name(struct bfqg_stats *stats)	\
++{									\
++	stats->flags |= (1 << BFQG_stats_##name);			\
++}									\
++static void bfqg_stats_clear_##name(struct bfqg_stats *stats)	\
++{									\
++	stats->flags &= ~(1 << BFQG_stats_##name);			\
++}									\
++static int bfqg_stats_##name(struct bfqg_stats *stats)		\
++{									\
++	return (stats->flags & (1 << BFQG_stats_##name)) != 0;		\
++}									\
 +
-+static struct bfqio_cgroup bfqio_root_cgroup = {
-+	.weight = BFQ_DEFAULT_GRP_WEIGHT,
-+	.ioprio = BFQ_DEFAULT_GRP_IOPRIO,
-+	.ioprio_class = BFQ_DEFAULT_GRP_CLASS,
-+};
++BFQG_FLAG_FNS(waiting)
++BFQG_FLAG_FNS(idling)
++BFQG_FLAG_FNS(empty)
++#undef BFQG_FLAG_FNS
 +
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
++/* This should be called with the queue_lock held. */
++static void bfqg_stats_update_group_wait_time(struct bfqg_stats *stats)
 +{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
++	unsigned long long now;
++
++	if (!bfqg_stats_waiting(stats))
++		return;
++
++	now = sched_clock();
++	if (time_after64(now, stats->start_group_wait_time))
++		blkg_stat_add(&stats->group_wait_time,
++			      now - stats->start_group_wait_time);
++	bfqg_stats_clear_waiting(stats);
 +}
 +
-+static struct bfqio_cgroup *css_to_bfqio(struct cgroup_subsys_state *css)
++/* This should be called with the queue_lock held. */
++static void bfqg_stats_set_start_group_wait_time(struct bfq_group *bfqg,
++						 struct bfq_group *curr_bfqg)
 +{
-+	return css ? container_of(css, struct bfqio_cgroup, css) : NULL;
++	struct bfqg_stats *stats = &bfqg->stats;
++
++	if (bfqg_stats_waiting(stats))
++		return;
++	if (bfqg == curr_bfqg)
++		return;
++	stats->start_group_wait_time = sched_clock();
++	bfqg_stats_mark_waiting(stats);
 +}
 +
-+/*
-+ * Search the bfq_group for bfqd into the hash table (by now only a list)
-+ * of bgrp.  Must be called under rcu_read_lock().
-+ */
-+static struct bfq_group *bfqio_lookup_group(struct bfqio_cgroup *bgrp,
-+					    struct bfq_data *bfqd)
++/* This should be called with the queue_lock held. */
++static void bfqg_stats_end_empty_time(struct bfqg_stats *stats)
 +{
-+	struct bfq_group *bfqg;
-+	void *key;
++	unsigned long long now;
 +
-+	hlist_for_each_entry_rcu(bfqg, &bgrp->group_data, group_node) {
-+		key = rcu_dereference(bfqg->bfqd);
-+		if (key == bfqd)
-+			return bfqg;
-+	}
++	if (!bfqg_stats_empty(stats))
++		return;
 +
-+	return NULL;
++	now = sched_clock();
++	if (time_after64(now, stats->start_empty_time))
++		blkg_stat_add(&stats->empty_time,
++			      now - stats->start_empty_time);
++	bfqg_stats_clear_empty(stats);
 +}
 +
-+static inline void bfq_group_init_entity(struct bfqio_cgroup *bgrp,
-+					 struct bfq_group *bfqg)
++static void bfqg_stats_update_dequeue(struct bfq_group *bfqg)
 +{
-+	struct bfq_entity *entity = &bfqg->entity;
++	blkg_stat_add(&bfqg->stats.dequeue, 1);
++}
++
++static void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg)
++{
++	struct bfqg_stats *stats = &bfqg->stats;
++
++	if (blkg_rwstat_total(&stats->queued))
++		return;
 +
 +	/*
-+	 * If the weight of the entity has never been set via the sysfs
-+	 * interface, then bgrp->weight == 0. In this case we initialize
-+	 * the weight from the current ioprio value. Otherwise, the group
-+	 * weight, if set, has priority over the ioprio value.
++	 * group is already marked empty. This can happen if bfqq got new
++	 * request in parent group and moved to this group while being added
++	 * to service tree. Just ignore the event and move on.
 +	 */
-+	if (bgrp->weight == 0) {
-+		entity->new_weight = bfq_ioprio_to_weight(bgrp->ioprio);
-+		entity->new_ioprio = bgrp->ioprio;
-+	} else {
-+		if (bgrp->weight < BFQ_MIN_WEIGHT ||
-+		    bgrp->weight > BFQ_MAX_WEIGHT) {
-+			printk(KERN_CRIT "bfq_group_init_entity: "
-+					 "bgrp->weight %d\n", bgrp->weight);
-+			BUG();
-+		}
-+		entity->new_weight = bgrp->weight;
-+		entity->new_ioprio = bfq_weight_to_ioprio(bgrp->weight);
++	if (bfqg_stats_empty(stats))
++		return;
++
++	stats->start_empty_time = sched_clock();
++	bfqg_stats_mark_empty(stats);
++}
++
++static void bfqg_stats_update_idle_time(struct bfq_group *bfqg)
++{
++	struct bfqg_stats *stats = &bfqg->stats;
++
++	if (bfqg_stats_idling(stats)) {
++		unsigned long long now = sched_clock();
++
++		if (time_after64(now, stats->start_idle_time))
++			blkg_stat_add(&stats->idle_time,
++				      now - stats->start_idle_time);
++		bfqg_stats_clear_idling(stats);
 +	}
-+	entity->orig_weight = entity->weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class = bgrp->ioprio_class;
-+	entity->my_sched_data = &bfqg->sched_data;
-+	bfqg->active_entities = 0;
 +}
 +
-+static inline void bfq_group_set_parent(struct bfq_group *bfqg,
-+					struct bfq_group *parent)
++static void bfqg_stats_set_start_idle_time(struct bfq_group *bfqg)
 +{
-+	struct bfq_entity *entity;
++	struct bfqg_stats *stats = &bfqg->stats;
 +
-+	BUG_ON(parent == NULL);
-+	BUG_ON(bfqg == NULL);
++	stats->start_idle_time = sched_clock();
++	bfqg_stats_mark_idling(stats);
++}
 +
-+	entity = &bfqg->entity;
-+	entity->parent = parent->my_entity;
-+	entity->sched_data = &parent->sched_data;
++static void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg)
++{
++	struct bfqg_stats *stats = &bfqg->stats;
++
++	blkg_stat_add(&stats->avg_queue_size_sum,
++		      blkg_rwstat_total(&stats->queued));
++	blkg_stat_add(&stats->avg_queue_size_samples, 1);
++	bfqg_stats_update_group_wait_time(stats);
 +}
 +
-+/**
-+ * bfq_group_chain_alloc - allocate a chain of groups.
-+ * @bfqd: queue descriptor.
-+ * @css: the leaf cgroup_subsys_state this chain starts from.
-+ *
-+ * Allocate a chain of groups starting from the one belonging to
-+ * @cgroup up to the root cgroup.  Stop if a cgroup on the chain
-+ * to the root has already an allocated group on @bfqd.
++static struct blkcg_policy blkcg_policy_bfq;
++
++/*
++ * blk-cgroup policy-related handlers
++ * The following functions help in converting between blk-cgroup
++ * internal structures and BFQ-specific structures.
 + */
-+static struct bfq_group *bfq_group_chain_alloc(struct bfq_data *bfqd,
-+					       struct cgroup_subsys_state *css)
++
++static struct bfq_group *pd_to_bfqg(struct blkg_policy_data *pd)
 +{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *prev = NULL, *leaf = NULL;
++	return pd ? container_of(pd, struct bfq_group, pd) : NULL;
++}
 +
-+	for (; css != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
++static struct blkcg_gq *bfqg_to_blkg(struct bfq_group *bfqg)
++{
++	return pd_to_blkg(&bfqg->pd);
++}
 +
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		if (bfqg != NULL) {
-+			/*
-+			 * All the cgroups in the path from there to the
-+			 * root must have a bfq_group for bfqd, so we don't
-+			 * need any more allocations.
-+			 */
-+			break;
-+		}
++static struct bfq_group *blkg_to_bfqg(struct blkcg_gq *blkg)
++{
++	struct blkg_policy_data *pd = blkg_to_pd(blkg, &blkcg_policy_bfq);
++	BUG_ON(!pd);
++	return pd_to_bfqg(pd);
++}
 +
-+		bfqg = kzalloc(sizeof(*bfqg), GFP_ATOMIC);
-+		if (bfqg == NULL)
-+			goto cleanup;
++/*
++ * bfq_group handlers
++ * The following functions help in navigating the bfq_group hierarchy
++ * by allowing to find the parent of a bfq_group or the bfq_group
++ * associated to a bfq_queue.
++ */
 +
-+		bfq_group_init_entity(bgrp, bfqg);
-+		bfqg->my_entity = &bfqg->entity;
++static struct bfq_group *bfqg_parent(struct bfq_group *bfqg)
++{
++	struct blkcg_gq *pblkg = bfqg_to_blkg(bfqg)->parent;
 +
-+		if (leaf == NULL) {
-+			leaf = bfqg;
-+			prev = leaf;
-+		} else {
-+			bfq_group_set_parent(prev, bfqg);
-+			/*
-+			 * Build a list of allocated nodes using the bfqd
-+			 * filed, that is still unused and will be
-+			 * initialized only after the node will be
-+			 * connected.
-+			 */
-+			prev->bfqd = bfqg;
-+			prev = bfqg;
-+		}
-+	}
++	return pblkg ? blkg_to_bfqg(pblkg) : NULL;
++}
 +
-+	return leaf;
++static struct bfq_group *bfqq_group(struct bfq_queue *bfqq)
++{
++	struct bfq_entity *group_entity = bfqq->entity.parent;
 +
-+cleanup:
-+	while (leaf != NULL) {
-+		prev = leaf;
-+		leaf = leaf->bfqd;
-+		kfree(prev);
-+	}
++	return group_entity ? container_of(group_entity, struct bfq_group,
++					   entity) :
++			      bfqq->bfqd->root_group;
++}
 +
-+	return NULL;
++/*
++ * The following two functions handle get and put of a bfq_group by
++ * wrapping the related blk-cgroup hooks.
++ */
++
++static void bfqg_get(struct bfq_group *bfqg)
++{
++	return blkg_get(bfqg_to_blkg(bfqg));
 +}
 +
-+/**
-+ * bfq_group_chain_link - link an allocated group chain to a cgroup
-+ *                        hierarchy.
-+ * @bfqd: the queue descriptor.
-+ * @css: the leaf cgroup_subsys_state to start from.
-+ * @leaf: the leaf group (to be associated to @cgroup).
-+ *
-+ * Try to link a chain of groups to a cgroup hierarchy, connecting the
-+ * nodes bottom-up, so we can be sure that when we find a cgroup in the
-+ * hierarchy that already as a group associated to @bfqd all the nodes
-+ * in the path to the root cgroup have one too.
-+ *
-+ * On locking: the queue lock protects the hierarchy (there is a hierarchy
-+ * per device) while the bfqio_cgroup lock protects the list of groups
-+ * belonging to the same cgroup.
++static void bfqg_put(struct bfq_group *bfqg)
++{
++	return blkg_put(bfqg_to_blkg(bfqg));
++}
++
++static void bfqg_stats_update_io_add(struct bfq_group *bfqg,
++				     struct bfq_queue *bfqq,
++				     int rw)
++{
++	blkg_rwstat_add(&bfqg->stats.queued, rw, 1);
++	bfqg_stats_end_empty_time(&bfqg->stats);
++	if (!(bfqq == ((struct bfq_data *)bfqg->bfqd)->in_service_queue))
++		bfqg_stats_set_start_group_wait_time(bfqg, bfqq_group(bfqq));
++}
++
++static void bfqg_stats_update_io_remove(struct bfq_group *bfqg, int rw)
++{
++	blkg_rwstat_add(&bfqg->stats.queued, rw, -1);
++}
++
++static void bfqg_stats_update_io_merged(struct bfq_group *bfqg, int rw)
++{
++	blkg_rwstat_add(&bfqg->stats.merged, rw, 1);
++}
++
++static void bfqg_stats_update_dispatch(struct bfq_group *bfqg,
++					      uint64_t bytes, int rw)
++{
++	blkg_stat_add(&bfqg->stats.sectors, bytes >> 9);
++	blkg_rwstat_add(&bfqg->stats.serviced, rw, 1);
++	blkg_rwstat_add(&bfqg->stats.service_bytes, rw, bytes);
++}
++
++static void bfqg_stats_update_completion(struct bfq_group *bfqg,
++			uint64_t start_time, uint64_t io_start_time, int rw)
++{
++	struct bfqg_stats *stats = &bfqg->stats;
++	unsigned long long now = sched_clock();
++
++	if (time_after64(now, io_start_time))
++		blkg_rwstat_add(&stats->service_time, rw, now - io_start_time);
++	if (time_after64(io_start_time, start_time))
++		blkg_rwstat_add(&stats->wait_time, rw,
++				io_start_time - start_time);
++}
++
++/* @stats = 0 */
++static void bfqg_stats_reset(struct bfqg_stats *stats)
++{
++	if (!stats)
++		return;
++
++	/* queued stats shouldn't be cleared */
++	blkg_rwstat_reset(&stats->service_bytes);
++	blkg_rwstat_reset(&stats->serviced);
++	blkg_rwstat_reset(&stats->merged);
++	blkg_rwstat_reset(&stats->service_time);
++	blkg_rwstat_reset(&stats->wait_time);
++	blkg_stat_reset(&stats->time);
++	blkg_stat_reset(&stats->unaccounted_time);
++	blkg_stat_reset(&stats->avg_queue_size_sum);
++	blkg_stat_reset(&stats->avg_queue_size_samples);
++	blkg_stat_reset(&stats->dequeue);
++	blkg_stat_reset(&stats->group_wait_time);
++	blkg_stat_reset(&stats->idle_time);
++	blkg_stat_reset(&stats->empty_time);
++}
++
++/* @to += @from */
++static void bfqg_stats_merge(struct bfqg_stats *to, struct bfqg_stats *from)
++{
++	if (!to || !from)
++		return;
++
++	/* queued stats shouldn't be cleared */
++	blkg_rwstat_add_aux(&to->service_bytes, &from->service_bytes);
++	blkg_rwstat_add_aux(&to->serviced, &from->serviced);
++	blkg_rwstat_add_aux(&to->merged, &from->merged);
++	blkg_rwstat_add_aux(&to->service_time, &from->service_time);
++	blkg_rwstat_add_aux(&to->wait_time, &from->wait_time);
++	blkg_stat_add_aux(&from->time, &from->time);
++	blkg_stat_add_aux(&to->unaccounted_time, &from->unaccounted_time);
++	blkg_stat_add_aux(&to->avg_queue_size_sum, &from->avg_queue_size_sum);
++	blkg_stat_add_aux(&to->avg_queue_size_samples, &from->avg_queue_size_samples);
++	blkg_stat_add_aux(&to->dequeue, &from->dequeue);
++	blkg_stat_add_aux(&to->group_wait_time, &from->group_wait_time);
++	blkg_stat_add_aux(&to->idle_time, &from->idle_time);
++	blkg_stat_add_aux(&to->empty_time, &from->empty_time);
++}
++
++/*
++ * Transfer @bfqg's stats to its parent's dead_stats so that the ancestors'
++ * recursive stats can still account for the amount used by this bfqg after
++ * it's gone.
 + */
-+static void bfq_group_chain_link(struct bfq_data *bfqd,
-+				 struct cgroup_subsys_state *css,
-+				 struct bfq_group *leaf)
++static void bfqg_stats_xfer_dead(struct bfq_group *bfqg)
 +{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *next, *prev = NULL;
-+	unsigned long flags;
++	struct bfq_group *parent;
 +
-+	assert_spin_locked(bfqd->queue->queue_lock);
++	if (!bfqg) /* root_group */
++		return;
 +
-+	for (; css != NULL && leaf != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+		next = leaf->bfqd;
++	parent = bfqg_parent(bfqg);
 +
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		BUG_ON(bfqg != NULL);
++	lockdep_assert_held(bfqg_to_blkg(bfqg)->q->queue_lock);
 +
-+		spin_lock_irqsave(&bgrp->lock, flags);
++	if (unlikely(!parent))
++		return;
 +
-+		rcu_assign_pointer(leaf->bfqd, bfqd);
-+		hlist_add_head_rcu(&leaf->group_node, &bgrp->group_data);
-+		hlist_add_head(&leaf->bfqd_node, &bfqd->group_list);
++	bfqg_stats_merge(&parent->dead_stats, &bfqg->stats);
++	bfqg_stats_merge(&parent->dead_stats, &bfqg->dead_stats);
++	bfqg_stats_reset(&bfqg->stats);
++	bfqg_stats_reset(&bfqg->dead_stats);
++}
 +
-+		spin_unlock_irqrestore(&bgrp->lock, flags);
++static void bfq_init_entity(struct bfq_entity *entity,
++			    struct bfq_group *bfqg)
++{
++	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +
-+		prev = leaf;
-+		leaf = next;
++	entity->weight = entity->new_weight;
++	entity->orig_weight = entity->new_weight;
++	if (bfqq) {
++		bfqq->ioprio = bfqq->new_ioprio;
++		bfqq->ioprio_class = bfqq->new_ioprio_class;
++		bfqg_get(bfqg);
 +	}
++	entity->parent = bfqg->my_entity;
++	entity->sched_data = &bfqg->sched_data;
++}
 +
-+	BUG_ON(css == NULL && leaf != NULL);
-+	if (css != NULL && prev != NULL) {
-+		bgrp = css_to_bfqio(css);
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		bfq_group_set_parent(prev, bfqg);
++static void bfqg_stats_exit(struct bfqg_stats *stats)
++{
++	blkg_rwstat_exit(&stats->service_bytes);
++	blkg_rwstat_exit(&stats->serviced);
++	blkg_rwstat_exit(&stats->merged);
++	blkg_rwstat_exit(&stats->service_time);
++	blkg_rwstat_exit(&stats->wait_time);
++	blkg_rwstat_exit(&stats->queued);
++	blkg_stat_exit(&stats->sectors);
++	blkg_stat_exit(&stats->time);
++	blkg_stat_exit(&stats->unaccounted_time);
++	blkg_stat_exit(&stats->avg_queue_size_sum);
++	blkg_stat_exit(&stats->avg_queue_size_samples);
++	blkg_stat_exit(&stats->dequeue);
++	blkg_stat_exit(&stats->group_wait_time);
++	blkg_stat_exit(&stats->idle_time);
++	blkg_stat_exit(&stats->empty_time);
++}
++
++static int bfqg_stats_init(struct bfqg_stats *stats, gfp_t gfp)
++{
++	if (blkg_rwstat_init(&stats->service_bytes, gfp) ||
++	    blkg_rwstat_init(&stats->serviced, gfp) ||
++	    blkg_rwstat_init(&stats->merged, gfp) ||
++	    blkg_rwstat_init(&stats->service_time, gfp) ||
++	    blkg_rwstat_init(&stats->wait_time, gfp) ||
++	    blkg_rwstat_init(&stats->queued, gfp) ||
++	    blkg_stat_init(&stats->sectors, gfp) ||
++	    blkg_stat_init(&stats->time, gfp) ||
++	    blkg_stat_init(&stats->unaccounted_time, gfp) ||
++	    blkg_stat_init(&stats->avg_queue_size_sum, gfp) ||
++	    blkg_stat_init(&stats->avg_queue_size_samples, gfp) ||
++	    blkg_stat_init(&stats->dequeue, gfp) ||
++	    blkg_stat_init(&stats->group_wait_time, gfp) ||
++	    blkg_stat_init(&stats->idle_time, gfp) ||
++	    blkg_stat_init(&stats->empty_time, gfp)) {
++		bfqg_stats_exit(stats);
++		return -ENOMEM;
 +	}
++
++	return 0;
 +}
 +
-+/**
-+ * bfq_find_alloc_group - return the group associated to @bfqd in @cgroup.
-+ * @bfqd: queue descriptor.
-+ * @cgroup: cgroup being searched for.
-+ *
-+ * Return a group associated to @bfqd in @cgroup, allocating one if
-+ * necessary.  When a group is returned all the cgroups in the path
-+ * to the root have a group associated to @bfqd.
-+ *
-+ * If the allocation fails, return the root group: this breaks guarantees
-+ * but is a safe fallback.  If this loss becomes a problem it can be
-+ * mitigated using the equivalent weight (given by the product of the
-+ * weights of the groups in the path from @group to the root) in the
-+ * root scheduler.
-+ *
-+ * We allocate all the missing nodes in the path from the leaf cgroup
-+ * to the root and we connect the nodes only after all the allocations
-+ * have been successful.
-+ */
-+static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
-+					      struct cgroup_subsys_state *css)
++static struct bfq_group_data *cpd_to_bfqgd(struct blkcg_policy_data *cpd)
++ {
++	return cpd ? container_of(cpd, struct bfq_group_data, pd) : NULL;
++ }
++
++static struct bfq_group_data *blkcg_to_bfqgd(struct blkcg *blkcg)
++{
++	return cpd_to_bfqgd(blkcg_to_cpd(blkcg, &blkcg_policy_bfq));
++}
++
++static void bfq_cpd_init(struct blkcg_policy_data *cpd)
++{
++	struct bfq_group_data *d = cpd_to_bfqgd(cpd);
++
++	d->weight = BFQ_DEFAULT_GRP_WEIGHT;
++}
++
++static struct blkg_policy_data *bfq_pd_alloc(gfp_t gfp, int node)
 +{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
 +	struct bfq_group *bfqg;
 +
-+	bfqg = bfqio_lookup_group(bgrp, bfqd);
-+	if (bfqg != NULL)
-+		return bfqg;
++	bfqg = kzalloc_node(sizeof(*bfqg), gfp, node);
++	if (!bfqg)
++		return NULL;
 +
-+	bfqg = bfq_group_chain_alloc(bfqd, css);
-+	if (bfqg != NULL)
-+		bfq_group_chain_link(bfqd, css, bfqg);
-+	else
++	if (bfqg_stats_init(&bfqg->stats, gfp) ||
++	    bfqg_stats_init(&bfqg->dead_stats, gfp)) {
++		kfree(bfqg);
++		return NULL;
++	}
++
++	return &bfqg->pd;
++}
++
++static void bfq_group_set_parent(struct bfq_group *bfqg,
++					struct bfq_group *parent)
++{
++	struct bfq_entity *entity;
++
++	BUG_ON(!parent);
++	BUG_ON(!bfqg);
++	BUG_ON(bfqg == parent);
++
++	entity = &bfqg->entity;
++	entity->parent = parent->my_entity;
++	entity->sched_data = &parent->sched_data;
++}
++
++static void bfq_pd_init(struct blkg_policy_data *pd)
++{
++	struct blkcg_gq *blkg = pd_to_blkg(pd);
++	struct bfq_group *bfqg = blkg_to_bfqg(blkg);
++	struct bfq_data *bfqd = blkg->q->elevator->elevator_data;
++	struct bfq_entity *entity = &bfqg->entity;
++	struct bfq_group_data *d = blkcg_to_bfqgd(blkg->blkcg);
++
++	entity->orig_weight = entity->weight = entity->new_weight = d->weight;
++	entity->my_sched_data = &bfqg->sched_data;
++	bfqg->my_entity = entity; /*
++				   * the root_group's will be set to NULL
++				   * in bfq_init_queue()
++				   */
++	bfqg->bfqd = bfqd;
++	bfqg->active_entities = 0;
++}
++
++static void bfq_pd_free(struct blkg_policy_data *pd)
++{
++	struct bfq_group *bfqg = pd_to_bfqg(pd);
++
++	bfqg_stats_exit(&bfqg->stats);
++	bfqg_stats_exit(&bfqg->dead_stats);
++
++	return kfree(bfqg);
++}
++
++/* offset delta from bfqg->stats to bfqg->dead_stats */
++static const int dead_stats_off_delta = offsetof(struct bfq_group, dead_stats) -
++					offsetof(struct bfq_group, stats);
++
++/* to be used by recursive prfill, sums live and dead stats recursively */
++static u64 bfqg_stat_pd_recursive_sum(struct blkg_policy_data *pd, int off)
++{
++	u64 sum = 0;
++
++	sum += blkg_stat_recursive_sum(pd_to_blkg(pd), &blkcg_policy_bfq, off);
++	sum += blkg_stat_recursive_sum(pd_to_blkg(pd), &blkcg_policy_bfq,
++				       off + dead_stats_off_delta);
++	return sum;
++}
++
++/* to be used by recursive prfill, sums live and dead rwstats recursively */
++static struct blkg_rwstat bfqg_rwstat_pd_recursive_sum(struct blkg_policy_data *pd,
++						       int off)
++{
++	struct blkg_rwstat a, b;
++
++	a = blkg_rwstat_recursive_sum(pd_to_blkg(pd), &blkcg_policy_bfq, off);
++	b = blkg_rwstat_recursive_sum(pd_to_blkg(pd), &blkcg_policy_bfq,
++				      off + dead_stats_off_delta);
++	blkg_rwstat_add_aux(&a, &b);
++	return a;
++}
++
++static void bfq_pd_reset_stats(struct blkg_policy_data *pd)
++{
++	struct bfq_group *bfqg = pd_to_bfqg(pd);
++
++	bfqg_stats_reset(&bfqg->stats);
++	bfqg_stats_reset(&bfqg->dead_stats);
++}
++
++static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
++					      struct blkcg *blkcg)
++{
++	struct request_queue *q = bfqd->queue;
++	struct bfq_group *bfqg = NULL, *parent;
++	struct bfq_entity *entity = NULL;
++
++	assert_spin_locked(bfqd->queue->queue_lock);
++
++	/* avoid lookup for the common case where there's no blkcg */
++	if (blkcg == &blkcg_root) {
 +		bfqg = bfqd->root_group;
++	} else {
++		struct blkcg_gq *blkg;
++
++		blkg = blkg_lookup_create(blkcg, q);
++		if (!IS_ERR(blkg))
++			bfqg = blkg_to_bfqg(blkg);
++		else /* fallback to root_group */
++			bfqg = bfqd->root_group;
++	}
++
++	BUG_ON(!bfqg);
++
++	/*
++	 * Update chain of bfq_groups as we might be handling a leaf group
++	 * which, along with some of its relatives, has not been hooked yet
++	 * to the private hierarchy of BFQ.
++	 */
++	entity = &bfqg->entity;
++	for_each_entity(entity) {
++		bfqg = container_of(entity, struct bfq_group, entity);
++		BUG_ON(!bfqg);
++		if (bfqg != bfqd->root_group) {
++			parent = bfqg_parent(bfqg);
++			if (!parent)
++				parent = bfqd->root_group;
++			BUG_ON(!parent);
++			bfq_group_set_parent(bfqg, parent);
++		}
++	}
 +
 +	return bfqg;
 +}
@@ -372,6 +662,7 @@ index 0000000..11e2f1d
 +			bfq_deactivate_bfqq(bfqd, bfqq, 0);
 +	} else if (entity->on_st)
 +		bfq_put_idle_entity(bfq_entity_service_tree(entity), entity);
++	bfqg_put(bfqq_group(bfqq));
 +
 +	/*
 +	 * Here we use a reference to bfqg.  We don't need a refcounter
@@ -380,11 +671,14 @@ index 0000000..11e2f1d
 +	 */
 +	entity->parent = bfqg->my_entity;
 +	entity->sched_data = &bfqg->sched_data;
++	bfqg_get(bfqg);
 +
-+	if (busy && resume)
-+		bfq_activate_bfqq(bfqd, bfqq);
++	if (busy) {
++		if (resume)
++			bfq_activate_bfqq(bfqd, bfqq);
++	}
 +
-+	if (bfqd->in_service_queue == NULL && !bfqd->rq_in_driver)
++	if (!bfqd->in_service_queue && !bfqd->rq_in_driver)
 +		bfq_schedule_dispatch(bfqd);
 +}
 +
@@ -392,9 +686,9 @@ index 0000000..11e2f1d
 + * __bfq_bic_change_cgroup - move @bic to @cgroup.
 + * @bfqd: the queue descriptor.
 + * @bic: the bic to move.
-+ * @cgroup: the cgroup to move to.
++ * @blkcg: the blk-cgroup to move to.
 + *
-+ * Move bic to cgroup, assuming that bfqd->queue is locked; the caller
++ * Move bic to blkcg, assuming that bfqd->queue is locked; the caller
 + * has to make sure that the reference to cgroup is valid across the call.
 + *
 + * NOTE: an alternative approach might have been to store the current
@@ -403,18 +697,17 @@ index 0000000..11e2f1d
 + */
 +static struct bfq_group *__bfq_bic_change_cgroup(struct bfq_data *bfqd,
 +						struct bfq_io_cq *bic,
-+						struct cgroup_subsys_state *css)
++						struct blkcg *blkcg)
 +{
 +	struct bfq_queue *async_bfqq = bic_to_bfqq(bic, 0);
 +	struct bfq_queue *sync_bfqq = bic_to_bfqq(bic, 1);
-+	struct bfq_entity *entity;
 +	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
++	struct bfq_entity *entity;
 +
-+	bgrp = css_to_bfqio(css);
++	lockdep_assert_held(bfqd->queue->queue_lock);
 +
-+	bfqg = bfq_find_alloc_group(bfqd, css);
-+	if (async_bfqq != NULL) {
++	bfqg = bfq_find_alloc_group(bfqd, blkcg);
++	if (async_bfqq) {
 +		entity = &async_bfqq->entity;
 +
 +		if (entity->sched_data != &bfqg->sched_data) {
@@ -426,7 +719,7 @@ index 0000000..11e2f1d
 +		}
 +	}
 +
-+	if (sync_bfqq != NULL) {
++	if (sync_bfqq) {
 +		entity = &sync_bfqq->entity;
 +		if (entity->sched_data != &bfqg->sched_data)
 +			bfq_bfqq_move(bfqd, sync_bfqq, entity, bfqg);
@@ -435,74 +728,39 @@ index 0000000..11e2f1d
 +	return bfqg;
 +}
 +
-+/**
-+ * bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bic: the bic being migrated.
-+ * @cgroup: the destination cgroup.
-+ *
-+ * When the task owning @bic is moved to @cgroup, @bic is immediately
-+ * moved into its new parent group.
-+ */
-+static void bfq_bic_change_cgroup(struct bfq_io_cq *bic,
-+				  struct cgroup_subsys_state *css)
-+{
-+	struct bfq_data *bfqd;
-+	unsigned long uninitialized_var(flags);
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	if (bfqd != NULL) {
-+		__bfq_bic_change_cgroup(bfqd, bic, css);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+}
-+
-+/**
-+ * bfq_bic_update_cgroup - update the cgroup of @bic.
-+ * @bic: the @bic to update.
-+ *
-+ * Make sure that @bic is enqueued in the cgroup of the current task.
-+ * We need this in addition to moving bics during the cgroup attach
-+ * phase because the task owning @bic could be at its first disk
-+ * access or we may end up in the root cgroup as the result of a
-+ * memory allocation failure and here we try to move to the right
-+ * group.
-+ *
-+ * Must be called under the queue lock.  It is safe to use the returned
-+ * value even after the rcu_read_unlock() as the migration/destruction
-+ * paths act under the queue lock too.  IOW it is impossible to race with
-+ * group migration/destruction and end up with an invalid group as:
-+ *   a) here cgroup has not yet been destroyed, nor its destroy callback
-+ *      has started execution, as current holds a reference to it,
-+ *   b) if it is destroyed after rcu_read_unlock() [after current is
-+ *      migrated to a different cgroup] its attach() callback will have
-+ *      taken care of remove all the references to the old cgroup data.
-+ */
-+static struct bfq_group *bfq_bic_update_cgroup(struct bfq_io_cq *bic)
++static void bfq_bic_update_cgroup(struct bfq_io_cq *bic, struct bio *bio)
 +{
 +	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	struct bfq_group *bfqg;
-+	struct cgroup_subsys_state *css;
-+
-+	BUG_ON(bfqd == NULL);
++	struct blkcg *blkcg;
++	struct bfq_group *bfqg = NULL;
++	uint64_t id;
 +
 +	rcu_read_lock();
-+	css = task_css(current, bfqio_cgrp_id);
-+	bfqg = __bfq_bic_change_cgroup(bfqd, bic, css);
++	blkcg = bio_blkcg(bio);
++	id = blkcg->css.serial_nr;
 +	rcu_read_unlock();
 +
-+	return bfqg;
++	/*
++	 * Check whether blkcg has changed.  The condition may trigger
++	 * spuriously on a newly created cic but there's no harm.
++	 */
++	if (unlikely(!bfqd) || likely(bic->blkcg_id == id))
++		return;
++
++	bfqg = __bfq_bic_change_cgroup(bfqd, bic, blkcg);
++	BUG_ON(!bfqg);
++	bic->blkcg_id = id;
 +}
 +
 +/**
 + * bfq_flush_idle_tree - deactivate any entity on the idle tree of @st.
 + * @st: the service tree being flushed.
 + */
-+static inline void bfq_flush_idle_tree(struct bfq_service_tree *st)
++static void bfq_flush_idle_tree(struct bfq_service_tree *st)
 +{
 +	struct bfq_entity *entity = st->first_idle;
 +
-+	for (; entity != NULL; entity = st->first_idle)
++	for (; entity ; entity = st->first_idle)
 +		__bfq_deactivate_entity(entity, 0);
 +}
 +
@@ -511,12 +769,12 @@ index 0000000..11e2f1d
 + * @bfqd: the device data structure with the root group.
 + * @entity: the entity to move.
 + */
-+static inline void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
-+					    struct bfq_entity *entity)
++static void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
++				     struct bfq_entity *entity)
 +{
 +	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +
-+	BUG_ON(bfqq == NULL);
++	BUG_ON(!bfqq);
 +	bfq_bfqq_move(bfqd, bfqq, entity, bfqd->root_group);
 +	return;
 +}
@@ -530,9 +788,9 @@ index 0000000..11e2f1d
 + *
 + * Needs queue_lock to be taken and reference to be valid over the call.
 + */
-+static inline void bfq_reparent_active_entities(struct bfq_data *bfqd,
-+						struct bfq_group *bfqg,
-+						struct bfq_service_tree *st)
++static void bfq_reparent_active_entities(struct bfq_data *bfqd,
++					 struct bfq_group *bfqg,
++					 struct bfq_service_tree *st)
 +{
 +	struct rb_root *active = &st->active;
 +	struct bfq_entity *entity = NULL;
@@ -540,10 +798,10 @@ index 0000000..11e2f1d
 +	if (!RB_EMPTY_ROOT(&st->active))
 +		entity = bfq_entity_of(rb_first(active));
 +
-+	for (; entity != NULL; entity = bfq_entity_of(rb_first(active)))
++	for (; entity ; entity = bfq_entity_of(rb_first(active)))
 +		bfq_reparent_leaf_entity(bfqd, entity);
 +
-+	if (bfqg->sched_data.in_service_entity != NULL)
++	if (bfqg->sched_data.in_service_entity)
 +		bfq_reparent_leaf_entity(bfqd,
 +			bfqg->sched_data.in_service_entity);
 +
@@ -552,28 +810,37 @@ index 0000000..11e2f1d
 +
 +/**
 + * bfq_destroy_group - destroy @bfqg.
-+ * @bgrp: the bfqio_cgroup containing @bfqg.
 + * @bfqg: the group being destroyed.
 + *
 + * Destroy @bfqg, making sure that it is not referenced from its parent.
++ * blkio already grabs the queue_lock for us, so no need to use RCU-based magic
 + */
-+static void bfq_destroy_group(struct bfqio_cgroup *bgrp, struct bfq_group *bfqg)
++static void bfq_pd_offline(struct blkg_policy_data *pd)
 +{
-+	struct bfq_data *bfqd;
 +	struct bfq_service_tree *st;
-+	struct bfq_entity *entity = bfqg->my_entity;
-+	unsigned long uninitialized_var(flags);
++	struct bfq_group *bfqg;
++	struct bfq_data *bfqd;
++	struct bfq_entity *entity;
 +	int i;
 +
-+	hlist_del(&bfqg->group_node);
++	BUG_ON(!pd);
++	bfqg = pd_to_bfqg(pd);
++	BUG_ON(!bfqg);
++	bfqd = bfqg->bfqd;
++	BUG_ON(bfqd && !bfqd->root_group);
++
++	entity = bfqg->my_entity;
++
++	if (!entity) /* root group */
++		return;
 +
 +	/*
 +	 * Empty all service_trees belonging to this group before
 +	 * deactivating the group itself.
 +	 */
 +	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++) {
++		BUG_ON(!bfqg->sched_data.service_tree);
 +		st = bfqg->sched_data.service_tree + i;
-+
 +		/*
 +		 * The idle tree may still contain bfq_queues belonging
 +		 * to exited task because they never migrated to a different
@@ -594,389 +861,388 @@ index 0000000..11e2f1d
 +		 * There is no need to put the sync queues, as the
 +		 * scheduler has taken no reference.
 +		 */
-+		bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+		if (bfqd != NULL) {
-+			bfq_reparent_active_entities(bfqd, bfqg, st);
-+			bfq_put_bfqd_unlock(bfqd, &flags);
-+		}
++		bfq_reparent_active_entities(bfqd, bfqg, st);
 +		BUG_ON(!RB_EMPTY_ROOT(&st->active));
 +		BUG_ON(!RB_EMPTY_ROOT(&st->idle));
 +	}
-+	BUG_ON(bfqg->sched_data.next_in_service != NULL);
-+	BUG_ON(bfqg->sched_data.in_service_entity != NULL);
++	BUG_ON(bfqg->sched_data.next_in_service);
++	BUG_ON(bfqg->sched_data.in_service_entity);
 +
-+	/*
-+	 * We may race with device destruction, take extra care when
-+	 * dereferencing bfqg->bfqd.
-+	 */
-+	bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+	if (bfqd != NULL) {
-+		hlist_del(&bfqg->bfqd_node);
-+		__bfq_deactivate_entity(entity, 0);
-+		bfq_put_async_queues(bfqd, bfqg);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+	BUG_ON(entity->tree != NULL);
++	__bfq_deactivate_entity(entity, 0);
++	bfq_put_async_queues(bfqd, bfqg);
++	BUG_ON(entity->tree);
 +
-+	/*
-+	 * No need to defer the kfree() to the end of the RCU grace
-+	 * period: we are called from the destroy() callback of our
-+	 * cgroup, so we can be sure that no one is a) still using
-+	 * this cgroup or b) doing lookups in it.
-+	 */
-+	kfree(bfqg);
++	bfqg_stats_xfer_dead(bfqg);
 +}
 +
 +static void bfq_end_wr_async(struct bfq_data *bfqd)
 +{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node)
-+		bfq_end_wr_async_queues(bfqd, bfqg);
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+/**
-+ * bfq_disconnect_groups - disconnect @bfqd from all its groups.
-+ * @bfqd: the device descriptor being exited.
-+ *
-+ * When the device exits we just make sure that no lookup can return
-+ * the now unused group structures.  They will be deallocated on cgroup
-+ * destruction.
-+ */
-+static void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	bfq_log(bfqd, "disconnect_groups beginning");
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node) {
-+		hlist_del(&bfqg->bfqd_node);
-+
-+		__bfq_deactivate_entity(bfqg->my_entity, 0);
++	struct blkcg_gq *blkg;
 +
-+		/*
-+		 * Don't remove from the group hash, just set an
-+		 * invalid key.  No lookups can race with the
-+		 * assignment as bfqd is being destroyed; this
-+		 * implies also that new elements cannot be added
-+		 * to the list.
-+		 */
-+		rcu_assign_pointer(bfqg->bfqd, NULL);
++	list_for_each_entry(blkg, &bfqd->queue->blkg_list, q_node) {
++		struct bfq_group *bfqg = blkg_to_bfqg(blkg);
 +
-+		bfq_log(bfqd, "disconnect_groups: put async for group %p",
-+			bfqg);
-+		bfq_put_async_queues(bfqd, bfqg);
++		bfq_end_wr_async_queues(bfqd, bfqg);
 +	}
++	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
 +}
 +
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	struct bfqio_cgroup *bgrp = &bfqio_root_cgroup;
-+	struct bfq_group *bfqg = bfqd->root_group;
-+
-+	bfq_put_async_queues(bfqd, bfqg);
-+
-+	spin_lock_irq(&bgrp->lock);
-+	hlist_del_rcu(&bfqg->group_node);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	/*
-+	 * No need to synchronize_rcu() here: since the device is gone
-+	 * there cannot be any read-side access to its root_group.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
++static u64 bfqio_cgroup_weight_read(struct cgroup_subsys_state *css,
++				       struct cftype *cftype)
 +{
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+	int i;
-+
-+	bfqg = kzalloc_node(sizeof(*bfqg), GFP_KERNEL, node);
-+	if (bfqg == NULL)
-+		return NULL;
++	struct blkcg *blkcg = css_to_blkcg(css);
++	struct bfq_group_data *bfqgd = blkcg_to_bfqgd(blkcg);
++	int ret = -EINVAL;
 +
-+	bfqg->entity.parent = NULL;
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	bgrp = &bfqio_root_cgroup;
-+	spin_lock_irq(&bgrp->lock);
-+	rcu_assign_pointer(bfqg->bfqd, bfqd);
-+	hlist_add_head_rcu(&bfqg->group_node, &bgrp->group_data);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	return bfqg;
-+}
-+
-+#define SHOW_FUNCTION(__VAR)						\
-+static u64 bfqio_cgroup_##__VAR##_read(struct cgroup_subsys_state *css, \
-+				       struct cftype *cftype)		\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	u64 ret = -ENODEV;						\
-+									\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	ret = bgrp->__VAR;						\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
++	spin_lock_irq(&blkcg->lock);
++	ret = bfqgd->weight;
++	spin_unlock_irq(&blkcg->lock);
 +
-+SHOW_FUNCTION(weight);
-+SHOW_FUNCTION(ioprio);
-+SHOW_FUNCTION(ioprio_class);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__VAR, __MIN, __MAX)				\
-+static int bfqio_cgroup_##__VAR##_write(struct cgroup_subsys_state *css,\
-+					struct cftype *cftype,		\
-+					u64 val)			\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	struct bfq_group *bfqg;						\
-+	int ret = -EINVAL;						\
-+									\
-+	if (val < (__MIN) || val > (__MAX))				\
-+		return ret;						\
-+									\
-+	ret = -ENODEV;							\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+	ret = 0;							\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	bgrp->__VAR = (unsigned short)val;				\
-+	hlist_for_each_entry(bfqg, &bgrp->group_data, group_node) {	\
-+		/*							\
-+		 * Setting the ioprio_changed flag of the entity        \
-+		 * to 1 with new_##__VAR == ##__VAR would re-set        \
-+		 * the value of the weight to its ioprio mapping.       \
-+		 * Set the flag only if necessary.			\
-+		 */							\
-+		if ((unsigned short)val != bfqg->entity.new_##__VAR) {  \
-+			bfqg->entity.new_##__VAR = (unsigned short)val; \
-+			/*						\
-+			 * Make sure that the above new value has been	\
-+			 * stored in bfqg->entity.new_##__VAR before	\
-+			 * setting the ioprio_changed flag. In fact,	\
-+			 * this flag may be read asynchronously (in	\
-+			 * critical sections protected by a different	\
-+			 * lock than that held here), and finding this	\
-+			 * flag set may cause the execution of the code	\
-+			 * for updating parameters whose value may	\
-+			 * depend also on bfqg->entity.new_##__VAR (in	\
-+			 * __bfq_entity_update_weight_prio).		\
-+			 * This barrier makes sure that the new value	\
-+			 * of bfqg->entity.new_##__VAR is correctly	\
-+			 * seen in that code.				\
-+			 */						\
-+			smp_wmb();                                      \
-+			bfqg->entity.ioprio_changed = 1;                \
-+		}							\
-+	}								\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
++	return ret;
 +}
 +
-+STORE_FUNCTION(weight, BFQ_MIN_WEIGHT, BFQ_MAX_WEIGHT);
-+STORE_FUNCTION(ioprio, 0, IOPRIO_BE_NR - 1);
-+STORE_FUNCTION(ioprio_class, IOPRIO_CLASS_RT, IOPRIO_CLASS_IDLE);
-+#undef STORE_FUNCTION
-+
-+static struct cftype bfqio_files[] = {
-+	{
-+		.name = "weight",
-+		.read_u64 = bfqio_cgroup_weight_read,
-+		.write_u64 = bfqio_cgroup_weight_write,
-+	},
-+	{
-+		.name = "ioprio",
-+		.read_u64 = bfqio_cgroup_ioprio_read,
-+		.write_u64 = bfqio_cgroup_ioprio_write,
-+	},
-+	{
-+		.name = "ioprio_class",
-+		.read_u64 = bfqio_cgroup_ioprio_class_read,
-+		.write_u64 = bfqio_cgroup_ioprio_class_write,
-+	},
-+	{ },	/* terminate */
-+};
-+
-+static struct cgroup_subsys_state *bfqio_create(struct cgroup_subsys_state
-+						*parent_css)
++static int bfqio_cgroup_weight_read_dfl(struct seq_file *sf, void *v)
 +{
-+	struct bfqio_cgroup *bgrp;
++	struct blkcg *blkcg = css_to_blkcg(seq_css(sf));
++	struct bfq_group_data *bfqgd = blkcg_to_bfqgd(blkcg);
 +
-+	if (parent_css != NULL) {
-+		bgrp = kzalloc(sizeof(*bgrp), GFP_KERNEL);
-+		if (bgrp == NULL)
-+			return ERR_PTR(-ENOMEM);
-+	} else
-+		bgrp = &bfqio_root_cgroup;
-+
-+	spin_lock_init(&bgrp->lock);
-+	INIT_HLIST_HEAD(&bgrp->group_data);
-+	bgrp->ioprio = BFQ_DEFAULT_GRP_IOPRIO;
-+	bgrp->ioprio_class = BFQ_DEFAULT_GRP_CLASS;
++	spin_lock_irq(&blkcg->lock);
++	seq_printf(sf, "%u\n", bfqgd->weight);
++	spin_unlock_irq(&blkcg->lock);
 +
-+	return &bgrp->css;
++	return 0;
 +}
 +
-+/*
-+ * We cannot support shared io contexts, as we have no means to support
-+ * two tasks with the same ioc in two different groups without major rework
-+ * of the main bic/bfqq data structures.  By now we allow a task to change
-+ * its cgroup only if it's the only owner of its ioc; the drawback of this
-+ * behavior is that a group containing a task that forked using CLONE_IO
-+ * will not be destroyed until the tasks sharing the ioc die.
-+ */
-+static int bfqio_can_attach(struct cgroup_subsys_state *css,
-+			    struct cgroup_taskset *tset)
++static int bfqio_cgroup_weight_write(struct cgroup_subsys_state *css,
++					struct cftype *cftype,
++					u64 val)
 +{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	int ret = 0;
++	struct blkcg *blkcg = css_to_blkcg(css);
++	struct bfq_group_data *bfqgd = blkcg_to_bfqgd(blkcg);
++	struct blkcg_gq *blkg;
++	int ret = -EINVAL;
 +
-+	cgroup_taskset_for_each(task, tset) {
++	if (val < BFQ_MIN_WEIGHT || val > BFQ_MAX_WEIGHT)
++		return ret;
++
++	ret = 0;
++	spin_lock_irq(&blkcg->lock);
++	bfqgd->weight = (unsigned short)val;
++	hlist_for_each_entry(blkg, &blkcg->blkg_list, blkcg_node) {
++		struct bfq_group *bfqg = blkg_to_bfqg(blkg);
++		if (!bfqg)
++			continue;
 +		/*
-+		 * task_lock() is needed to avoid races with
-+		 * exit_io_context()
++		 * Setting the prio_changed flag of the entity
++		 * to 1 with new_weight == weight would re-set
++		 * the value of the weight to its ioprio mapping.
++		 * Set the flag only if necessary.
 +		 */
-+		task_lock(task);
-+		ioc = task->io_context;
-+		if (ioc != NULL && atomic_read(&ioc->nr_tasks) > 1)
++		if ((unsigned short)val != bfqg->entity.new_weight) {
++			bfqg->entity.new_weight = (unsigned short)val;
 +			/*
-+			 * ioc == NULL means that the task is either too
-+			 * young or exiting: if it has still no ioc the
-+			 * ioc can't be shared, if the task is exiting the
-+			 * attach will fail anyway, no matter what we
-+			 * return here.
++			 * Make sure that the above new value has been
++			 * stored in bfqg->entity.new_weight before
++			 * setting the prio_changed flag. In fact,
++			 * this flag may be read asynchronously (in
++			 * critical sections protected by a different
++			 * lock than that held here), and finding this
++			 * flag set may cause the execution of the code
++			 * for updating parameters whose value may
++			 * depend also on bfqg->entity.new_weight (in
++			 * __bfq_entity_update_weight_prio).
++			 * This barrier makes sure that the new value
++			 * of bfqg->entity.new_weight is correctly
++			 * seen in that code.
 +			 */
-+			ret = -EINVAL;
-+		task_unlock(task);
-+		if (ret)
-+			break;
++			smp_wmb();
++			bfqg->entity.prio_changed = 1;
++		}
 +	}
++	spin_unlock_irq(&blkcg->lock);
 +
 +	return ret;
 +}
 +
-+static void bfqio_attach(struct cgroup_subsys_state *css,
-+			 struct cgroup_taskset *tset)
++static ssize_t bfqio_cgroup_weight_write_dfl(struct kernfs_open_file *of,
++					     char *buf, size_t nbytes,
++					     loff_t off)
 +{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	struct io_cq *icq;
++	/* First unsigned long found in the file is used */
++	return bfqio_cgroup_weight_write(of_css(of), NULL,
++					 simple_strtoull(strim(buf), NULL, 0));
++}
 +
-+	/*
-+	 * IMPORTANT NOTE: The move of more than one process at a time to a
-+	 * new group has not yet been tested.
-+	 */
-+	cgroup_taskset_for_each(task, tset) {
-+		ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);
-+		if (ioc) {
-+			/*
-+			 * Handle cgroup change here.
-+			 */
-+			rcu_read_lock();
-+			hlist_for_each_entry_rcu(icq, &ioc->icq_list, ioc_node)
-+				if (!strncmp(
-+					icq->q->elevator->type->elevator_name,
-+					"bfq", ELV_NAME_MAX))
-+					bfq_bic_change_cgroup(icq_to_bic(icq),
-+							      css);
-+			rcu_read_unlock();
-+			put_io_context(ioc);
-+		}
-+	}
++static int bfqg_print_stat(struct seq_file *sf, void *v)
++{
++	blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), blkg_prfill_stat,
++			  &blkcg_policy_bfq, seq_cft(sf)->private, false);
++	return 0;
 +}
 +
-+static void bfqio_destroy(struct cgroup_subsys_state *css)
++static int bfqg_print_rwstat(struct seq_file *sf, void *v)
 +{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
++	blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), blkg_prfill_rwstat,
++			  &blkcg_policy_bfq, seq_cft(sf)->private, true);
++	return 0;
++}
 +
-+	/*
-+	 * Since we are destroying the cgroup, there are no more tasks
-+	 * referencing it, and all the RCU grace periods that may have
-+	 * referenced it are ended (as the destruction of the parent
-+	 * cgroup is RCU-safe); bgrp->group_data will not be accessed by
-+	 * anything else and we don't need any synchronization.
-+	 */
-+	hlist_for_each_entry_safe(bfqg, tmp, &bgrp->group_data, group_node)
-+		bfq_destroy_group(bgrp, bfqg);
++static u64 bfqg_prfill_stat_recursive(struct seq_file *sf,
++				      struct blkg_policy_data *pd, int off)
++{
++	u64 sum = bfqg_stat_pd_recursive_sum(pd, off);
++
++	return __blkg_prfill_u64(sf, pd, sum);
++}
++
++static u64 bfqg_prfill_rwstat_recursive(struct seq_file *sf,
++					struct blkg_policy_data *pd, int off)
++{
++	struct blkg_rwstat sum = bfqg_rwstat_pd_recursive_sum(pd, off);
++
++	return __blkg_prfill_rwstat(sf, pd, &sum);
++}
 +
-+	BUG_ON(!hlist_empty(&bgrp->group_data));
++static int bfqg_print_stat_recursive(struct seq_file *sf, void *v)
++{
++	blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
++			  bfqg_prfill_stat_recursive, &blkcg_policy_bfq,
++			  seq_cft(sf)->private, false);
++	return 0;
++}
 +
-+	kfree(bgrp);
++static int bfqg_print_rwstat_recursive(struct seq_file *sf, void *v)
++{
++	blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
++			  bfqg_prfill_rwstat_recursive, &blkcg_policy_bfq,
++			  seq_cft(sf)->private, true);
++	return 0;
 +}
 +
-+static int bfqio_css_online(struct cgroup_subsys_state *css)
++static u64 bfqg_prfill_avg_queue_size(struct seq_file *sf,
++				      struct blkg_policy_data *pd, int off)
 +{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
++	struct bfq_group *bfqg = pd_to_bfqg(pd);
++	u64 samples = blkg_stat_read(&bfqg->stats.avg_queue_size_samples);
++	u64 v = 0;
 +
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = true;
-+	mutex_unlock(&bfqio_mutex);
++	if (samples) {
++		v = blkg_stat_read(&bfqg->stats.avg_queue_size_sum);
++		v = div64_u64(v, samples);
++	}
++	__blkg_prfill_u64(sf, pd, v);
++	return 0;
++}
 +
++/* print avg_queue_size */
++static int bfqg_print_avg_queue_size(struct seq_file *sf, void *v)
++{
++	blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
++			  bfqg_prfill_avg_queue_size, &blkcg_policy_bfq,
++			  0, false);
 +	return 0;
 +}
 +
-+static void bfqio_css_offline(struct cgroup_subsys_state *css)
++static struct bfq_group *bfq_create_group_hierarchy(struct bfq_data *bfqd, int node)
 +{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
++	int ret;
++
++	ret = blkcg_activate_policy(bfqd->queue, &blkcg_policy_bfq);
++	if (ret)
++		return NULL;
++
++        return blkg_to_bfqg(bfqd->queue->root_blkg);
++}
++
++static struct blkcg_policy_data *bfq_cpd_alloc(gfp_t gfp)
++{
++        struct bfq_group_data *bgd;
++
++        bgd = kzalloc(sizeof(*bgd), GFP_KERNEL);
++        if (!bgd)
++                return NULL;
++        return &bgd->pd;
++}
 +
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = false;
-+	mutex_unlock(&bfqio_mutex);
++static void bfq_cpd_free(struct blkcg_policy_data *cpd)
++{
++        kfree(cpd_to_bfqgd(cpd));
 +}
 +
-+struct cgroup_subsys bfqio_cgrp_subsys = {
-+	.css_alloc = bfqio_create,
-+	.css_online = bfqio_css_online,
-+	.css_offline = bfqio_css_offline,
-+	.can_attach = bfqio_can_attach,
-+	.attach = bfqio_attach,
-+	.css_free = bfqio_destroy,
-+	.legacy_cftypes = bfqio_files,
++static struct cftype bfqio_files_dfl[] = {
++	{
++		.name = "weight",
++		.flags = CFTYPE_NOT_ON_ROOT,
++		.seq_show = bfqio_cgroup_weight_read_dfl,
++		.write = bfqio_cgroup_weight_write_dfl,
++	},
++	{} /* terminate */
++};
++
++static struct cftype bfqio_files[] = {
++	{
++		.name = "bfq.weight",
++		.read_u64 = bfqio_cgroup_weight_read,
++		.write_u64 = bfqio_cgroup_weight_write,
++	},
++	/* statistics, cover only the tasks in the bfqg */
++	{
++		.name = "bfq.time",
++		.private = offsetof(struct bfq_group, stats.time),
++		.seq_show = bfqg_print_stat,
++	},
++	{
++		.name = "bfq.sectors",
++		.private = offsetof(struct bfq_group, stats.sectors),
++		.seq_show = bfqg_print_stat,
++	},
++	{
++		.name = "bfq.io_service_bytes",
++		.private = offsetof(struct bfq_group, stats.service_bytes),
++		.seq_show = bfqg_print_rwstat,
++	},
++	{
++		.name = "bfq.io_serviced",
++		.private = offsetof(struct bfq_group, stats.serviced),
++		.seq_show = bfqg_print_rwstat,
++	},
++	{
++		.name = "bfq.io_service_time",
++		.private = offsetof(struct bfq_group, stats.service_time),
++		.seq_show = bfqg_print_rwstat,
++	},
++	{
++		.name = "bfq.io_wait_time",
++		.private = offsetof(struct bfq_group, stats.wait_time),
++		.seq_show = bfqg_print_rwstat,
++	},
++	{
++		.name = "bfq.io_merged",
++		.private = offsetof(struct bfq_group, stats.merged),
++		.seq_show = bfqg_print_rwstat,
++	},
++	{
++		.name = "bfq.io_queued",
++		.private = offsetof(struct bfq_group, stats.queued),
++		.seq_show = bfqg_print_rwstat,
++	},
++
++	/* the same statictics which cover the bfqg and its descendants */
++	{
++		.name = "bfq.time_recursive",
++		.private = offsetof(struct bfq_group, stats.time),
++		.seq_show = bfqg_print_stat_recursive,
++	},
++	{
++		.name = "bfq.sectors_recursive",
++		.private = offsetof(struct bfq_group, stats.sectors),
++		.seq_show = bfqg_print_stat_recursive,
++	},
++	{
++		.name = "bfq.io_service_bytes_recursive",
++		.private = offsetof(struct bfq_group, stats.service_bytes),
++		.seq_show = bfqg_print_rwstat_recursive,
++	},
++	{
++		.name = "bfq.io_serviced_recursive",
++		.private = offsetof(struct bfq_group, stats.serviced),
++		.seq_show = bfqg_print_rwstat_recursive,
++	},
++	{
++		.name = "bfq.io_service_time_recursive",
++		.private = offsetof(struct bfq_group, stats.service_time),
++		.seq_show = bfqg_print_rwstat_recursive,
++	},
++	{
++		.name = "bfq.io_wait_time_recursive",
++		.private = offsetof(struct bfq_group, stats.wait_time),
++		.seq_show = bfqg_print_rwstat_recursive,
++	},
++	{
++		.name = "bfq.io_merged_recursive",
++		.private = offsetof(struct bfq_group, stats.merged),
++		.seq_show = bfqg_print_rwstat_recursive,
++	},
++	{
++		.name = "bfq.io_queued_recursive",
++		.private = offsetof(struct bfq_group, stats.queued),
++		.seq_show = bfqg_print_rwstat_recursive,
++	},
++	{
++		.name = "bfq.avg_queue_size",
++		.seq_show = bfqg_print_avg_queue_size,
++	},
++	{
++		.name = "bfq.group_wait_time",
++		.private = offsetof(struct bfq_group, stats.group_wait_time),
++		.seq_show = bfqg_print_stat,
++	},
++	{
++		.name = "bfq.idle_time",
++		.private = offsetof(struct bfq_group, stats.idle_time),
++		.seq_show = bfqg_print_stat,
++	},
++	{
++		.name = "bfq.empty_time",
++		.private = offsetof(struct bfq_group, stats.empty_time),
++		.seq_show = bfqg_print_stat,
++	},
++	{
++		.name = "bfq.dequeue",
++		.private = offsetof(struct bfq_group, stats.dequeue),
++		.seq_show = bfqg_print_stat,
++	},
++	{
++		.name = "bfq.unaccounted_time",
++		.private = offsetof(struct bfq_group, stats.unaccounted_time),
++		.seq_show = bfqg_print_stat,
++	},
++	{ }	/* terminate */
++};
++
++static struct blkcg_policy blkcg_policy_bfq = {
++       .dfl_cftypes            = bfqio_files_dfl,
++       .legacy_cftypes         = bfqio_files,
++
++       .pd_alloc_fn            = bfq_pd_alloc,
++       .pd_init_fn             = bfq_pd_init,
++       .pd_offline_fn          = bfq_pd_offline,
++       .pd_free_fn             = bfq_pd_free,
++       .pd_reset_stats_fn      = bfq_pd_reset_stats,
++
++       .cpd_alloc_fn           = bfq_cpd_alloc,
++       .cpd_init_fn            = bfq_cpd_init,
++       .cpd_bind_fn	       = bfq_cpd_init,
++       .cpd_free_fn            = bfq_cpd_free,
++
 +};
++
 +#else
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
++
++static void bfq_init_entity(struct bfq_entity *entity,
++			    struct bfq_group *bfqg)
 +{
++	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +	entity->weight = entity->new_weight;
 +	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
++	if (bfqq) {
++		bfqq->ioprio = bfqq->new_ioprio;
++		bfqq->ioprio_class = bfqq->new_ioprio_class;
++	}
 +	entity->sched_data = &bfqg->sched_data;
 +}
 +
-+static inline struct bfq_group *
-+bfq_bic_update_cgroup(struct bfq_io_cq *bic)
++static struct bfq_group *
++bfq_bic_update_cgroup(struct bfq_io_cq *bic, struct bio *bio)
 +{
 +	struct bfq_data *bfqd = bic_to_bfqd(bic);
 +	return bfqd->root_group;
 +}
 +
-+static inline void bfq_bfqq_move(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq,
-+				 struct bfq_entity *entity,
-+				 struct bfq_group *bfqg)
++static void bfq_bfqq_move(struct bfq_data *bfqd,
++			  struct bfq_queue *bfqq,
++			  struct bfq_entity *entity,
++			  struct bfq_group *bfqg)
 +{
 +}
 +
@@ -985,23 +1251,24 @@ index 0000000..11e2f1d
 +	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
 +}
 +
-+static inline void bfq_disconnect_groups(struct bfq_data *bfqd)
++static void bfq_disconnect_groups(struct bfq_data *bfqd)
 +{
 +	bfq_put_async_queues(bfqd, bfqd->root_group);
 +}
 +
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
++static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
++                                              struct blkcg *blkcg)
 +{
-+	kfree(bfqd->root_group);
++	return bfqd->root_group;
 +}
 +
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
++static struct bfq_group *bfq_create_group_hierarchy(struct bfq_data *bfqd, int node)
 +{
 +	struct bfq_group *bfqg;
 +	int i;
 +
 +	bfqg = kmalloc_node(sizeof(*bfqg), GFP_KERNEL | __GFP_ZERO, node);
-+	if (bfqg == NULL)
++	if (!bfqg)
 +		return NULL;
 +
 +	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
@@ -1012,7 +1279,7 @@ index 0000000..11e2f1d
 +#endif
 diff --git a/block/bfq-ioc.c b/block/bfq-ioc.c
 new file mode 100644
-index 0000000..7f6b000
+index 0000000..fb7bb8f
 --- /dev/null
 +++ b/block/bfq-ioc.c
 @@ -0,0 +1,36 @@
@@ -1032,7 +1299,7 @@ index 0000000..7f6b000
 + * icq_to_bic - convert iocontext queue structure to bfq_io_cq.
 + * @icq: the iocontext queue.
 + */
-+static inline struct bfq_io_cq *icq_to_bic(struct io_cq *icq)
++static struct bfq_io_cq *icq_to_bic(struct io_cq *icq)
 +{
 +	/* bic->icq is the first member, %NULL will convert to %NULL */
 +	return container_of(icq, struct bfq_io_cq, icq);
@@ -1045,8 +1312,8 @@ index 0000000..7f6b000
 + *
 + * Queue lock must be held.
 + */
-+static inline struct bfq_io_cq *bfq_bic_lookup(struct bfq_data *bfqd,
-+					       struct io_context *ioc)
++static struct bfq_io_cq *bfq_bic_lookup(struct bfq_data *bfqd,
++					struct io_context *ioc)
 +{
 +	if (ioc)
 +		return icq_to_bic(ioc_lookup_icq(ioc, bfqd->queue));
@@ -1054,10 +1321,10 @@ index 0000000..7f6b000
 +}
 diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
 new file mode 100644
-index 0000000..773b2ee
+index 0000000..f9787a6
 --- /dev/null
 +++ b/block/bfq-iosched.c
-@@ -0,0 +1,3898 @@
+@@ -0,0 +1,3754 @@
 +/*
 + * Budget Fair Queueing (BFQ) disk scheduler.
 + *
@@ -1142,6 +1409,9 @@ index 0000000..773b2ee
 +/* Idling period duration, in jiffies. */
 +static int bfq_slice_idle = HZ / 125;
 +
++/* Minimum number of assigned budgets for which stats are safe to compute. */
++static const int bfq_stats_min_budgets = 194;
++
 +/* Default maximum budget values, in sectors and number of requests. */
 +static const int bfq_default_max_budget = 16 * 1024;
 +static const int bfq_max_budget_async_rq = 4;
@@ -1223,38 +1493,22 @@ index 0000000..773b2ee
 +#define RQ_BIC(rq)		((struct bfq_io_cq *) (rq)->elv.priv[0])
 +#define RQ_BFQQ(rq)		((rq)->elv.priv[1])
 +
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd);
++static void bfq_schedule_dispatch(struct bfq_data *bfqd);
 +
 +#include "bfq-ioc.c"
 +#include "bfq-sched.c"
 +#include "bfq-cgroup.c"
 +
-+#define bfq_class_idle(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_IDLE)
-+#define bfq_class_rt(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_RT)
++#define bfq_class_idle(bfqq)	((bfqq)->ioprio_class == IOPRIO_CLASS_IDLE)
++#define bfq_class_rt(bfqq)	((bfqq)->ioprio_class == IOPRIO_CLASS_RT)
 +
 +#define bfq_sample_valid(samples)	((samples) > 80)
 +
 +/*
-+ * The following macro groups conditions that need to be evaluated when
-+ * checking if existing queues and groups form a symmetric scenario
-+ * and therefore idling can be reduced or disabled for some of the
-+ * queues. See the comment to the function bfq_bfqq_must_not_expire()
-+ * for further details.
-+ */
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define symmetric_scenario	  (!bfqd->active_numerous_groups && \
-+				   !bfq_differentiated_weights(bfqd))
-+#else
-+#define symmetric_scenario	  (!bfq_differentiated_weights(bfqd))
-+#endif
-+
-+/*
 + * We regard a request as SYNC, if either it's a read or has the SYNC bit
 + * set (in which case it could also be a direct WRITE).
 + */
-+static inline int bfq_bio_sync(struct bio *bio)
++static int bfq_bio_sync(struct bio *bio)
 +{
 +	if (bio_data_dir(bio) == READ || (bio->bi_rw & REQ_SYNC))
 +		return 1;
@@ -1266,7 +1520,7 @@ index 0000000..773b2ee
 + * Scheduler run of queue, if there are requests pending and no one in the
 + * driver that will restart queueing.
 + */
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd)
++static void bfq_schedule_dispatch(struct bfq_data *bfqd)
 +{
 +	if (bfqd->queued != 0) {
 +		bfq_log(bfqd, "schedule dispatch");
@@ -1290,9 +1544,9 @@ index 0000000..773b2ee
 +#define BFQ_RQ2_WRAP	0x02 /* request 2 wraps */
 +	unsigned wrap = 0; /* bit mask: requests behind the disk head? */
 +
-+	if (rq1 == NULL || rq1 == rq2)
++	if (!rq1 || rq1 == rq2)
 +		return rq2;
-+	if (rq2 == NULL)
++	if (!rq2)
 +		return rq1;
 +
 +	if (rq_is_sync(rq1) && !rq_is_sync(rq2))
@@ -1369,76 +1623,10 @@ index 0000000..773b2ee
 +	}
 +}
 +
-+static struct bfq_queue *
-+bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
-+		     sector_t sector, struct rb_node **ret_parent,
-+		     struct rb_node ***rb_link)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	parent = NULL;
-+	p = &root->rb_node;
-+	while (*p) {
-+		struct rb_node **n;
-+
-+		parent = *p;
-+		bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+
-+		/*
-+		 * Sort strictly based on sector. Smallest to the left,
-+		 * largest to the right.
-+		 */
-+		if (sector > blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_right;
-+		else if (sector < blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_left;
-+		else
-+			break;
-+		p = n;
-+		bfqq = NULL;
-+	}
-+
-+	*ret_parent = parent;
-+	if (rb_link)
-+		*rb_link = p;
-+
-+	bfq_log(bfqd, "rq_pos_tree_lookup %llu: returning %d",
-+		(long long unsigned)sector,
-+		bfqq != NULL ? bfqq->pid : 0);
-+
-+	return bfqq;
-+}
-+
-+static void bfq_rq_pos_tree_add(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *__bfqq;
-+
-+	if (bfqq->pos_root != NULL) {
-+		rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+		bfqq->pos_root = NULL;
-+	}
-+
-+	if (bfq_class_idle(bfqq))
-+		return;
-+	if (!bfqq->next_rq)
-+		return;
-+
-+	bfqq->pos_root = &bfqd->rq_pos_tree;
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, bfqq->pos_root,
-+			blk_rq_pos(bfqq->next_rq), &parent, &p);
-+	if (__bfqq == NULL) {
-+		rb_link_node(&bfqq->pos_node, parent, p);
-+		rb_insert_color(&bfqq->pos_node, bfqq->pos_root);
-+	} else
-+		bfqq->pos_root = NULL;
-+}
-+
 +/*
 + * Tell whether there are active queues or groups with differentiated weights.
 + */
-+static inline bool bfq_differentiated_weights(struct bfq_data *bfqd)
++static bool bfq_differentiated_weights(struct bfq_data *bfqd)
 +{
 +	/*
 +	 * For weights to differ, at least one of the trees must contain
@@ -1447,7 +1635,7 @@ index 0000000..773b2ee
 +	return (!RB_EMPTY_ROOT(&bfqd->queue_weights_tree) &&
 +		(bfqd->queue_weights_tree.rb_node->rb_left ||
 +		 bfqd->queue_weights_tree.rb_node->rb_right)
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	       ) ||
 +	       (!RB_EMPTY_ROOT(&bfqd->group_weights_tree) &&
 +		(bfqd->group_weights_tree.rb_node->rb_left ||
@@ -1457,6 +1645,40 @@ index 0000000..773b2ee
 +}
 +
 +/*
++ * The following function returns true if every queue must receive the
++ * same share of the throughput (this condition is used when deciding
++ * whether idling may be disabled, see the comments in the function
++ * bfq_bfqq_may_idle()).
++ *
++ * Such a scenario occurs when:
++ * 1) all active queues have the same weight,
++ * 2) all active groups at the same level in the groups tree have the same
++ *    weight,
++ * 3) all active groups at the same level in the groups tree have the same
++ *    number of children.
++ *
++ * Unfortunately, keeping the necessary state for evaluating exactly the
++ * above symmetry conditions would be quite complex and time-consuming.
++ * Therefore this function evaluates, instead, the following stronger
++ * sub-conditions, for which it is much easier to maintain the needed
++ * state:
++ * 1) all active queues have the same weight,
++ * 2) all active groups have the same weight,
++ * 3) all active groups have at most one active child each.
++ * In particular, the last two conditions are always true if hierarchical
++ * support and the cgroups interface are not enabled, thus no state needs
++ * to be maintained in this case.
++ */
++static bool bfq_symmetric_scenario(struct bfq_data *bfqd)
++{
++	return
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++		!bfqd->active_numerous_groups &&
++#endif
++		!bfq_differentiated_weights(bfqd);
++}
++
++/*
 + * If the weight-counter tree passed as input contains no counter for
 + * the weight of the input entity, then add that counter; otherwise just
 + * increment the existing counter.
@@ -1555,10 +1777,10 @@ index 0000000..773b2ee
 +
 +	BUG_ON(RB_EMPTY_NODE(&last->rb_node));
 +
-+	if (rbprev != NULL)
++	if (rbprev)
 +		prev = rb_entry_rq(rbprev);
 +
-+	if (rbnext != NULL)
++	if (rbnext)
 +		next = rb_entry_rq(rbnext);
 +	else {
 +		rbnext = rb_first(&bfqq->sort_list);
@@ -1570,8 +1792,8 @@ index 0000000..773b2ee
 +}
 +
 +/* see the definition of bfq_async_charge_factor for details */
-+static inline unsigned long bfq_serv_to_charge(struct request *rq,
-+					       struct bfq_queue *bfqq)
++static unsigned long bfq_serv_to_charge(struct request *rq,
++					struct bfq_queue *bfqq)
 +{
 +	return blk_rq_sectors(rq) *
 +		(1 + ((!bfq_bfqq_sync(bfqq)) * (bfqq->wr_coeff == 1) *
@@ -1597,7 +1819,7 @@ index 0000000..773b2ee
 +	struct request *next_rq = bfqq->next_rq;
 +	unsigned long new_budget;
 +
-+	if (next_rq == NULL)
++	if (!next_rq)
 +		return;
 +
 +	if (bfqq == bfqd->in_service_queue)
@@ -1620,7 +1842,7 @@ index 0000000..773b2ee
 +	}
 +}
 +
-+static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
++static unsigned int bfq_wr_duration(struct bfq_data *bfqd)
 +{
 +	u64 dur;
 +
@@ -1634,8 +1856,7 @@ index 0000000..773b2ee
 +}
 +
 +/* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
-+static inline void bfq_reset_burst_list(struct bfq_data *bfqd,
-+					struct bfq_queue *bfqq)
++static void bfq_reset_burst_list(struct bfq_data *bfqd, struct bfq_queue *bfqq)
 +{
 +	struct bfq_queue *item;
 +	struct hlist_node *n;
@@ -1867,21 +2088,19 @@ index 0000000..773b2ee
 +	 */
 +	prev = bfqq->next_rq;
 +	next_rq = bfq_choose_req(bfqd, bfqq->next_rq, rq, bfqd->last_position);
-+	BUG_ON(next_rq == NULL);
++	BUG_ON(!next_rq);
 +	bfqq->next_rq = next_rq;
 +
-+	/*
-+	 * Adjust priority tree position, if next_rq changes.
-+	 */
-+	if (prev != bfqq->next_rq)
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+
 +	if (!bfq_bfqq_busy(bfqq)) {
-+		bool soft_rt,
++		bool soft_rt, in_burst,
 +		     idle_for_long_time = time_is_before_jiffies(
 +						bfqq->budget_timeout +
 +						bfqd->bfq_wr_min_idle_time);
 +
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++		bfqg_stats_update_io_add(bfqq_group(RQ_BFQQ(rq)), bfqq,
++					 rq->cmd_flags);
++#endif
 +		if (bfq_bfqq_sync(bfqq)) {
 +			bool already_in_burst =
 +			   !hlist_unhashed(&bfqq->burst_list_node) ||
@@ -1901,11 +2120,11 @@ index 0000000..773b2ee
 +				bfqd->last_ins_in_burst = jiffies;
 +		}
 +
++		in_burst = bfq_bfqq_in_large_burst(bfqq);
 +		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
-+			!bfq_bfqq_in_large_burst(bfqq) &&
++			!in_burst &&
 +			time_is_before_jiffies(bfqq->soft_rt_next_start);
-+		interactive = !bfq_bfqq_in_large_burst(bfqq) &&
-+			      idle_for_long_time;
++		interactive = !in_burst && idle_for_long_time;
 +		entity->budget = max_t(unsigned long, bfqq->max_budget,
 +				       bfq_serv_to_charge(next_rq, bfqq));
 +
@@ -1925,10 +2144,16 @@ index 0000000..773b2ee
 +			goto add_bfqq_busy;
 +
 +		/*
-+		 * If the queue is not being boosted and has been idle
-+		 * for enough time, start a weight-raising period
++		 * If the queue:
++		 * - is not being boosted,
++		 * - has been idle for enough time,
++		 * - is not a sync queue or is linked to a bfq_io_cq (it is
++		 *   shared "for its nature" or it is not shared and its
++		 *   requests have not been redirected to a shared queue)
++		 * start a weight-raising period.
 +		 */
-+		if (old_wr_coeff == 1 && (interactive || soft_rt)) {
++		if (old_wr_coeff == 1 && (interactive || soft_rt) &&
++		    (!bfq_bfqq_sync(bfqq) || bfqq->bic)) {
 +			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
 +			if (interactive)
 +				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
@@ -1942,7 +2167,7 @@ index 0000000..773b2ee
 +		} else if (old_wr_coeff > 1) {
 +			if (interactive)
 +				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else if (bfq_bfqq_in_large_burst(bfqq) ||
++			else if (in_burst ||
 +				 (bfqq->wr_cur_max_time ==
 +				  bfqd->bfq_wr_rt_max_time &&
 +				  !soft_rt)) {
@@ -1961,18 +2186,18 @@ index 0000000..773b2ee
 +				/*
 +				 *
 +				 * The remaining weight-raising time is lower
-+				 * than bfqd->bfq_wr_rt_max_time, which
-+				 * means that the application is enjoying
-+				 * weight raising either because deemed soft-
-+				 * rt in the near past, or because deemed
-+				 * interactive a long ago. In both cases,
-+				 * resetting now the current remaining weight-
-+				 * raising time for the application to the
-+				 * weight-raising duration for soft rt
-+				 * applications would not cause any latency
-+				 * increase for the application (as the new
-+				 * duration would be higher than the remaining
-+				 * time).
++				 * than bfqd->bfq_wr_rt_max_time, which means
++				 * that the application is enjoying weight
++				 * raising either because deemed soft-rt in
++				 * the near past, or because deemed interactive
++				 * a long ago.
++				 * In both cases, resetting now the current
++				 * remaining weight-raising time for the
++				 * application to the weight-raising duration
++				 * for soft rt applications would not cause any
++				 * latency increase for the application (as the
++				 * new duration would be higher than the
++				 * remaining time).
 +				 *
 +				 * In addition, the application is now meeting
 +				 * the requirements for being deemed soft rt.
@@ -2008,7 +2233,7 @@ index 0000000..773b2ee
 +			}
 +		}
 +		if (old_wr_coeff != bfqq->wr_coeff)
-+			entity->ioprio_changed = 1;
++			entity->prio_changed = 1;
 +add_bfqq_busy:
 +		bfqq->last_idle_bklogged = jiffies;
 +		bfqq->service_from_backlogged = 0;
@@ -2023,7 +2248,7 @@ index 0000000..773b2ee
 +			bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
 +
 +			bfqd->wr_busy_queues++;
-+			entity->ioprio_changed = 1;
++			entity->prio_changed = 1;
 +			bfq_log_bfqq(bfqd, bfqq,
 +			    "non-idle wrais starting at %lu, rais_max_time %u",
 +			    jiffies,
@@ -2046,11 +2271,11 @@ index 0000000..773b2ee
 +	struct bfq_queue *bfqq;
 +
 +	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
++	if (!bic)
 +		return NULL;
 +
 +	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	if (bfqq != NULL)
++	if (bfqq)
 +		return elv_rb_find(&bfqq->sort_list, bio_end_sector(bio));
 +
 +	return NULL;
@@ -2066,8 +2291,7 @@ index 0000000..773b2ee
 +		(long long unsigned)bfqd->last_position);
 +}
 +
-+static inline void bfq_deactivate_request(struct request_queue *q,
-+					  struct request *rq)
++static void bfq_deactivate_request(struct request_queue *q, struct request *rq)
 +{
 +	struct bfq_data *bfqd = q->elevator->elevator_data;
 +
@@ -2099,7 +2323,7 @@ index 0000000..773b2ee
 +		/*
 +		 * Remove queue from request-position tree as it is empty.
 +		 */
-+		if (bfqq->pos_root != NULL) {
++		if (bfqq->pos_root) {
 +			rb_erase(&bfqq->pos_node, bfqq->pos_root);
 +			bfqq->pos_root = NULL;
 +		}
@@ -2109,6 +2333,9 @@ index 0000000..773b2ee
 +		BUG_ON(bfqq->meta_pending == 0);
 +		bfqq->meta_pending--;
 +	}
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_update_io_remove(bfqq_group(bfqq), rq->cmd_flags);
++#endif
 +}
 +
 +static int bfq_merge(struct request_queue *q, struct request **req,
@@ -2118,7 +2345,7 @@ index 0000000..773b2ee
 +	struct request *__rq;
 +
 +	__rq = bfq_find_rq_fmerge(bfqd, bio);
-+	if (__rq != NULL && elv_rq_merge_ok(__rq, bio)) {
++	if (__rq && elv_rq_merge_ok(__rq, bio)) {
 +		*req = __rq;
 +		return ELEVATOR_FRONT_MERGE;
 +	}
@@ -2145,20 +2372,19 @@ index 0000000..773b2ee
 +		prev = bfqq->next_rq;
 +		next_rq = bfq_choose_req(bfqd, bfqq->next_rq, req,
 +					 bfqd->last_position);
-+		BUG_ON(next_rq == NULL);
++		BUG_ON(!next_rq);
 +		bfqq->next_rq = next_rq;
-+		/*
-+		 * If next_rq changes, update both the queue's budget to
-+		 * fit the new request and the queue's position in its
-+		 * rq_pos_tree.
-+		 */
-+		if (prev != bfqq->next_rq) {
-+			bfq_updated_next_req(bfqd, bfqq);
-+			bfq_rq_pos_tree_add(bfqd, bfqq);
-+		}
 +	}
 +}
 +
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++static void bfq_bio_merged(struct request_queue *q, struct request *req,
++			   struct bio *bio)
++{
++	bfqg_stats_update_io_merged(bfqq_group(RQ_BFQQ(req)), bio->bi_rw);
++}
++#endif
++
 +static void bfq_merged_requests(struct request_queue *q, struct request *rq,
 +				struct request *next)
 +{
@@ -2185,18 +2411,21 @@ index 0000000..773b2ee
 +		bfqq->next_rq = rq;
 +
 +	bfq_remove_request(next);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_update_io_merged(bfqq_group(bfqq), next->cmd_flags);
++#endif
 +}
 +
 +/* Must be called with bfqq != NULL */
-+static inline void bfq_bfqq_end_wr(struct bfq_queue *bfqq)
++static void bfq_bfqq_end_wr(struct bfq_queue *bfqq)
 +{
-+	BUG_ON(bfqq == NULL);
++	BUG_ON(!bfqq);
 +	if (bfq_bfqq_busy(bfqq))
 +		bfqq->bfqd->wr_busy_queues--;
 +	bfqq->wr_coeff = 1;
 +	bfqq->wr_cur_max_time = 0;
 +	/* Trigger a weight change on the next activation of the queue */
-+	bfqq->entity.ioprio_changed = 1;
++	bfqq->entity.prio_changed = 1;
 +}
 +
 +static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
@@ -2206,9 +2435,9 @@ index 0000000..773b2ee
 +
 +	for (i = 0; i < 2; i++)
 +		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			if (bfqg->async_bfqq[i][j] != NULL)
++			if (bfqg->async_bfqq[i][j])
 +				bfq_bfqq_end_wr(bfqg->async_bfqq[i][j]);
-+	if (bfqg->async_idle_bfqq != NULL)
++	if (bfqg->async_idle_bfqq)
 +		bfq_bfqq_end_wr(bfqg->async_idle_bfqq);
 +}
 +
@@ -2232,7 +2461,6 @@ index 0000000..773b2ee
 +{
 +	struct bfq_data *bfqd = q->elevator->elevator_data;
 +	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
 +
 +	/*
 +	 * Disallow merge of a sync bio into an async request.
@@ -2246,17 +2474,19 @@ index 0000000..773b2ee
 +	 * Queue lock is held here.
 +	 */
 +	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
++	if (!bic)
 +		return 0;
 +
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	return bfqq == RQ_BFQQ(rq);
++	return bic_to_bfqq(bic, bfq_bio_sync(bio)) == RQ_BFQQ(rq);
 +}
 +
 +static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
 +				       struct bfq_queue *bfqq)
 +{
-+	if (bfqq != NULL) {
++	if (bfqq) {
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++		bfqg_stats_update_avg_queue_size(bfqq_group(bfqq));
++#endif
 +		bfq_mark_bfqq_must_alloc(bfqq);
 +		bfq_mark_bfqq_budget_new(bfqq);
 +		bfq_clear_bfqq_fifo_expire(bfqq);
@@ -2264,7 +2494,7 @@ index 0000000..773b2ee
 +		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
 +
 +		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
++			     "set_in_service_queue, cur-budget = %d",
 +			     bfqq->entity.budget);
 +	}
 +
@@ -2272,134 +2502,13 @@ index 0000000..773b2ee
 +}
 +
 +/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
-+						  struct bfq_queue *bfqq)
-+{
-+	if (!bfqq)
-+		bfqq = bfq_get_next_queue(bfqd);
-+	else
-+		bfq_get_next_queue_forced(bfqd, bfqq);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
-+static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
-+					  struct request *rq)
-+{
-+	if (blk_rq_pos(rq) >= bfqd->last_position)
-+		return blk_rq_pos(rq) - bfqd->last_position;
-+	else
-+		return bfqd->last_position - blk_rq_pos(rq);
-+}
-+
-+/*
-+ * Return true if bfqq has no request pending and rq is close enough to
-+ * bfqd->last_position, or if rq is closer to bfqd->last_position than
-+ * bfqq->next_rq
-+ */
-+static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+{
-+	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+}
-+
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+{
-+	struct rb_root *root = &bfqd->rq_pos_tree;
-+	struct rb_node *parent, *node;
-+	struct bfq_queue *__bfqq;
-+	sector_t sector = bfqd->last_position;
-+
-+	if (RB_EMPTY_ROOT(root))
-+		return NULL;
-+
-+	/*
-+	 * First, if we find a request starting at the end of the last
-+	 * request, choose it.
-+	 */
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, root, sector, &parent, NULL);
-+	if (__bfqq != NULL)
-+		return __bfqq;
-+
-+	/*
-+	 * If the exact sector wasn't found, the parent of the NULL leaf
-+	 * will contain the closest sector (rq_pos_tree sorted by
-+	 * next_request position).
-+	 */
-+	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	if (blk_rq_pos(__bfqq->next_rq) < sector)
-+		node = rb_next(&__bfqq->pos_node);
-+	else
-+		node = rb_prev(&__bfqq->pos_node);
-+	if (node == NULL)
-+		return NULL;
-+
-+	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	return NULL;
-+}
-+
-+/*
-+ * bfqd - obvious
-+ * cur_bfqq - passed in so that we don't decide that the current queue
-+ *            is closely cooperating with itself.
-+ *
-+ * We are assuming that cur_bfqq has dispatched at least one request,
-+ * and that bfqd->last_position reflects a position on the disk associated
-+ * with the I/O issued by cur_bfqq.
-+ */
-+static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
-+					      struct bfq_queue *cur_bfqq)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	if (bfq_class_idle(cur_bfqq))
-+		return NULL;
-+	if (!bfq_bfqq_sync(cur_bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(cur_bfqq))
-+		return NULL;
-+
-+	/* If device has only one backlogged bfq_queue, don't search. */
-+	if (bfqd->busy_queues == 1)
-+		return NULL;
-+
-+	/*
-+	 * We should notice if some of the queues are cooperating, e.g.
-+	 * working closely on the same area of the disk. In that case,
-+	 * we can group them together and don't waste time idling.
-+	 */
-+	bfqq = bfqq_close(bfqd);
-+	if (bfqq == NULL || bfqq == cur_bfqq)
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues from different bfq_groups.
-+	*/
-+	if (bfqq->entity.parent != cur_bfqq->entity.parent)
-+		return NULL;
-+
-+	/*
-+	 * It only makes sense to merge sync queues.
-+	 */
-+	if (!bfq_bfqq_sync(bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(bfqq))
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues of different priority classes.
-+	 */
-+	if (bfq_class_rt(bfqq) != bfq_class_rt(cur_bfqq))
-+		return NULL;
++ * Get and set a new queue for service.
++ */
++static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd)
++{
++	struct bfq_queue *bfqq = bfq_get_next_queue(bfqd);
 +
++	__bfq_set_in_service_queue(bfqd, bfqq);
 +	return bfqq;
 +}
 +
@@ -2408,9 +2517,9 @@ index 0000000..773b2ee
 + * stored in bfqd, which is dynamically updated according to the
 + * estimated disk peak rate; otherwise return the default max budget
 + */
-+static inline unsigned long bfq_max_budget(struct bfq_data *bfqd)
++static int bfq_max_budget(struct bfq_data *bfqd)
 +{
-+	if (bfqd->budgets_assigned < 194)
++	if (bfqd->budgets_assigned < bfq_stats_min_budgets)
 +		return bfq_default_max_budget;
 +	else
 +		return bfqd->bfq_max_budget;
@@ -2420,9 +2529,9 @@ index 0000000..773b2ee
 + * Return min budget, which is a fraction of the current or default
 + * max budget (trying with 1/32)
 + */
-+static inline unsigned long bfq_min_budget(struct bfq_data *bfqd)
++static int bfq_min_budget(struct bfq_data *bfqd)
 +{
-+	if (bfqd->budgets_assigned < 194)
++	if (bfqd->budgets_assigned < bfq_stats_min_budgets)
 +		return bfq_default_max_budget / 32;
 +	else
 +		return bfqd->bfq_max_budget / 32;
@@ -2438,7 +2547,7 @@ index 0000000..773b2ee
 +
 +	/* Processes have exited, don't wait. */
 +	bic = bfqd->in_service_bic;
-+	if (bic == NULL || atomic_read(&bic->icq.ioc->active_ref) == 0)
++	if (!bic || atomic_read(&bic->icq.ioc->active_ref) == 0)
 +		return;
 +
 +	bfq_mark_bfqq_wait_request(bfqq);
@@ -2464,12 +2573,15 @@ index 0000000..773b2ee
 +	    ((BFQQ_SEEKY(bfqq) && bfqq->entity.service >
 +				  bfq_max_budget(bfqq->bfqd) / 8) ||
 +	      bfq_bfqq_constantly_seeky(bfqq)) && bfqq->wr_coeff == 1 &&
-+	    symmetric_scenario)
++	    bfq_symmetric_scenario(bfqd))
 +		sl = min(sl, msecs_to_jiffies(BFQ_MIN_TT));
 +	else if (bfqq->wr_coeff > 1)
 +		sl = sl * 3;
 +	bfqd->last_idling_start = ktime_get();
 +	mod_timer(&bfqd->idle_slice_timer, jiffies + sl);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_set_start_idle_time(bfqq_group(bfqq));
++#endif
 +	bfq_log(bfqd, "arm idle: %u/%u ms",
 +		jiffies_to_msecs(sl), jiffies_to_msecs(bfqd->bfq_slice_idle));
 +}
@@ -2523,6 +2635,10 @@ index 0000000..773b2ee
 +
 +	if (bfq_bfqq_sync(bfqq))
 +		bfqd->sync_flight++;
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_update_dispatch(bfqq_group(bfqq), blk_rq_bytes(rq),
++				   rq->cmd_flags);
++#endif
 +}
 +
 +/*
@@ -2548,62 +2664,7 @@ index 0000000..773b2ee
 +	return rq;
 +}
 +
-+/* Must be called with the queue_lock held. */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
-+static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return;
-+
-+	/*
-+	 * Merge in the direction of the lesser amount of work.
-+	 */
-+	if (new_process_refs >= process_refs) {
-+		bfqq->new_bfqq = new_bfqq;
-+		atomic_add(process_refs, &new_bfqq->ref);
-+	} else {
-+		new_bfqq->new_bfqq = bfqq;
-+		atomic_add(new_process_refs, &bfqq->ref);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+}
-+
-+static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
++static int bfq_bfqq_budget_left(struct bfq_queue *bfqq)
 +{
 +	struct bfq_entity *entity = &bfqq->entity;
 +	return entity->budget - entity->service;
@@ -2615,15 +2676,6 @@ index 0000000..773b2ee
 +
 +	__bfq_bfqd_reset_in_service(bfqd);
 +
-+	/*
-+	 * If this bfqq is shared between multiple processes, check
-+	 * to make sure that those processes are still issuing I/Os
-+	 * within the mean seek distance. If not, it may be time to
-+	 * break the queues apart again.
-+	 */
-+	if (bfq_bfqq_coop(bfqq) && BFQQ_SEEKY(bfqq))
-+		bfq_mark_bfqq_split_coop(bfqq);
-+
 +	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
 +		/*
 +		 * Overloading budget_timeout field to store the time
@@ -2632,13 +2684,8 @@ index 0000000..773b2ee
 +		 */
 +		bfqq->budget_timeout = jiffies;
 +		bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+	} else {
++	} else
 +		bfq_activate_bfqq(bfqd, bfqq);
-+		/*
-+		 * Resort priority tree of potential close cooperators.
-+		 */
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+	}
 +}
 +
 +/**
@@ -2647,24 +2694,24 @@ index 0000000..773b2ee
 + * @bfqq: queue to update.
 + * @reason: reason for expiration.
 + *
-+ * Handle the feedback on @bfqq budget.  See the body for detailed
-+ * comments.
++ * Handle the feedback on @bfqq budget at queue expiration.
++ * See the body for detailed comments.
 + */
 +static void __bfq_bfqq_recalc_budget(struct bfq_data *bfqd,
 +				     struct bfq_queue *bfqq,
 +				     enum bfqq_expiration reason)
 +{
 +	struct request *next_rq;
-+	unsigned long budget, min_budget;
++	int budget, min_budget;
 +
 +	budget = bfqq->max_budget;
 +	min_budget = bfq_min_budget(bfqd);
 +
 +	BUG_ON(bfqq != bfqd->in_service_queue);
 +
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last budg %lu, budg left %lu",
++	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last budg %d, budg left %d",
 +		bfqq->entity.budget, bfq_bfqq_budget_left(bfqq));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last max_budg %lu, min budg %lu",
++	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last max_budg %d, min budg %d",
 +		budget, bfq_min_budget(bfqd));
 +	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: sync %d, seeky %d",
 +		bfq_bfqq_sync(bfqq), BFQQ_SEEKY(bfqd->in_service_queue));
@@ -2741,18 +2788,19 @@ index 0000000..773b2ee
 +		default:
 +			return;
 +		}
-+	} else /* async queue */
-+	    /* async queues get always the maximum possible budget
-+	     * (their ability to dispatch is limited by
-+	     * @bfqd->bfq_max_budget_async_rq).
-+	     */
++	} else
++		/*
++		 * Async queues get always the maximum possible budget
++		 * (their ability to dispatch is limited by
++		 * @bfqd->bfq_max_budget_async_rq).
++		 */
 +		budget = bfqd->bfq_max_budget;
 +
 +	bfqq->max_budget = budget;
 +
-+	if (bfqd->budgets_assigned >= 194 && bfqd->bfq_user_max_budget == 0 &&
-+	    bfqq->max_budget > bfqd->bfq_max_budget)
-+		bfqq->max_budget = bfqd->bfq_max_budget;
++	if (bfqd->budgets_assigned >= bfq_stats_min_budgets &&
++	    !bfqd->bfq_user_max_budget)
++		bfqq->max_budget = min(bfqq->max_budget, bfqd->bfq_max_budget);
 +
 +	/*
 +	 * Make sure that we have enough budget for the next request.
@@ -2761,14 +2809,14 @@ index 0000000..773b2ee
 +	 * update.
 +	 */
 +	next_rq = bfqq->next_rq;
-+	if (next_rq != NULL)
++	if (next_rq)
 +		bfqq->entity.budget = max_t(unsigned long, bfqq->max_budget,
 +					    bfq_serv_to_charge(next_rq, bfqq));
 +	else
 +		bfqq->entity.budget = bfqq->max_budget;
 +
-+	bfq_log_bfqq(bfqd, bfqq, "head sect: %u, new budget %lu",
-+			next_rq != NULL ? blk_rq_sectors(next_rq) : 0,
++	bfq_log_bfqq(bfqd, bfqq, "head sect: %u, new budget %d",
++			next_rq ? blk_rq_sectors(next_rq) : 0,
 +			bfqq->entity.budget);
 +}
 +
@@ -2794,15 +2842,15 @@ index 0000000..773b2ee
 + * seeky processes, and hence reduce their chances to lower the
 + * throughput. See the code for more details.
 + */
-+static int bfq_update_peak_rate(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int compensate, enum bfqq_expiration reason)
++static bool bfq_update_peak_rate(struct bfq_data *bfqd, struct bfq_queue *bfqq,
++				 bool compensate, enum bfqq_expiration reason)
 +{
 +	u64 bw, usecs, expected, timeout;
 +	ktime_t delta;
 +	int update = 0;
 +
 +	if (!bfq_bfqq_sync(bfqq) || bfq_bfqq_budget_new(bfqq))
-+		return 0;
++		return false;
 +
 +	if (compensate)
 +		delta = bfqd->last_idling_start;
@@ -2813,7 +2861,7 @@ index 0000000..773b2ee
 +
 +	/* Don't trust short/unrealistic values. */
 +	if (usecs < 100 || usecs >= LONG_MAX)
-+		return 0;
++		return false;
 +
 +	/*
 +	 * Calculate the bandwidth for the last slice.  We use a 64 bit
@@ -2862,7 +2910,7 @@ index 0000000..773b2ee
 +				bfqd->bfq_max_budget =
 +					bfq_calc_max_budget(bfqd->peak_rate,
 +							    timeout);
-+				bfq_log(bfqd, "new max_budget=%lu",
++				bfq_log(bfqd, "new max_budget=%d",
 +					bfqd->bfq_max_budget);
 +			}
 +			if (bfqd->device_speed == BFQ_BFQD_FAST &&
@@ -2887,7 +2935,7 @@ index 0000000..773b2ee
 +	 * and for the moment return false.
 +	 */
 +	if (bfqq->entity.budget <= bfq_max_budget(bfqd) / 8)
-+		return 0;
++		return false;
 +
 +	/*
 +	 * A process is considered ``slow'' (i.e., seeky, so that we
@@ -2962,8 +3010,8 @@ index 0000000..773b2ee
 + * seems to be quite precise also in embedded systems and KVM/QEMU virtual
 + * machines.
 + */
-+static inline unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
-+						       struct bfq_queue *bfqq)
++static unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
++						struct bfq_queue *bfqq)
 +{
 +	return max(bfqq->last_idle_bklogged +
 +		   HZ * bfqq->service_from_backlogged /
@@ -2976,7 +3024,7 @@ index 0000000..773b2ee
 + * the current time will be lower than this time instant according to the macro
 + * time_is_before_jiffies().
 + */
-+static inline unsigned long bfq_infinity_from_now(unsigned long now)
++static unsigned long bfq_infinity_from_now(unsigned long now)
 +{
 +	return now + ULONG_MAX / 2;
 +}
@@ -3013,13 +3061,14 @@ index 0000000..773b2ee
 + */
 +static void bfq_bfqq_expire(struct bfq_data *bfqd,
 +			    struct bfq_queue *bfqq,
-+			    int compensate,
++			    bool compensate,
 +			    enum bfqq_expiration reason)
 +{
-+	int slow;
++	bool slow;
 +	BUG_ON(bfqq != bfqd->in_service_queue);
 +
-+	/* Update disk peak rate for autotuning and check whether the
++	/*
++	 * Update disk peak rate for autotuning and check whether the
 +	 * process is slow (see bfq_update_peak_rate).
 +	 */
 +	slow = bfq_update_peak_rate(bfqd, bfqq, compensate, reason);
@@ -3113,12 +3162,12 @@ index 0000000..773b2ee
 + * just checked on request arrivals and completions, as well as on
 + * idle timer expirations.
 + */
-+static int bfq_bfqq_budget_timeout(struct bfq_queue *bfqq)
++static bool bfq_bfqq_budget_timeout(struct bfq_queue *bfqq)
 +{
 +	if (bfq_bfqq_budget_new(bfqq) ||
 +	    time_before(jiffies, bfqq->budget_timeout))
-+		return 0;
-+	return 1;
++		return false;
++	return true;
 +}
 +
 +/*
@@ -3129,7 +3178,7 @@ index 0000000..773b2ee
 + * does not hold, or if the queue is slow enough to deserve only to be
 + * kicked off for preserving a high throughput.
 +*/
-+static inline int bfq_may_expire_for_budg_timeout(struct bfq_queue *bfqq)
++static bool bfq_may_expire_for_budg_timeout(struct bfq_queue *bfqq)
 +{
 +	bfq_log_bfqq(bfqq->bfqd, bfqq,
 +		"may_budget_timeout: wait_request %d left %d timeout %d",
@@ -3144,183 +3193,278 @@ index 0000000..773b2ee
 +}
 +
 +/*
-+ * Device idling is allowed only for the queues for which this function
-+ * returns true. For this reason, the return value of this function plays a
-+ * critical role for both throughput boosting and service guarantees. The
-+ * return value is computed through a logical expression. In this rather
-+ * long comment, we try to briefly describe all the details and motivations
-+ * behind the components of this logical expression.
-+ *
-+ * First, the expression is false if bfqq is not sync, or if: bfqq happened
-+ * to become active during a large burst of queue activations, and the
-+ * pattern of requests bfqq contains boosts the throughput if bfqq is
-+ * expired. In fact, queues that became active during a large burst benefit
-+ * only from throughput, as discussed in the comments to bfq_handle_burst.
-+ * In this respect, expiring bfqq certainly boosts the throughput on NCQ-
-+ * capable flash-based devices, whereas, on rotational devices, it boosts
-+ * the throughput only if bfqq contains random requests.
-+ *
-+ * On the opposite end, if (a) bfqq is sync, (b) the above burst-related
-+ * condition does not hold, and (c) bfqq is being weight-raised, then the
-+ * expression always evaluates to true, as device idling is instrumental
-+ * for preserving low-latency guarantees (see [1]). If, instead, conditions
-+ * (a) and (b) do hold, but (c) does not, then the expression evaluates to
-+ * true only if: (1) bfqq is I/O-bound and has a non-null idle window, and
-+ * (2) at least one of the following two conditions holds.
-+ * The first condition is that the device is not performing NCQ, because
-+ * idling the device most certainly boosts the throughput if this condition
-+ * holds and bfqq is I/O-bound and has been granted a non-null idle window.
-+ * The second compound condition is made of the logical AND of two components.
-+ *
-+ * The first component is true only if there is no weight-raised busy
-+ * queue. This guarantees that the device is not idled for a sync non-
-+ * weight-raised queue when there are busy weight-raised queues. The former
-+ * is then expired immediately if empty. Combined with the timestamping
-+ * rules of BFQ (see [1] for details), this causes sync non-weight-raised
-+ * queues to get a lower number of requests served, and hence to ask for a
-+ * lower number of requests from the request pool, before the busy weight-
-+ * raised queues get served again.
-+ *
-+ * This is beneficial for the processes associated with weight-raised
-+ * queues, when the request pool is saturated (e.g., in the presence of
-+ * write hogs). In fact, if the processes associated with the other queues
-+ * ask for requests at a lower rate, then weight-raised processes have a
-+ * higher probability to get a request from the pool immediately (or at
-+ * least soon) when they need one. Hence they have a higher probability to
-+ * actually get a fraction of the disk throughput proportional to their
-+ * high weight. This is especially true with NCQ-capable drives, which
-+ * enqueue several requests in advance and further reorder internally-
-+ * queued requests.
-+ *
-+ * In the end, mistreating non-weight-raised queues when there are busy
-+ * weight-raised queues seems to mitigate starvation problems in the
-+ * presence of heavy write workloads and NCQ, and hence to guarantee a
-+ * higher application and system responsiveness in these hostile scenarios.
-+ *
-+ * If the first component of the compound condition is instead true, i.e.,
-+ * there is no weight-raised busy queue, then the second component of the
-+ * compound condition takes into account service-guarantee and throughput
-+ * issues related to NCQ (recall that the compound condition is evaluated
-+ * only if the device is detected as supporting NCQ).
-+ *
-+ * As for service guarantees, allowing the drive to enqueue more than one
-+ * request at a time, and hence delegating de facto final scheduling
-+ * decisions to the drive's internal scheduler, causes loss of control on
-+ * the actual request service order. In this respect, when the drive is
-+ * allowed to enqueue more than one request at a time, the service
-+ * distribution enforced by the drive's internal scheduler is likely to
-+ * coincide with the desired device-throughput distribution only in the
-+ * following, perfectly symmetric, scenario:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups at the same level in the groups tree have the same
-+ *    weight,
-+ * 3) all active groups at the same level in the groups tree have the same
-+ *    number of children.
-+ *
-+ * Even in such a scenario, sequential I/O may still receive a preferential
-+ * treatment, but this is not likely to be a big issue with flash-based
-+ * devices, because of their non-dramatic loss of throughput with random
-+ * I/O. Things do differ with HDDs, for which additional care is taken, as
-+ * explained after completing the discussion for flash-based devices.
-+ *
-+ * Unfortunately, keeping the necessary state for evaluating exactly the
-+ * above symmetry conditions would be quite complex and time-consuming.
-+ * Therefore BFQ evaluates instead the following stronger sub-conditions,
-+ * for which it is much easier to maintain the needed state:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups have the same weight,
-+ * 3) all active groups have at most one active child each.
-+ * In particular, the last two conditions are always true if hierarchical
-+ * support and the cgroups interface are not enabled, hence no state needs
-+ * to be maintained in this case.
-+ *
-+ * According to the above considerations, the second component of the
-+ * compound condition evaluates to true if any of the above symmetry
-+ * sub-condition does not hold, or the device is not flash-based. Therefore,
-+ * if also the first component is true, then idling is allowed for a sync
-+ * queue. These are the only sub-conditions considered if the device is
-+ * flash-based, as, for such a device, it is sensible to force idling only
-+ * for service-guarantee issues. In fact, as for throughput, idling
-+ * NCQ-capable flash-based devices would not boost the throughput even
-+ * with sequential I/O; rather it would lower the throughput in proportion
-+ * to how fast the device is. In the end, (only) if all the three
-+ * sub-conditions hold and the device is flash-based, the compound
-+ * condition evaluates to false and therefore no idling is performed.
++ * For a queue that becomes empty, device idling is allowed only if
++ * this function returns true for that queue. As a consequence, since
++ * device idling plays a critical role for both throughput boosting
++ * and service guarantees, the return value of this function plays a
++ * critical role as well.
 + *
-+ * As already said, things change with a rotational device, where idling
-+ * boosts the throughput with sequential I/O (even with NCQ). Hence, for
-+ * such a device the second component of the compound condition evaluates
-+ * to true also if the following additional sub-condition does not hold:
-+ * the queue is constantly seeky. Unfortunately, this different behavior
-+ * with respect to flash-based devices causes an additional asymmetry: if
-+ * some sync queues enjoy idling and some other sync queues do not, then
-+ * the latter get a low share of the device throughput, simply because the
-+ * former get many requests served after being set as in service, whereas
-+ * the latter do not. As a consequence, to guarantee the desired throughput
-+ * distribution, on HDDs the compound expression evaluates to true (and
-+ * hence device idling is performed) also if the following last symmetry
-+ * condition does not hold: no other queue is benefiting from idling. Also
-+ * this last condition is actually replaced with a simpler-to-maintain and
-+ * stronger condition: there is no busy queue which is not constantly seeky
-+ * (and hence may also benefit from idling).
++ * In a nutshell, this function returns true only if idling is
++ * beneficial for throughput or, even if detrimental for throughput,
++ * idling is however necessary to preserve service guarantees (low
++ * latency, desired throughput distribution, ...). In particular, on
++ * NCQ-capable devices, this function tries to return false, so as to
++ * help keep the drives' internal queues full, whenever this helps the
++ * device boost the throughput without causing any service-guarantee
++ * issue.
 + *
-+ * To sum up, when all the required symmetry and throughput-boosting
-+ * sub-conditions hold, the second component of the compound condition
-+ * evaluates to false, and hence no idling is performed. This helps to
-+ * keep the drives' internal queues full on NCQ-capable devices, and hence
-+ * to boost the throughput, without causing 'almost' any loss of service
-+ * guarantees. The 'almost' follows from the fact that, if the internal
-+ * queue of one such device is filled while all the sub-conditions hold,
-+ * but at some point in time some sub-condition stops to hold, then it may
-+ * become impossible to let requests be served in the new desired order
-+ * until all the requests already queued in the device have been served.
++ * In more detail, the return value of this function is obtained by,
++ * first, computing a number of boolean variables that take into
++ * account throughput and service-guarantee issues, and, then,
++ * combining these variables in a logical expression. Most of the
++ * issues taken into account are not trivial. We discuss these issues
++ * while introducing the variables.
 + */
-+static inline bool bfq_bfqq_must_not_expire(struct bfq_queue *bfqq)
++static bool bfq_bfqq_may_idle(struct bfq_queue *bfqq)
 +{
 +	struct bfq_data *bfqd = bfqq->bfqd;
-+#define cond_for_seeky_on_ncq_hdd (bfq_bfqq_constantly_seeky(bfqq) && \
-+				   bfqd->busy_in_flight_queues == \
-+				   bfqd->const_seeky_busy_in_flight_queues)
++	bool idling_boosts_thr, idling_boosts_thr_without_issues,
++		all_queues_seeky, on_hdd_and_not_all_queues_seeky,
++		idling_needed_for_service_guarantees,
++		asymmetric_scenario;
++
++	/*
++	 * The next variable takes into account the cases where idling
++	 * boosts the throughput.
++	 *
++	 * The value of the variable is computed considering, first, that
++	 * idling is virtually always beneficial for the throughput if:
++	 * (a) the device is not NCQ-capable, or
++	 * (b) regardless of the presence of NCQ, the device is rotational
++	 *     and the request pattern for bfqq is I/O-bound and sequential.
++	 *
++	 * Secondly, and in contrast to the above item (b), idling an
++	 * NCQ-capable flash-based device would not boost the
++	 * throughput even with sequential I/O; rather it would lower
++	 * the throughput in proportion to how fast the device
++	 * is. Accordingly, the next variable is true if any of the
++	 * above conditions (a) and (b) is true, and, in particular,
++	 * happens to be false if bfqd is an NCQ-capable flash-based
++	 * device.
++	 */
++	idling_boosts_thr = !bfqd->hw_tag ||
++		(!blk_queue_nonrot(bfqd->queue) && bfq_bfqq_IO_bound(bfqq) &&
++		 bfq_bfqq_idle_window(bfqq)) ;
 +
-+#define cond_for_expiring_in_burst	(bfq_bfqq_in_large_burst(bfqq) && \
-+					 bfqd->hw_tag && \
-+					 (blk_queue_nonrot(bfqd->queue) || \
-+					  bfq_bfqq_constantly_seeky(bfqq)))
++	/*
++	 * The value of the next variable,
++	 * idling_boosts_thr_without_issues, is equal to that of
++	 * idling_boosts_thr, unless a special case holds. In this
++	 * special case, described below, idling may cause problems to
++	 * weight-raised queues.
++	 *
++	 * When the request pool is saturated (e.g., in the presence
++	 * of write hogs), if the processes associated with
++	 * non-weight-raised queues ask for requests at a lower rate,
++	 * then processes associated with weight-raised queues have a
++	 * higher probability to get a request from the pool
++	 * immediately (or at least soon) when they need one. Thus
++	 * they have a higher probability to actually get a fraction
++	 * of the device throughput proportional to their high
++	 * weight. This is especially true with NCQ-capable drives,
++	 * which enqueue several requests in advance, and further
++	 * reorder internally-queued requests.
++	 *
++	 * For this reason, we force to false the value of
++	 * idling_boosts_thr_without_issues if there are weight-raised
++	 * busy queues. In this case, and if bfqq is not weight-raised,
++	 * this guarantees that the device is not idled for bfqq (if,
++	 * instead, bfqq is weight-raised, then idling will be
++	 * guaranteed by another variable, see below). Combined with
++	 * the timestamping rules of BFQ (see [1] for details), this
++	 * behavior causes bfqq, and hence any sync non-weight-raised
++	 * queue, to get a lower number of requests served, and thus
++	 * to ask for a lower number of requests from the request
++	 * pool, before the busy weight-raised queues get served
++	 * again. This often mitigates starvation problems in the
++	 * presence of heavy write workloads and NCQ, thereby
++	 * guaranteeing a higher application and system responsiveness
++	 * in these hostile scenarios.
++	 */
++	idling_boosts_thr_without_issues = idling_boosts_thr &&
++		bfqd->wr_busy_queues == 0;
 +
-+/*
-+ * Condition for expiring a non-weight-raised queue (and hence not idling
-+ * the device).
-+ */
-+#define cond_for_expiring_non_wr  (bfqd->hw_tag && \
-+				   (bfqd->wr_busy_queues > 0 || \
-+				    (blk_queue_nonrot(bfqd->queue) || \
-+				      cond_for_seeky_on_ncq_hdd)))
++	/*
++	 * There are then two cases where idling must be performed not
++	 * for throughput concerns, but to preserve service
++	 * guarantees. In the description of these cases, we say, for
++	 * short, that a queue is sequential/random if the process
++	 * associated to the queue issues sequential/random requests
++	 * (in the second case the queue may be tagged as seeky or
++	 * even constantly_seeky).
++	 *
++	 * To introduce the first case, we note that, since
++	 * bfq_bfqq_idle_window(bfqq) is false if the device is
++	 * NCQ-capable and bfqq is random (see
++	 * bfq_update_idle_window()), then, from the above two
++	 * assignments it follows that
++	 * idling_boosts_thr_without_issues is false if the device is
++	 * NCQ-capable and bfqq is random. Therefore, for this case,
++	 * device idling would never be allowed if we used just
++	 * idling_boosts_thr_without_issues to decide whether to allow
++	 * it. And, beneficially, this would imply that throughput
++	 * would always be boosted also with random I/O on NCQ-capable
++	 * HDDs.
++	 *
++	 * But we must be careful on this point, to avoid an unfair
++	 * treatment for bfqq. In fact, because of the same above
++	 * assignments, idling_boosts_thr_without_issues is, on the
++	 * other hand, true if 1) the device is an HDD and bfqq is
++	 * sequential, and 2) there are no busy weight-raised
++	 * queues. As a consequence, if we used just
++	 * idling_boosts_thr_without_issues to decide whether to idle
++	 * the device, then with an HDD we might easily bump into a
++	 * scenario where queues that are sequential and I/O-bound
++	 * would enjoy idling, whereas random queues would not. The
++	 * latter might then get a low share of the device throughput,
++	 * simply because the former would get many requests served
++	 * after being set as in service, while the latter would not.
++	 *
++	 * To address this issue, we start by setting to true a
++	 * sentinel variable, on_hdd_and_not_all_queues_seeky, if the
++	 * device is rotational and not all queues with pending or
++	 * in-flight requests are constantly seeky (i.e., there are
++	 * active sequential queues, and bfqq might then be mistreated
++	 * if it does not enjoy idling because it is random).
++	 */
++	all_queues_seeky = bfq_bfqq_constantly_seeky(bfqq) &&
++			   bfqd->busy_in_flight_queues ==
++			   bfqd->const_seeky_busy_in_flight_queues;
++
++	on_hdd_and_not_all_queues_seeky =
++		!blk_queue_nonrot(bfqd->queue) && !all_queues_seeky;
++
++	/*
++	 * To introduce the second case where idling needs to be
++	 * performed to preserve service guarantees, we can note that
++	 * allowing the drive to enqueue more than one request at a
++	 * time, and hence delegating de facto final scheduling
++	 * decisions to the drive's internal scheduler, causes loss of
++	 * control on the actual request service order. In particular,
++	 * the critical situation is when requests from different
++	 * processes happens to be present, at the same time, in the
++	 * internal queue(s) of the drive. In such a situation, the
++	 * drive, by deciding the service order of the
++	 * internally-queued requests, does determine also the actual
++	 * throughput distribution among these processes. But the
++	 * drive typically has no notion or concern about per-process
++	 * throughput distribution, and makes its decisions only on a
++	 * per-request basis. Therefore, the service distribution
++	 * enforced by the drive's internal scheduler is likely to
++	 * coincide with the desired device-throughput distribution
++	 * only in a completely symmetric scenario where:
++	 * (i)  each of these processes must get the same throughput as
++	 *      the others;
++	 * (ii) all these processes have the same I/O pattern
++	        (either sequential or random).
++	 * In fact, in such a scenario, the drive will tend to treat
++	 * the requests of each of these processes in about the same
++	 * way as the requests of the others, and thus to provide
++	 * each of these processes with about the same throughput
++	 * (which is exactly the desired throughput distribution). In
++	 * contrast, in any asymmetric scenario, device idling is
++	 * certainly needed to guarantee that bfqq receives its
++	 * assigned fraction of the device throughput (see [1] for
++	 * details).
++	 *
++	 * We address this issue by controlling, actually, only the
++	 * symmetry sub-condition (i), i.e., provided that
++	 * sub-condition (i) holds, idling is not performed,
++	 * regardless of whether sub-condition (ii) holds. In other
++	 * words, only if sub-condition (i) holds, then idling is
++	 * allowed, and the device tends to be prevented from queueing
++	 * many requests, possibly of several processes. The reason
++	 * for not controlling also sub-condition (ii) is that, first,
++	 * in the case of an HDD, the asymmetry in terms of types of
++	 * I/O patterns is already taken in to account in the above
++	 * sentinel variable
++	 * on_hdd_and_not_all_queues_seeky. Secondly, in the case of a
++	 * flash-based device, we prefer however to privilege
++	 * throughput (and idling lowers throughput for this type of
++	 * devices), for the following reasons:
++	 * 1) differently from HDDs, the service time of random
++	 *    requests is not orders of magnitudes lower than the service
++	 *    time of sequential requests; thus, even if processes doing
++	 *    sequential I/O get a preferential treatment with respect to
++	 *    others doing random I/O, the consequences are not as
++	 *    dramatic as with HDDs;
++	 * 2) if a process doing random I/O does need strong
++	 *    throughput guarantees, it is hopefully already being
++	 *    weight-raised, or the user is likely to have assigned it a
++	 *    higher weight than the other processes (and thus
++	 *    sub-condition (i) is likely to be false, which triggers
++	 *    idling).
++	 *
++	 * According to the above considerations, the next variable is
++	 * true (only) if sub-condition (i) holds. To compute the
++	 * value of this variable, we not only use the return value of
++	 * the function bfq_symmetric_scenario(), but also check
++	 * whether bfqq is being weight-raised, because
++	 * bfq_symmetric_scenario() does not take into account also
++	 * weight-raised queues (see comments to
++	 * bfq_weights_tree_add()).
++	 *
++	 * As a side note, it is worth considering that the above
++	 * device-idling countermeasures may however fail in the
++	 * following unlucky scenario: if idling is (correctly)
++	 * disabled in a time period during which all symmetry
++	 * sub-conditions hold, and hence the device is allowed to
++	 * enqueue many requests, but at some later point in time some
++	 * sub-condition stops to hold, then it may become impossible
++	 * to let requests be served in the desired order until all
++	 * the requests already queued in the device have been served.
++	 */
++	asymmetric_scenario = bfqq->wr_coeff > 1 ||
++		!bfq_symmetric_scenario(bfqd);
++
++	/*
++	 * Finally, there is a case where maximizing throughput is the
++	 * best choice even if it may cause unfairness toward
++	 * bfqq. Such a case is when bfqq became active in a burst of
++	 * queue activations. Queues that became active during a large
++	 * burst benefit only from throughput, as discussed in the
++	 * comments to bfq_handle_burst. Thus, if bfqq became active
++	 * in a burst and not idling the device maximizes throughput,
++	 * then the device must no be idled, because not idling the
++	 * device provides bfqq and all other queues in the burst with
++	 * maximum benefit. Combining this and the two cases above, we
++	 * can now establish when idling is actually needed to
++	 * preserve service guarantees.
++	 */
++	idling_needed_for_service_guarantees =
++		(on_hdd_and_not_all_queues_seeky || asymmetric_scenario) &&
++		!bfq_bfqq_in_large_burst(bfqq);
 +
++	/*
++	 * We have now all the components we need to compute the return
++	 * value of the function, which is true only if both the following
++	 * conditions hold:
++	 * 1) bfqq is sync, because idling make sense only for sync queues;
++	 * 2) idling either boosts the throughput (without issues), or
++	 *    is necessary to preserve service guarantees.
++	 */
 +	return bfq_bfqq_sync(bfqq) &&
-+		!cond_for_expiring_in_burst &&
-+		(bfqq->wr_coeff > 1 || !symmetric_scenario ||
-+		 (bfq_bfqq_IO_bound(bfqq) && bfq_bfqq_idle_window(bfqq) &&
-+		  !cond_for_expiring_non_wr)
-+	);
++		(idling_boosts_thr_without_issues ||
++		 idling_needed_for_service_guarantees);
 +}
 +
 +/*
-+ * If the in-service queue is empty but sync, and the function
-+ * bfq_bfqq_must_not_expire returns true, then:
++ * If the in-service queue is empty but the function bfq_bfqq_may_idle
++ * returns true, then:
 + * 1) the queue must remain in service and cannot be expired, and
-+ * 2) the disk must be idled to wait for the possible arrival of a new
++ * 2) the device must be idled to wait for the possible arrival of a new
 + *    request for the queue.
-+ * See the comments to the function bfq_bfqq_must_not_expire for the reasons
++ * See the comments to the function bfq_bfqq_may_idle for the reasons
 + * why performing device idling is the best choice to boost the throughput
-+ * and preserve service guarantees when bfq_bfqq_must_not_expire itself
++ * and preserve service guarantees when bfq_bfqq_may_idle itself
 + * returns true.
 + */
-+static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
++static bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
 +{
 +	struct bfq_data *bfqd = bfqq->bfqd;
 +
 +	return RB_EMPTY_ROOT(&bfqq->sort_list) && bfqd->bfq_slice_idle != 0 &&
-+	       bfq_bfqq_must_not_expire(bfqq);
++	       bfq_bfqq_may_idle(bfqq);
 +}
 +
 +/*
@@ -3329,27 +3473,16 @@ index 0000000..773b2ee
 + */
 +static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
 +{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
++	struct bfq_queue *bfqq;
 +	struct request *next_rq;
 +	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
 +
 +	bfqq = bfqd->in_service_queue;
-+	if (bfqq == NULL)
++	if (!bfqq)
 +		goto new_queue;
 +
 +	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
 +
-+	/*
-+         * If another queue has a request waiting within our mean seek
-+         * distance, let it run. The expire code will check for close
-+         * cooperators and put the close queue at the front of the
-+         * service tree. If possible, merge the expiring queue with the
-+         * new bfqq.
-+         */
-+        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
-+        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
-+                bfq_setup_merge(bfqq, new_bfqq);
-+
 +	if (bfq_may_expire_for_budg_timeout(bfqq) &&
 +	    !timer_pending(&bfqd->idle_slice_timer) &&
 +	    !bfq_bfqq_must_idle(bfqq))
@@ -3360,7 +3493,7 @@ index 0000000..773b2ee
 +	 * If bfqq has requests queued and it has enough budget left to
 +	 * serve them, keep the queue, otherwise expire it.
 +	 */
-+	if (next_rq != NULL) {
++	if (next_rq) {
 +		if (bfq_serv_to_charge(next_rq, bfqq) >
 +			bfq_bfqq_budget_left(bfqq)) {
 +			reason = BFQ_BFQQ_BUDGET_EXHAUSTED;
@@ -3387,11 +3520,11 @@ index 0000000..773b2ee
 +				 */
 +				bfq_clear_bfqq_wait_request(bfqq);
 +				del_timer(&bfqd->idle_slice_timer);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++				bfqg_stats_update_idle_time(bfqq_group(bfqq));
++#endif
 +			}
-+			if (new_bfqq == NULL)
-+				goto keep_queue;
-+			else
-+				goto expire;
++			goto keep_queue;
 +		}
 +	}
 +
@@ -3400,52 +3533,44 @@ index 0000000..773b2ee
 +	 * for a new request, or has requests waiting for a completion and
 +	 * may idle after their completion, then keep it anyway.
 +	 */
-+	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
++	if (timer_pending(&bfqd->idle_slice_timer) ||
++	    (bfqq->dispatched != 0 && bfq_bfqq_may_idle(bfqq))) {
 +		bfqq = NULL;
 +		goto keep_queue;
-+	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
-+		/*
-+		 * Expiring the queue because there is a close cooperator,
-+		 * cancel timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
 +	}
 +
 +	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
 +expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
++	bfq_bfqq_expire(bfqd, bfqq, false, reason);
 +new_queue:
-+	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
++	bfqq = bfq_set_in_service_queue(bfqd);
 +	bfq_log(bfqd, "select_queue: new queue %d returned",
-+		bfqq != NULL ? bfqq->pid : 0);
++		bfqq ? bfqq->pid : 0);
 +keep_queue:
 +	return bfqq;
 +}
 +
-+static void bfq_update_wr_data(struct bfq_data *bfqd,
-+			       struct bfq_queue *bfqq)
++static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
 +{
-+	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
-+		struct bfq_entity *entity = &bfqq->entity;
-+
++	struct bfq_entity *entity = &bfqq->entity;
++	if (bfqq->wr_coeff > 1) { /* queue is being weight-raised */
 +		bfq_log_bfqq(bfqd, bfqq,
 +			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
-+			jiffies_to_msecs(jiffies -
-+				bfqq->last_wr_start_finish),
++			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
 +			jiffies_to_msecs(bfqq->wr_cur_max_time),
 +			bfqq->wr_coeff,
 +			bfqq->entity.weight, bfqq->entity.orig_weight);
 +
 +		BUG_ON(bfqq != bfqd->in_service_queue && entity->weight !=
 +		       entity->orig_weight * bfqq->wr_coeff);
-+		if (entity->ioprio_changed)
++		if (entity->prio_changed)
 +			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
++
 +		/*
 +		 * If the queue was activated in a burst, or
 +		 * too much time has elapsed from the beginning
-+		 * of this weight-raising, then end weight raising.
++		 * of this weight-raising period, then end weight
++		 * raising.
 +		 */
 +		if (bfq_bfqq_in_large_burst(bfqq) ||
 +		    time_is_before_jiffies(bfqq->last_wr_start_finish +
@@ -3456,11 +3581,13 @@ index 0000000..773b2ee
 +				     bfqq->last_wr_start_finish,
 +				     jiffies_to_msecs(bfqq->wr_cur_max_time));
 +			bfq_bfqq_end_wr(bfqq);
-+			__bfq_entity_update_weight_prio(
-+				bfq_entity_service_tree(entity),
-+				entity);
 +		}
 +	}
++	/* Update weight both if it must be raised and if it must be lowered */
++	if ((entity->weight > entity->orig_weight) != (bfqq->wr_coeff > 1))
++		__bfq_entity_update_weight_prio(
++			bfq_entity_service_tree(entity),
++			entity);
 +}
 +
 +/*
@@ -3478,7 +3605,7 @@ index 0000000..773b2ee
 +
 +	/* Follow expired path, else get first next available. */
 +	rq = bfq_check_fifo(bfqq);
-+	if (rq == NULL)
++	if (!rq)
 +		rq = bfqq->next_rq;
 +	service_to_charge = bfq_serv_to_charge(rq, bfqq);
 +
@@ -3514,14 +3641,14 @@ index 0000000..773b2ee
 +	bfq_update_wr_data(bfqd, bfqq);
 +
 +	bfq_log_bfqq(bfqd, bfqq,
-+			"dispatched %u sec req (%llu), budg left %lu",
++			"dispatched %u sec req (%llu), budg left %d",
 +			blk_rq_sectors(rq),
 +			(long long unsigned)blk_rq_pos(rq),
 +			bfq_bfqq_budget_left(bfqq));
 +
 +	dispatched++;
 +
-+	if (bfqd->in_service_bic == NULL) {
++	if (!bfqd->in_service_bic) {
 +		atomic_long_inc(&RQ_BIC(rq)->icq.ioc->refcount);
 +		bfqd->in_service_bic = RQ_BIC(rq);
 +	}
@@ -3534,7 +3661,7 @@ index 0000000..773b2ee
 +	return dispatched;
 +
 +expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_EXHAUSTED);
++	bfq_bfqq_expire(bfqd, bfqq, false, BFQ_BFQQ_BUDGET_EXHAUSTED);
 +	return dispatched;
 +}
 +
@@ -3542,7 +3669,7 @@ index 0000000..773b2ee
 +{
 +	int dispatched = 0;
 +
-+	while (bfqq->next_rq != NULL) {
++	while (bfqq->next_rq) {
 +		bfq_dispatch_insert(bfqq->bfqd->queue, bfqq->next_rq);
 +		dispatched++;
 +	}
@@ -3562,7 +3689,7 @@ index 0000000..773b2ee
 +	int dispatched = 0;
 +
 +	bfqq = bfqd->in_service_queue;
-+	if (bfqq != NULL)
++	if (bfqq)
 +		__bfq_bfqq_expire(bfqd, bfqq);
 +
 +	/*
@@ -3598,7 +3725,7 @@ index 0000000..773b2ee
 +		return bfq_forced_dispatch(bfqd);
 +
 +	bfqq = bfq_select_queue(bfqd);
-+	if (bfqq == NULL)
++	if (!bfqq)
 +		return 0;
 +
 +	if (bfq_class_idle(bfqq))
@@ -3638,6 +3765,9 @@ index 0000000..773b2ee
 +static void bfq_put_queue(struct bfq_queue *bfqq)
 +{
 +	struct bfq_data *bfqd = bfqq->bfqd;
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	struct bfq_group *bfqg = bfqq_group(bfqq);
++#endif
 +
 +	BUG_ON(atomic_read(&bfqq->ref) <= 0);
 +
@@ -3646,9 +3776,9 @@ index 0000000..773b2ee
 +	if (!atomic_dec_and_test(&bfqq->ref))
 +		return;
 +
-+	BUG_ON(rb_first(&bfqq->sort_list) != NULL);
++	BUG_ON(rb_first(&bfqq->sort_list));
 +	BUG_ON(bfqq->allocated[READ] + bfqq->allocated[WRITE] != 0);
-+	BUG_ON(bfqq->entity.tree != NULL);
++	BUG_ON(bfqq->entity.tree);
 +	BUG_ON(bfq_bfqq_busy(bfqq));
 +	BUG_ON(bfqd->in_service_queue == bfqq);
 +
@@ -3666,25 +3796,9 @@ index 0000000..773b2ee
 +	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p freed", bfqq);
 +
 +	kmem_cache_free(bfq_pool, bfqq);
-+}
-+
-+static void bfq_put_cooperator(struct bfq_queue *bfqq)
-+{
-+	struct bfq_queue *__bfqq, *next;
-+
-+	/*
-+	 * If this queue was scheduled to merge with another queue, be
-+	 * sure to drop the reference taken on that queue (and others in
-+	 * the merge chain). See bfq_setup_merge and bfq_merge_bfqqs.
-+	 */
-+	__bfqq = bfqq->new_bfqq;
-+	while (__bfqq) {
-+		if (__bfqq == bfqq)
-+			break;
-+		next = __bfqq->new_bfqq;
-+		bfq_put_queue(__bfqq);
-+		__bfqq = next;
-+	}
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_put(bfqg);
++#endif
 +}
 +
 +static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
@@ -3697,12 +3811,10 @@ index 0000000..773b2ee
 +	bfq_log_bfqq(bfqd, bfqq, "exit_bfqq: %p, %d", bfqq,
 +		     atomic_read(&bfqq->ref));
 +
-+	bfq_put_cooperator(bfqq);
-+
 +	bfq_put_queue(bfqq);
 +}
 +
-+static inline void bfq_init_icq(struct io_cq *icq)
++static void bfq_init_icq(struct io_cq *icq)
 +{
 +	struct bfq_io_cq *bic = icq_to_bic(icq);
 +
@@ -3743,40 +3855,38 @@ index 0000000..773b2ee
 +		/*
 +		 * No prio set, inherit CPU scheduling settings.
 +		 */
-+		bfqq->entity.new_ioprio = task_nice_ioprio(tsk);
-+		bfqq->entity.new_ioprio_class = task_nice_ioclass(tsk);
++		bfqq->new_ioprio = task_nice_ioprio(tsk);
++		bfqq->new_ioprio_class = task_nice_ioclass(tsk);
 +		break;
 +	case IOPRIO_CLASS_RT:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_RT;
++		bfqq->new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
++		bfqq->new_ioprio_class = IOPRIO_CLASS_RT;
 +		break;
 +	case IOPRIO_CLASS_BE:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_BE;
++		bfqq->new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
++		bfqq->new_ioprio_class = IOPRIO_CLASS_BE;
 +		break;
 +	case IOPRIO_CLASS_IDLE:
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_IDLE;
-+		bfqq->entity.new_ioprio = 7;
++		bfqq->new_ioprio_class = IOPRIO_CLASS_IDLE;
++		bfqq->new_ioprio = 7;
 +		bfq_clear_bfqq_idle_window(bfqq);
 +		break;
 +	}
 +
-+	if (bfqq->entity.new_ioprio < 0 ||
-+	    bfqq->entity.new_ioprio >= IOPRIO_BE_NR) {
++	if (bfqq->new_ioprio < 0 || bfqq->new_ioprio >= IOPRIO_BE_NR) {
 +		printk(KERN_CRIT "bfq_set_next_ioprio_data: new_ioprio %d\n",
-+				 bfqq->entity.new_ioprio);
++				 bfqq->new_ioprio);
 +		BUG();
 +	}
 +
-+	bfqq->entity.new_weight = bfq_ioprio_to_weight(bfqq->entity.new_ioprio);
-+	bfqq->entity.ioprio_changed = 1;
++	bfqq->entity.new_weight = bfq_ioprio_to_weight(bfqq->new_ioprio);
++	bfqq->entity.prio_changed = 1;
 +}
 +
-+static void bfq_check_ioprio_change(struct bfq_io_cq *bic)
++static void bfq_check_ioprio_change(struct bfq_io_cq *bic, struct bio *bio)
 +{
 +	struct bfq_data *bfqd;
 +	struct bfq_queue *bfqq, *new_bfqq;
-+	struct bfq_group *bfqg;
 +	unsigned long uninitialized_var(flags);
 +	int ioprio = bic->icq.ioc->ioprio;
 +
@@ -3786,18 +3896,16 @@ index 0000000..773b2ee
 +	 * This condition may trigger on a newly created bic, be sure to
 +	 * drop the lock before returning.
 +	 */
-+	if (unlikely(bfqd == NULL) || likely(bic->ioprio == ioprio))
++	if (unlikely(!bfqd) || likely(bic->ioprio == ioprio))
 +		goto out;
 +
 +	bic->ioprio = ioprio;
 +
 +	bfqq = bic->bfqq[BLK_RW_ASYNC];
-+	if (bfqq != NULL) {
-+		bfqg = container_of(bfqq->entity.sched_data, struct bfq_group,
-+				    sched_data);
-+		new_bfqq = bfq_get_queue(bfqd, bfqg, BLK_RW_ASYNC, bic,
++	if (bfqq) {
++		new_bfqq = bfq_get_queue(bfqd, bio, BLK_RW_ASYNC, bic,
 +					 GFP_ATOMIC);
-+		if (new_bfqq != NULL) {
++		if (new_bfqq) {
 +			bic->bfqq[BLK_RW_ASYNC] = new_bfqq;
 +			bfq_log_bfqq(bfqd, bfqq,
 +				     "check_ioprio_change: bfqq %p %d",
@@ -3807,7 +3915,7 @@ index 0000000..773b2ee
 +	}
 +
 +	bfqq = bic->bfqq[BLK_RW_SYNC];
-+	if (bfqq != NULL)
++	if (bfqq)
 +		bfq_set_next_ioprio_data(bfqq, bic);
 +
 +out:
@@ -3831,7 +3939,8 @@ index 0000000..773b2ee
 +		if (!bfq_class_idle(bfqq))
 +			bfq_mark_bfqq_idle_window(bfqq);
 +		bfq_mark_bfqq_sync(bfqq);
-+	}
++	} else
++		bfq_clear_bfqq_sync(bfqq);
 +	bfq_mark_bfqq_IO_bound(bfqq);
 +
 +	/* Tentative initial value to trade off between thr and lat */
@@ -3848,14 +3957,19 @@ index 0000000..773b2ee
 +}
 +
 +static struct bfq_queue *bfq_find_alloc_queue(struct bfq_data *bfqd,
-+					      struct bfq_group *bfqg,
-+					      int is_sync,
++					      struct bio *bio, int is_sync,
 +					      struct bfq_io_cq *bic,
 +					      gfp_t gfp_mask)
 +{
++	struct bfq_group *bfqg;
 +	struct bfq_queue *bfqq, *new_bfqq = NULL;
++	struct blkcg *blkcg;
 +
 +retry:
++	rcu_read_lock();
++
++	blkcg = bio_blkcg(bio);
++	bfqg = bfq_find_alloc_group(bfqd, blkcg);
 +	/* bic always exists here */
 +	bfqq = bic_to_bfqq(bic, is_sync);
 +
@@ -3863,18 +3977,19 @@ index 0000000..773b2ee
 +	 * Always try a new alloc if we fall back to the OOM bfqq
 +	 * originally, since it should just be a temporary situation.
 +	 */
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
++	if (!bfqq || bfqq == &bfqd->oom_bfqq) {
 +		bfqq = NULL;
-+		if (new_bfqq != NULL) {
++		if (new_bfqq) {
 +			bfqq = new_bfqq;
 +			new_bfqq = NULL;
-+		} else if (gfp_mask & __GFP_WAIT) {
++		} else if (gfpflags_allow_blocking(gfp_mask)) {
++			rcu_read_unlock();
 +			spin_unlock_irq(bfqd->queue->queue_lock);
 +			new_bfqq = kmem_cache_alloc_node(bfq_pool,
 +					gfp_mask | __GFP_ZERO,
 +					bfqd->queue->node);
 +			spin_lock_irq(bfqd->queue->queue_lock);
-+			if (new_bfqq != NULL)
++			if (new_bfqq)
 +				goto retry;
 +		} else {
 +			bfqq = kmem_cache_alloc_node(bfq_pool,
@@ -3882,7 +3997,7 @@ index 0000000..773b2ee
 +					bfqd->queue->node);
 +		}
 +
-+		if (bfqq != NULL) {
++		if (bfqq) {
 +			bfq_init_bfqq(bfqd, bfqq, bic, current->pid,
 +                                      is_sync);
 +			bfq_init_entity(&bfqq->entity, bfqg);
@@ -3893,9 +4008,11 @@ index 0000000..773b2ee
 +		}
 +	}
 +
-+	if (new_bfqq != NULL)
++	if (new_bfqq)
 +		kmem_cache_free(bfq_pool, new_bfqq);
 +
++	rcu_read_unlock();
++
 +	return bfqq;
 +}
 +
@@ -3919,7 +4036,7 @@ index 0000000..773b2ee
 +}
 +
 +static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
++				       struct bio *bio, int is_sync,
 +				       struct bfq_io_cq *bic, gfp_t gfp_mask)
 +{
 +	const int ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
@@ -3928,19 +4045,26 @@ index 0000000..773b2ee
 +	struct bfq_queue *bfqq = NULL;
 +
 +	if (!is_sync) {
++		struct blkcg *blkcg;
++		struct bfq_group *bfqg;
++
++		rcu_read_lock();
++		blkcg = bio_blkcg(bio);
++		rcu_read_unlock();
++		bfqg = bfq_find_alloc_group(bfqd, blkcg);
 +		async_bfqq = bfq_async_queue_prio(bfqd, bfqg, ioprio_class,
 +						  ioprio);
 +		bfqq = *async_bfqq;
 +	}
 +
-+	if (bfqq == NULL)
-+		bfqq = bfq_find_alloc_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
++	if (!bfqq)
++		bfqq = bfq_find_alloc_queue(bfqd, bio, is_sync, bic, gfp_mask);
 +
 +	/*
 +	 * Pin the queue now that it's allocated, scheduler exit will
 +	 * prune it.
 +	 */
-+	if (!is_sync && *async_bfqq == NULL) {
++	if (!is_sync && !(*async_bfqq)) {
 +		atomic_inc(&bfqq->ref);
 +		bfq_log_bfqq(bfqd, bfqq, "get_queue, bfqq not in async: %p, %d",
 +			     bfqq, atomic_read(&bfqq->ref));
@@ -4068,9 +4192,9 @@ index 0000000..773b2ee
 +	bfqq->last_request_pos = blk_rq_pos(rq) + blk_rq_sectors(rq);
 +
 +	if (bfqq == bfqd->in_service_queue && bfq_bfqq_wait_request(bfqq)) {
-+		int small_req = bfqq->queued[rq_is_sync(rq)] == 1 &&
-+				blk_rq_sectors(rq) < 32;
-+		int budget_timeout = bfq_bfqq_budget_timeout(bfqq);
++		bool small_req = bfqq->queued[rq_is_sync(rq)] == 1 &&
++				 blk_rq_sectors(rq) < 32;
++		bool budget_timeout = bfq_bfqq_budget_timeout(bfqq);
 +
 +		/*
 +		 * There is just this request queued: if the request
@@ -4097,6 +4221,9 @@ index 0000000..773b2ee
 +		 */
 +		bfq_clear_bfqq_wait_request(bfqq);
 +		del_timer(&bfqd->idle_slice_timer);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++		bfqg_stats_update_idle_time(bfqq_group(bfqq));
++#endif
 +
 +		/*
 +		 * The queue is not empty, because a new request just
@@ -4106,7 +4233,8 @@ index 0000000..773b2ee
 +		 * See [1] for more details.
 +		 */
 +		if (budget_timeout)
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
++			bfq_bfqq_expire(bfqd, bfqq, false,
++					BFQ_BFQQ_BUDGET_TIMEOUT);
 +
 +		/*
 +		 * Let the request rip immediately, or let a new queue be
@@ -4171,6 +4299,11 @@ index 0000000..773b2ee
 +	BUG_ON(!bfqq->dispatched);
 +	bfqd->rq_in_driver--;
 +	bfqq->dispatched--;
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_update_completion(bfqq_group(bfqq),
++				     rq_start_time_ns(rq),
++				     rq_io_start_time_ns(rq), rq->cmd_flags);
++#endif
 +
 +	if (!bfqq->dispatched && !bfq_bfqq_busy(bfqq)) {
 +		bfq_weights_tree_remove(bfqd, &bfqq->entity,
@@ -4215,11 +4348,12 @@ index 0000000..773b2ee
 +			bfq_arm_slice_timer(bfqd);
 +			goto out;
 +		} else if (bfq_may_expire_for_budg_timeout(bfqq))
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
++			bfq_bfqq_expire(bfqd, bfqq, false,
++					BFQ_BFQQ_BUDGET_TIMEOUT);
 +		else if (RB_EMPTY_ROOT(&bfqq->sort_list) &&
 +			 (bfqq->dispatched == 0 ||
-+			  !bfq_bfqq_must_not_expire(bfqq)))
-+			bfq_bfqq_expire(bfqd, bfqq, 0,
++			  !bfq_bfqq_may_idle(bfqq)))
++			bfq_bfqq_expire(bfqd, bfqq, false,
 +					BFQ_BFQQ_NO_MORE_REQUESTS);
 +	}
 +
@@ -4230,7 +4364,7 @@ index 0000000..773b2ee
 +	return;
 +}
 +
-+static inline int __bfq_may_queue(struct bfq_queue *bfqq)
++static int __bfq_may_queue(struct bfq_queue *bfqq)
 +{
 +	if (bfq_bfqq_wait_request(bfqq) && bfq_bfqq_must_alloc(bfqq)) {
 +		bfq_clear_bfqq_must_alloc(bfqq);
@@ -4254,11 +4388,11 @@ index 0000000..773b2ee
 +	 * 'may queue' if that fails.
 +	 */
 +	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
++	if (!bic)
 +		return ELV_MQUEUE_MAY;
 +
 +	bfqq = bic_to_bfqq(bic, rw_is_sync(rw));
-+	if (bfqq != NULL)
++	if (bfqq)
 +		return __bfq_may_queue(bfqq);
 +
 +	return ELV_MQUEUE_MAY;
@@ -4271,7 +4405,7 @@ index 0000000..773b2ee
 +{
 +	struct bfq_queue *bfqq = RQ_BFQQ(rq);
 +
-+	if (bfqq != NULL) {
++	if (bfqq) {
 +		const int rw = rq_data_dir(rq);
 +
 +		BUG_ON(!bfqq->allocated[rw]);
@@ -4286,41 +4420,6 @@ index 0000000..773b2ee
 +	}
 +}
 +
-+static struct bfq_queue *
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)bfqq->new_bfqq->pid);
-+	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
-+	bfq_mark_bfqq_coop(bfqq->new_bfqq);
-+	bfq_put_queue(bfqq);
-+	return bic_to_bfqq(bic, 1);
-+}
-+
-+/*
-+ * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-+ * was the last process referring to said bfqq.
-+ */
-+static struct bfq_queue *
-+bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+	if (bfqq_process_refs(bfqq) == 1) {
-+		bfqq->pid = current->pid;
-+		bfq_clear_bfqq_coop(bfqq);
-+		bfq_clear_bfqq_split_coop(bfqq);
-+		return bfqq;
-+	}
-+
-+	bic_set_bfqq(bic, NULL, 1);
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+	return NULL;
-+}
-+
 +/*
 + * Allocate bfq data structures associated with this request.
 + */
@@ -4332,44 +4431,29 @@ index 0000000..773b2ee
 +	const int rw = rq_data_dir(rq);
 +	const int is_sync = rq_is_sync(rq);
 +	struct bfq_queue *bfqq;
-+	struct bfq_group *bfqg;
 +	unsigned long flags;
 +
-+	might_sleep_if(gfp_mask & __GFP_WAIT);
++	might_sleep_if(gfpflags_allow_blocking(gfp_mask));
 +
-+	bfq_check_ioprio_change(bic);
++	bfq_check_ioprio_change(bic, bio);
 +
 +	spin_lock_irqsave(q->queue_lock, flags);
 +
-+	if (bic == NULL)
++	if (!bic)
 +		goto queue_fail;
 +
-+	bfqg = bfq_bic_update_cgroup(bic);
++	bfq_bic_update_cgroup(bic, bio);
 +
-+new_queue:
 +	bfqq = bic_to_bfqq(bic, is_sync);
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
++	if (!bfqq || bfqq == &bfqd->oom_bfqq) {
++		bfqq = bfq_get_queue(bfqd, bio, is_sync, bic, gfp_mask);
 +		bic_set_bfqq(bic, bfqq, is_sync);
-+	} else {
-+		/*
-+		 * If the queue was seeky for too long, break it apart.
-+		 */
-+		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
-+			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
-+			bfqq = bfq_split_bfqq(bic, bfqq);
-+			if (!bfqq)
-+				goto new_queue;
++		if (is_sync) {
++			if (bfqd->large_burst)
++				bfq_mark_bfqq_in_large_burst(bfqq);
++			else
++				bfq_clear_bfqq_in_large_burst(bfqq);
 +		}
-+
-+		/*
-+		 * Check to see if this queue is scheduled to merge with
-+		 * another closely cooperating queue. The merging of queues
-+		 * happens here as it must be done in process context.
-+		 * The reference on new_bfqq was taken in merge_bfqqs.
-+		 */
-+		if (bfqq->new_bfqq != NULL)
-+			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
 +	}
 +
 +	bfqq->allocated[rw]++;
@@ -4424,7 +4508,7 @@ index 0000000..773b2ee
 +	 * the in-service queue.  This can hardly happen, but in the worst
 +	 * case we just expire a queue too early.
 +	 */
-+	if (bfqq != NULL) {
++	if (bfqq) {
 +		bfq_log_bfqq(bfqd, bfqq, "slice_timer expired");
 +		if (bfq_bfqq_budget_timeout(bfqq))
 +			/*
@@ -4444,7 +4528,7 @@ index 0000000..773b2ee
 +		else
 +			goto schedule_dispatch;
 +
-+		bfq_bfqq_expire(bfqd, bfqq, 1, reason);
++		bfq_bfqq_expire(bfqd, bfqq, true, reason);
 +	}
 +
 +schedule_dispatch:
@@ -4459,14 +4543,14 @@ index 0000000..773b2ee
 +	cancel_work_sync(&bfqd->unplug_work);
 +}
 +
-+static inline void __bfq_put_async_bfqq(struct bfq_data *bfqd,
++static void __bfq_put_async_bfqq(struct bfq_data *bfqd,
 +					struct bfq_queue **bfqq_ptr)
 +{
 +	struct bfq_group *root_group = bfqd->root_group;
 +	struct bfq_queue *bfqq = *bfqq_ptr;
 +
 +	bfq_log(bfqd, "put_async_bfqq: %p", bfqq);
-+	if (bfqq != NULL) {
++	if (bfqq) {
 +		bfq_bfqq_move(bfqd, bfqq, &bfqq->entity, root_group);
 +		bfq_log_bfqq(bfqd, bfqq, "put_async_bfqq: putting %p, %d",
 +			     bfqq, atomic_read(&bfqq->ref));
@@ -4502,11 +4586,10 @@ index 0000000..773b2ee
 +
 +	spin_lock_irq(q->queue_lock);
 +
-+	BUG_ON(bfqd->in_service_queue != NULL);
++	BUG_ON(bfqd->in_service_queue);
 +	list_for_each_entry_safe(bfqq, n, &bfqd->idle_list, bfqq_list)
 +		bfq_deactivate_bfqq(bfqd, bfqq, 0);
 +
-+	bfq_disconnect_groups(bfqd);
 +	spin_unlock_irq(q->queue_lock);
 +
 +	bfq_shutdown_timer_wq(bfqd);
@@ -4515,22 +4598,40 @@ index 0000000..773b2ee
 +
 +	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
 +
-+	bfq_free_root_group(bfqd);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	blkcg_deactivate_policy(q, &blkcg_policy_bfq);
++#else
++	kfree(bfqd->root_group);
++#endif
++
 +	kfree(bfqd);
 +}
 +
++static void bfq_init_root_group(struct bfq_group *root_group,
++				struct bfq_data *bfqd)
++{
++	int i;
++
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	root_group->entity.parent = NULL;
++	root_group->my_entity = NULL;
++	root_group->bfqd = bfqd;
++#endif
++	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
++		root_group->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
++}
++
 +static int bfq_init_queue(struct request_queue *q, struct elevator_type *e)
 +{
-+	struct bfq_group *bfqg;
 +	struct bfq_data *bfqd;
 +	struct elevator_queue *eq;
 +
 +	eq = elevator_alloc(q, e);
-+	if (eq == NULL)
++	if (!eq)
 +		return -ENOMEM;
 +
 +	bfqd = kzalloc_node(sizeof(*bfqd), GFP_KERNEL, q->node);
-+	if (bfqd == NULL) {
++	if (!bfqd) {
 +		kobject_put(&eq->kobj);
 +		return -ENOMEM;
 +	}
@@ -4543,16 +4644,16 @@ index 0000000..773b2ee
 +	 */
 +	bfq_init_bfqq(bfqd, &bfqd->oom_bfqq, NULL, 1, 0);
 +	atomic_inc(&bfqd->oom_bfqq.ref);
-+	bfqd->oom_bfqq.entity.new_ioprio = BFQ_DEFAULT_QUEUE_IOPRIO;
-+	bfqd->oom_bfqq.entity.new_ioprio_class = IOPRIO_CLASS_BE;
++	bfqd->oom_bfqq.new_ioprio = BFQ_DEFAULT_QUEUE_IOPRIO;
++	bfqd->oom_bfqq.new_ioprio_class = IOPRIO_CLASS_BE;
 +	bfqd->oom_bfqq.entity.new_weight =
-+		bfq_ioprio_to_weight(bfqd->oom_bfqq.entity.new_ioprio);
++		bfq_ioprio_to_weight(bfqd->oom_bfqq.new_ioprio);
 +	/*
 +	 * Trigger weight initialization, according to ioprio, at the
 +	 * oom_bfqq's first activation. The oom_bfqq's ioprio and ioprio
 +	 * class won't be changed any more.
 +	 */
-+	bfqd->oom_bfqq.entity.ioprio_changed = 1;
++	bfqd->oom_bfqq.entity.prio_changed = 1;
 +
 +	bfqd->queue = q;
 +
@@ -4560,16 +4661,12 @@ index 0000000..773b2ee
 +	q->elevator = eq;
 +	spin_unlock_irq(q->queue_lock);
 +
-+	bfqg = bfq_alloc_root_group(bfqd, q->node);
-+	if (bfqg == NULL) {
-+		kfree(bfqd);
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+
-+	bfqd->root_group = bfqg;
++	bfqd->root_group = bfq_create_group_hierarchy(bfqd, q->node);
++	if (!bfqd->root_group)
++		goto out_free;
++	bfq_init_root_group(bfqd->root_group, bfqd);
 +	bfq_init_entity(&bfqd->oom_bfqq.entity, bfqd->root_group);
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	bfqd->active_numerous_groups = 0;
 +#endif
 +
@@ -4577,7 +4674,6 @@ index 0000000..773b2ee
 +	bfqd->idle_slice_timer.function = bfq_idle_slice_timer;
 +	bfqd->idle_slice_timer.data = (unsigned long)bfqd;
 +
-+	bfqd->rq_pos_tree = RB_ROOT;
 +	bfqd->queue_weights_tree = RB_ROOT;
 +	bfqd->group_weights_tree = RB_ROOT;
 +
@@ -4601,8 +4697,6 @@ index 0000000..773b2ee
 +	bfqd->bfq_timeout[BLK_RW_ASYNC] = bfq_timeout_async;
 +	bfqd->bfq_timeout[BLK_RW_SYNC] = bfq_timeout_sync;
 +
-+	bfqd->bfq_coop_thresh = 2;
-+	bfqd->bfq_failed_cooperations = 7000;
 +	bfqd->bfq_requests_within_timer = 120;
 +
 +	bfqd->bfq_large_burst_thresh = 11;
@@ -4635,18 +4729,23 @@ index 0000000..773b2ee
 +	bfqd->device_speed = BFQ_BFQD_FAST;
 +
 +	return 0;
++
++out_free:
++	kfree(bfqd);
++	kobject_put(&eq->kobj);
++	return -ENOMEM;
 +}
 +
 +static void bfq_slab_kill(void)
 +{
-+	if (bfq_pool != NULL)
++	if (bfq_pool)
 +		kmem_cache_destroy(bfq_pool);
 +}
 +
 +static int __init bfq_slab_setup(void)
 +{
 +	bfq_pool = KMEM_CACHE(bfq_queue, 0);
-+	if (bfq_pool == NULL)
++	if (!bfq_pool)
 +		return -ENOMEM;
 +	return 0;
 +}
@@ -4791,7 +4890,7 @@ index 0000000..773b2ee
 +	return count;
 +}
 +
-+static inline unsigned long bfq_estimated_max_budget(struct bfq_data *bfqd)
++static unsigned long bfq_estimated_max_budget(struct bfq_data *bfqd)
 +{
 +	u64 timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
 +
@@ -4885,6 +4984,9 @@ index 0000000..773b2ee
 +		.elevator_merge_fn =		bfq_merge,
 +		.elevator_merged_fn =		bfq_merged_request,
 +		.elevator_merge_req_fn =	bfq_merged_requests,
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++		.elevator_bio_merged_fn =	bfq_bio_merged,
++#endif
 +		.elevator_allow_merge_fn =	bfq_allow_merge,
 +		.elevator_dispatch_fn =		bfq_dispatch_requests,
 +		.elevator_add_req_fn =		bfq_insert_request,
@@ -4910,6 +5012,8 @@ index 0000000..773b2ee
 +
 +static int __init bfq_init(void)
 +{
++	int ret;
++
 +	/*
 +	 * Can be 0 on HZ < 1000 setups.
 +	 */
@@ -4919,8 +5023,15 @@ index 0000000..773b2ee
 +	if (bfq_timeout_async == 0)
 +		bfq_timeout_async = 1;
 +
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	ret = blkcg_policy_register(&blkcg_policy_bfq);
++	if (ret)
++		return ret;
++#endif
++
++	ret = -ENOMEM;
 +	if (bfq_slab_setup())
-+		return -ENOMEM;
++		goto err_pol_unreg;
 +
 +	/*
 +	 * Times to load large popular applications for the typical systems
@@ -4939,29 +5050,41 @@ index 0000000..773b2ee
 +	device_speed_thresh[0] = (R_fast[0] + R_slow[0]) / 2;
 +	device_speed_thresh[1] = (R_fast[1] + R_slow[1]) / 2;
 +
-+	elv_register(&iosched_bfq);
-+	pr_info("BFQ I/O-scheduler: v7r8");
++	ret = elv_register(&iosched_bfq);
++	if (ret)
++		goto err_pol_unreg;
++
++	pr_info("BFQ I/O-scheduler: v7r11");
 +
 +	return 0;
++
++err_pol_unreg:
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	blkcg_policy_unregister(&blkcg_policy_bfq);
++#endif
++	return ret;
 +}
 +
 +static void __exit bfq_exit(void)
 +{
 +	elv_unregister(&iosched_bfq);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	blkcg_policy_unregister(&blkcg_policy_bfq);
++#endif
 +	bfq_slab_kill();
 +}
 +
 +module_init(bfq_init);
 +module_exit(bfq_exit);
 +
-+MODULE_AUTHOR("Fabio Checconi, Paolo Valente");
++MODULE_AUTHOR("Arianna Avanzini, Fabio Checconi, Paolo Valente");
 +MODULE_LICENSE("GPL");
 diff --git a/block/bfq-sched.c b/block/bfq-sched.c
 new file mode 100644
-index 0000000..c343099
+index 0000000..a64fec1
 --- /dev/null
 +++ b/block/bfq-sched.c
-@@ -0,0 +1,1208 @@
+@@ -0,0 +1,1200 @@
 +/*
 + * BFQ: Hierarchical B-WF2Q+ scheduler.
 + *
@@ -4974,24 +5097,27 @@ index 0000000..c343099
 + * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
 + */
 +
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = entity->parent)
++	for (; entity ; entity = entity->parent)
 +
 +#define for_each_entity_safe(entity, parent) \
 +	for (; entity && ({ parent = entity->parent; 1; }); entity = parent)
 +
++
 +static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
 +						 int extract,
 +						 struct bfq_data *bfqd);
 +
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
++static struct bfq_group *bfqq_group(struct bfq_queue *bfqq);
++
++static void bfq_update_budget(struct bfq_entity *next_in_service)
 +{
 +	struct bfq_entity *bfqg_entity;
 +	struct bfq_group *bfqg;
 +	struct bfq_sched_data *group_sd;
 +
-+	BUG_ON(next_in_service == NULL);
++	BUG_ON(!next_in_service);
 +
 +	group_sd = next_in_service->sched_data;
 +
@@ -5002,7 +5128,7 @@ index 0000000..c343099
 +	 * as it must never become an in-service entity.
 +	 */
 +	bfqg_entity = bfqg->my_entity;
-+	if (bfqg_entity != NULL)
++	if (bfqg_entity)
 +		bfqg_entity->budget = next_in_service->budget;
 +}
 +
@@ -5010,7 +5136,7 @@ index 0000000..c343099
 +{
 +	struct bfq_entity *next_in_service;
 +
-+	if (sd->in_service_entity != NULL)
++	if (sd->in_service_entity)
 +		/* will update/requeue at the end of service */
 +		return 0;
 +
@@ -5024,35 +5150,35 @@ index 0000000..c343099
 +	next_in_service = bfq_lookup_next_entity(sd, 0, NULL);
 +	sd->next_in_service = next_in_service;
 +
-+	if (next_in_service != NULL)
++	if (next_in_service)
 +		bfq_update_budget(next_in_service);
 +
 +	return 1;
 +}
 +
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
++static void bfq_check_next_in_service(struct bfq_sched_data *sd,
++				      struct bfq_entity *entity)
 +{
 +	BUG_ON(sd->next_in_service != entity);
 +}
 +#else
 +#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = NULL)
++	for (; entity ; entity = NULL)
 +
 +#define for_each_entity_safe(entity, parent) \
-+	for (parent = NULL; entity != NULL; entity = parent)
++	for (parent = NULL; entity ; entity = parent)
 +
-+static inline int bfq_update_next_in_service(struct bfq_sched_data *sd)
++static int bfq_update_next_in_service(struct bfq_sched_data *sd)
 +{
 +	return 0;
 +}
 +
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
++static void bfq_check_next_in_service(struct bfq_sched_data *sd,
++				      struct bfq_entity *entity)
 +{
 +}
 +
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
++static void bfq_update_budget(struct bfq_entity *next_in_service)
 +{
 +}
 +#endif
@@ -5073,18 +5199,18 @@ index 0000000..c343099
 + *
 + * Return @a > @b, dealing with wrapping correctly.
 + */
-+static inline int bfq_gt(u64 a, u64 b)
++static int bfq_gt(u64 a, u64 b)
 +{
 +	return (s64)(a - b) > 0;
 +}
 +
-+static inline struct bfq_queue *bfq_entity_to_bfqq(struct bfq_entity *entity)
++static struct bfq_queue *bfq_entity_to_bfqq(struct bfq_entity *entity)
 +{
 +	struct bfq_queue *bfqq = NULL;
 +
-+	BUG_ON(entity == NULL);
++	BUG_ON(!entity);
 +
-+	if (entity->my_sched_data == NULL)
++	if (!entity->my_sched_data)
 +		bfqq = container_of(entity, struct bfq_queue, entity);
 +
 +	return bfqq;
@@ -5096,8 +5222,7 @@ index 0000000..c343099
 + * @service: amount of service.
 + * @weight: scale factor (weight of an entity or weight sum).
 + */
-+static inline u64 bfq_delta(unsigned long service,
-+					unsigned long weight)
++static u64 bfq_delta(unsigned long service, unsigned long weight)
 +{
 +	u64 d = (u64)service << WFQ_SERVICE_SHIFT;
 +
@@ -5110,8 +5235,7 @@ index 0000000..c343099
 + * @entity: the entity to act upon.
 + * @service: the service to be charged to the entity.
 + */
-+static inline void bfq_calc_finish(struct bfq_entity *entity,
-+				   unsigned long service)
++static void bfq_calc_finish(struct bfq_entity *entity, unsigned long service)
 +{
 +	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +
@@ -5120,7 +5244,7 @@ index 0000000..c343099
 +	entity->finish = entity->start +
 +		bfq_delta(service, entity->weight);
 +
-+	if (bfqq != NULL) {
++	if (bfqq) {
 +		bfq_log_bfqq(bfqq->bfqd, bfqq,
 +			"calc_finish: serv %lu, w %d",
 +			service, entity->weight);
@@ -5140,11 +5264,11 @@ index 0000000..c343099
 + * conversion mechanism because, e.g., in the tree walking functions,
 + * the check for a %NULL value would be redundant.
 + */
-+static inline struct bfq_entity *bfq_entity_of(struct rb_node *node)
++static struct bfq_entity *bfq_entity_of(struct rb_node *node)
 +{
 +	struct bfq_entity *entity = NULL;
 +
-+	if (node != NULL)
++	if (node)
 +		entity = rb_entry(node, struct bfq_entity, rb_node);
 +
 +	return entity;
@@ -5155,8 +5279,7 @@ index 0000000..c343099
 + * @root: the tree root.
 + * @entity: the entity to remove.
 + */
-+static inline void bfq_extract(struct rb_root *root,
-+			       struct bfq_entity *entity)
++static void bfq_extract(struct rb_root *root, struct bfq_entity *entity)
 +{
 +	BUG_ON(entity->tree != root);
 +
@@ -5189,7 +5312,7 @@ index 0000000..c343099
 +
 +	bfq_extract(&st->idle, entity);
 +
-+	if (bfqq != NULL)
++	if (bfqq)
 +		list_del(&bfqq->bfqq_list);
 +}
 +
@@ -5207,9 +5330,9 @@ index 0000000..c343099
 +	struct rb_node **node = &root->rb_node;
 +	struct rb_node *parent = NULL;
 +
-+	BUG_ON(entity->tree != NULL);
++	BUG_ON(entity->tree);
 +
-+	while (*node != NULL) {
++	while (*node) {
 +		parent = *node;
 +		entry = rb_entry(parent, struct bfq_entity, rb_node);
 +
@@ -5235,12 +5358,11 @@ index 0000000..c343099
 + * that the subtree rooted at @node (which may be its left or its right
 + * child) has a valid min_start value.
 + */
-+static inline void bfq_update_min(struct bfq_entity *entity,
-+				  struct rb_node *node)
++static void bfq_update_min(struct bfq_entity *entity, struct rb_node *node)
 +{
 +	struct bfq_entity *child;
 +
-+	if (node != NULL) {
++	if (node) {
 +		child = rb_entry(node, struct bfq_entity, rb_node);
 +		if (bfq_gt(entity->min_start, child->min_start))
 +			entity->min_start = child->min_start;
@@ -5255,7 +5377,7 @@ index 0000000..c343099
 + * this function updates its min_start value.  The left and right subtrees
 + * are assumed to hold a correct min_start value.
 + */
-+static inline void bfq_update_active_node(struct rb_node *node)
++static void bfq_update_active_node(struct rb_node *node)
 +{
 +	struct bfq_entity *entity = rb_entry(node, struct bfq_entity, rb_node);
 +
@@ -5282,12 +5404,12 @@ index 0000000..c343099
 +	bfq_update_active_node(node);
 +
 +	parent = rb_parent(node);
-+	if (parent == NULL)
++	if (!parent)
 +		return;
 +
-+	if (node == parent->rb_left && parent->rb_right != NULL)
++	if (node == parent->rb_left && parent->rb_right)
 +		bfq_update_active_node(parent->rb_right);
-+	else if (parent->rb_left != NULL)
++	else if (parent->rb_left)
 +		bfq_update_active_node(parent->rb_left);
 +
 +	node = parent;
@@ -5319,7 +5441,7 @@ index 0000000..c343099
 +{
 +	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +	struct rb_node *node = &entity->rb_node;
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	struct bfq_sched_data *sd = NULL;
 +	struct bfq_group *bfqg = NULL;
 +	struct bfq_data *bfqd = NULL;
@@ -5327,22 +5449,22 @@ index 0000000..c343099
 +
 +	bfq_insert(&st->active, entity);
 +
-+	if (node->rb_left != NULL)
++	if (node->rb_left)
 +		node = node->rb_left;
-+	else if (node->rb_right != NULL)
++	else if (node->rb_right)
 +		node = node->rb_right;
 +
 +	bfq_update_active_tree(node);
 +
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	sd = entity->sched_data;
 +	bfqg = container_of(sd, struct bfq_group, sched_data);
 +	BUG_ON(!bfqg);
 +	bfqd = (struct bfq_data *)bfqg->bfqd;
 +#endif
-+	if (bfqq != NULL)
++	if (bfqq)
 +		list_add(&bfqq->bfqq_list, &bfqq->bfqd->active_list);
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	else { /* bfq_group */
 +		BUG_ON(!bfqd);
 +		bfq_weights_tree_add(bfqd, entity, &bfqd->group_weights_tree);
@@ -5361,31 +5483,32 @@ index 0000000..c343099
 + * bfq_ioprio_to_weight - calc a weight from an ioprio.
 + * @ioprio: the ioprio value to convert.
 + */
-+static inline unsigned short bfq_ioprio_to_weight(int ioprio)
++static unsigned short bfq_ioprio_to_weight(int ioprio)
 +{
 +	BUG_ON(ioprio < 0 || ioprio >= IOPRIO_BE_NR);
-+	return IOPRIO_BE_NR - ioprio;
++	return IOPRIO_BE_NR * BFQ_WEIGHT_CONVERSION_COEFF - ioprio;
 +}
 +
 +/**
 + * bfq_weight_to_ioprio - calc an ioprio from a weight.
 + * @weight: the weight value to convert.
 + *
-+ * To preserve as mush as possible the old only-ioprio user interface,
++ * To preserve as much as possible the old only-ioprio user interface,
 + * 0 is used as an escape ioprio value for weights (numerically) equal or
-+ * larger than IOPRIO_BE_NR
++ * larger than IOPRIO_BE_NR * BFQ_WEIGHT_CONVERSION_COEFF.
 + */
-+static inline unsigned short bfq_weight_to_ioprio(int weight)
++static unsigned short bfq_weight_to_ioprio(int weight)
 +{
 +	BUG_ON(weight < BFQ_MIN_WEIGHT || weight > BFQ_MAX_WEIGHT);
-+	return IOPRIO_BE_NR - weight < 0 ? 0 : IOPRIO_BE_NR - weight;
++	return IOPRIO_BE_NR * BFQ_WEIGHT_CONVERSION_COEFF - weight < 0 ?
++		0 : IOPRIO_BE_NR * BFQ_WEIGHT_CONVERSION_COEFF - weight;
 +}
 +
-+static inline void bfq_get_entity(struct bfq_entity *entity)
++static void bfq_get_entity(struct bfq_entity *entity)
 +{
 +	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +
-+	if (bfqq != NULL) {
++	if (bfqq) {
 +		atomic_inc(&bfqq->ref);
 +		bfq_log_bfqq(bfqq->bfqd, bfqq, "get_entity: %p %d",
 +			     bfqq, atomic_read(&bfqq->ref));
@@ -5405,15 +5528,15 @@ index 0000000..c343099
 +{
 +	struct rb_node *deepest;
 +
-+	if (node->rb_right == NULL && node->rb_left == NULL)
++	if (!node->rb_right && !node->rb_left)
 +		deepest = rb_parent(node);
-+	else if (node->rb_right == NULL)
++	else if (!node->rb_right)
 +		deepest = node->rb_left;
-+	else if (node->rb_left == NULL)
++	else if (!node->rb_left)
 +		deepest = node->rb_right;
 +	else {
 +		deepest = rb_next(node);
-+		if (deepest->rb_right != NULL)
++		if (deepest->rb_right)
 +			deepest = deepest->rb_right;
 +		else if (rb_parent(deepest) != node)
 +			deepest = rb_parent(deepest);
@@ -5432,7 +5555,7 @@ index 0000000..c343099
 +{
 +	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +	struct rb_node *node;
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	struct bfq_sched_data *sd = NULL;
 +	struct bfq_group *bfqg = NULL;
 +	struct bfq_data *bfqd = NULL;
@@ -5441,18 +5564,18 @@ index 0000000..c343099
 +	node = bfq_find_deepest(&entity->rb_node);
 +	bfq_extract(&st->active, entity);
 +
-+	if (node != NULL)
++	if (node)
 +		bfq_update_active_tree(node);
 +
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	sd = entity->sched_data;
 +	bfqg = container_of(sd, struct bfq_group, sched_data);
 +	BUG_ON(!bfqg);
 +	bfqd = (struct bfq_data *)bfqg->bfqd;
 +#endif
-+	if (bfqq != NULL)
++	if (bfqq)
 +		list_del(&bfqq->bfqq_list);
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	else { /* bfq_group */
 +		BUG_ON(!bfqd);
 +		bfq_weights_tree_remove(bfqd, entity,
@@ -5483,14 +5606,14 @@ index 0000000..c343099
 +	struct bfq_entity *first_idle = st->first_idle;
 +	struct bfq_entity *last_idle = st->last_idle;
 +
-+	if (first_idle == NULL || bfq_gt(first_idle->finish, entity->finish))
++	if (!first_idle || bfq_gt(first_idle->finish, entity->finish))
 +		st->first_idle = entity;
-+	if (last_idle == NULL || bfq_gt(entity->finish, last_idle->finish))
++	if (!last_idle || bfq_gt(entity->finish, last_idle->finish))
 +		st->last_idle = entity;
 +
 +	bfq_insert(&st->idle, entity);
 +
-+	if (bfqq != NULL)
++	if (bfqq)
 +		list_add(&bfqq->bfqq_list, &bfqq->bfqd->idle_list);
 +}
 +
@@ -5513,7 +5636,7 @@ index 0000000..c343099
 +
 +	entity->on_st = 0;
 +	st->wsum -= entity->weight;
-+	if (bfqq != NULL) {
++	if (bfqq) {
 +		sd = entity->sched_data;
 +		bfq_log_bfqq(bfqq->bfqd, bfqq, "forget_entity: %p %d",
 +			     bfqq, atomic_read(&bfqq->ref));
@@ -5545,7 +5668,7 @@ index 0000000..c343099
 +	struct bfq_entity *first_idle = st->first_idle;
 +	struct bfq_entity *last_idle = st->last_idle;
 +
-+	if (RB_EMPTY_ROOT(&st->active) && last_idle != NULL &&
++	if (RB_EMPTY_ROOT(&st->active) && last_idle &&
 +	    !bfq_gt(last_idle->finish, st->vtime)) {
 +		/*
 +		 * Forget the whole idle tree, increasing the vtime past
@@ -5554,7 +5677,7 @@ index 0000000..c343099
 +		st->vtime = last_idle->finish;
 +	}
 +
-+	if (first_idle != NULL && !bfq_gt(first_idle->finish, st->vtime))
++	if (first_idle && !bfq_gt(first_idle->finish, st->vtime))
 +		bfq_put_idle_entity(st, first_idle);
 +}
 +
@@ -5564,19 +5687,19 @@ index 0000000..c343099
 +{
 +	struct bfq_service_tree *new_st = old_st;
 +
-+	if (entity->ioprio_changed) {
++	if (entity->prio_changed) {
 +		struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
 +		unsigned short prev_weight, new_weight;
 +		struct bfq_data *bfqd = NULL;
 +		struct rb_root *root;
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +		struct bfq_sched_data *sd;
 +		struct bfq_group *bfqg;
 +#endif
 +
-+		if (bfqq != NULL)
++		if (bfqq)
 +			bfqd = bfqq->bfqd;
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +		else {
 +			sd = entity->my_sched_data;
 +			bfqg = container_of(sd, struct bfq_group, sched_data);
@@ -5598,12 +5721,14 @@ index 0000000..c343099
 +				BUG();
 +			}
 +			entity->orig_weight = entity->new_weight;
-+			entity->ioprio =
-+				bfq_weight_to_ioprio(entity->orig_weight);
++			if (bfqq)
++				bfqq->ioprio =
++				  bfq_weight_to_ioprio(entity->orig_weight);
 +		}
 +
-+		entity->ioprio_class = entity->new_ioprio_class;
-+		entity->ioprio_changed = 0;
++		if (bfqq)
++			bfqq->ioprio_class = bfqq->new_ioprio_class;
++		entity->prio_changed = 0;
 +
 +		/*
 +		 * NOTE: here we may be changing the weight too early,
@@ -5616,7 +5741,7 @@ index 0000000..c343099
 +
 +		prev_weight = entity->weight;
 +		new_weight = entity->orig_weight *
-+			     (bfqq != NULL ? bfqq->wr_coeff : 1);
++			     (bfqq ? bfqq->wr_coeff : 1);
 +		/*
 +		 * If the weight of the entity changes, remove the entity
 +		 * from its old weight counter (if there is a counter
@@ -5647,6 +5772,10 @@ index 0000000..c343099
 +	return new_st;
 +}
 +
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++static void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg);
++#endif
++
 +/**
 + * bfq_bfqq_served - update the scheduler status after selection for
 + *                   service.
@@ -5657,7 +5786,7 @@ index 0000000..c343099
 + * are synchronized every time a new bfqq is selected for service.  By now,
 + * we keep it to better check consistency.
 + */
-+static void bfq_bfqq_served(struct bfq_queue *bfqq, unsigned long served)
++static void bfq_bfqq_served(struct bfq_queue *bfqq, int served)
 +{
 +	struct bfq_entity *entity = &bfqq->entity;
 +	struct bfq_service_tree *st;
@@ -5672,7 +5801,10 @@ index 0000000..c343099
 +		st->vtime += bfq_delta(served, st->wsum);
 +		bfq_forget_idle(st);
 +	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "bfqq_served %lu secs", served);
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_set_start_empty_time(bfqq_group(bfqq));
++#endif
++	bfq_log_bfqq(bfqq->bfqd, bfqq, "bfqq_served %d secs", served);
 +}
 +
 +/**
@@ -5685,7 +5817,7 @@ index 0000000..c343099
 + * budget.  In this way we should obtain a sort of time-domain
 + * fairness among all the seeky/slow queues.
 + */
-+static inline void bfq_bfqq_charge_full_budget(struct bfq_queue *bfqq)
++static void bfq_bfqq_charge_full_budget(struct bfq_queue *bfqq)
 +{
 +	struct bfq_entity *entity = &bfqq->entity;
 +
@@ -5710,7 +5842,7 @@ index 0000000..c343099
 +	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
 +
 +	if (entity == sd->in_service_entity) {
-+		BUG_ON(entity->tree != NULL);
++		BUG_ON(entity->tree);
 +		/*
 +		 * If we are requeueing the current entity we have
 +		 * to take care of not charging to it service it has
@@ -5794,14 +5926,17 @@ index 0000000..c343099
 +static int __bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
 +{
 +	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	int was_in_service = entity == sd->in_service_entity;
++	struct bfq_service_tree *st;
++	int was_in_service;
 +	int ret = 0;
 +
-+	if (!entity->on_st)
++	if (sd == NULL || !entity->on_st) /* never activated, or inactive */
 +		return 0;
 +
-+	BUG_ON(was_in_service && entity->tree != NULL);
++	st = bfq_entity_service_tree(entity);
++	was_in_service = entity == sd->in_service_entity;
++
++	BUG_ON(was_in_service && entity->tree);
 +
 +	if (was_in_service) {
 +		bfq_calc_finish(entity, entity->service);
@@ -5810,7 +5945,7 @@ index 0000000..c343099
 +		bfq_active_extract(st, entity);
 +	else if (entity->tree == &st->idle)
 +		bfq_idle_extract(st, entity);
-+	else if (entity->tree != NULL)
++	else if (entity->tree)
 +		BUG();
 +
 +	if (was_in_service || sd->next_in_service == entity)
@@ -5848,7 +5983,7 @@ index 0000000..c343099
 +			 */
 +			break;
 +
-+		if (sd->next_in_service != NULL)
++		if (sd->next_in_service)
 +			/*
 +			 * The parent entity is still backlogged and
 +			 * the budgets on the path towards the root
@@ -5917,7 +6052,7 @@ index 0000000..c343099
 +	struct bfq_entity *entry, *first = NULL;
 +	struct rb_node *node = st->active.rb_node;
 +
-+	while (node != NULL) {
++	while (node) {
 +		entry = rb_entry(node, struct bfq_entity, rb_node);
 +left:
 +		if (!bfq_gt(entry->start, st->vtime))
@@ -5925,7 +6060,7 @@ index 0000000..c343099
 +
 +		BUG_ON(bfq_gt(entry->min_start, st->vtime));
 +
-+		if (node->rb_left != NULL) {
++		if (node->rb_left) {
 +			entry = rb_entry(node->rb_left,
 +					 struct bfq_entity, rb_node);
 +			if (!bfq_gt(entry->min_start, st->vtime)) {
@@ -5933,12 +6068,12 @@ index 0000000..c343099
 +				goto left;
 +			}
 +		}
-+		if (first != NULL)
++		if (first)
 +			break;
 +		node = node->rb_right;
 +	}
 +
-+	BUG_ON(first == NULL && !RB_EMPTY_ROOT(&st->active));
++	BUG_ON(!first && !RB_EMPTY_ROOT(&st->active));
 +	return first;
 +}
 +
@@ -5994,13 +6129,13 @@ index 0000000..c343099
 +	struct bfq_entity *entity;
 +	int i = 0;
 +
-+	BUG_ON(sd->in_service_entity != NULL);
++	BUG_ON(sd->in_service_entity);
 +
-+	if (bfqd != NULL &&
++	if (bfqd &&
 +	    jiffies - bfqd->bfq_class_idle_last_service > BFQ_CL_IDLE_TIMEOUT) {
 +		entity = __bfq_lookup_next_entity(st + BFQ_IOPRIO_CLASSES - 1,
 +						  true);
-+		if (entity != NULL) {
++		if (entity) {
 +			i = BFQ_IOPRIO_CLASSES - 1;
 +			bfqd->bfq_class_idle_last_service = jiffies;
 +			sd->next_in_service = entity;
@@ -6008,7 +6143,7 @@ index 0000000..c343099
 +	}
 +	for (; i < BFQ_IOPRIO_CLASSES; i++) {
 +		entity = __bfq_lookup_next_entity(st + i, false);
-+		if (entity != NULL) {
++		if (entity) {
 +			if (extract) {
 +				bfq_check_next_in_service(sd, entity);
 +				bfq_active_extract(st + i, entity);
@@ -6031,55 +6166,27 @@ index 0000000..c343099
 +	struct bfq_sched_data *sd;
 +	struct bfq_queue *bfqq;
 +
-+	BUG_ON(bfqd->in_service_queue != NULL);
++	BUG_ON(bfqd->in_service_queue);
 +
 +	if (bfqd->busy_queues == 0)
 +		return NULL;
 +
 +	sd = &bfqd->root_group->sched_data;
-+	for (; sd != NULL; sd = entity->my_sched_data) {
++	for (; sd ; sd = entity->my_sched_data) {
 +		entity = bfq_lookup_next_entity(sd, 1, bfqd);
-+		BUG_ON(entity == NULL);
++		BUG_ON(!entity);
 +		entity->service = 0;
 +	}
 +
 +	bfqq = bfq_entity_to_bfqq(entity);
-+	BUG_ON(bfqq == NULL);
++	BUG_ON(!bfqq);
 +
 +	return bfqq;
 +}
 +
-+/*
-+ * Forced extraction of the given queue.
-+ */
-+static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
-+				      struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity;
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	entity = &bfqq->entity;
-+	/*
-+	 * Bubble up extraction/update from the leaf to the root.
-+	*/
-+	for_each_entity(entity) {
-+		sd = entity->sched_data;
-+		bfq_update_budget(entity);
-+		bfq_update_vtime(bfq_entity_service_tree(entity));
-+		bfq_active_extract(bfq_entity_service_tree(entity), entity);
-+		sd->in_service_entity = entity;
-+		sd->next_in_service = NULL;
-+		entity->service = 0;
-+	}
-+
-+	return;
-+}
-+
 +static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
 +{
-+	if (bfqd->in_service_bic != NULL) {
++	if (bfqd->in_service_bic) {
 +		put_io_context(bfqd->in_service_bic->icq.ioc);
 +		bfqd->in_service_bic = NULL;
 +	}
@@ -6106,6 +6213,10 @@ index 0000000..c343099
 +	bfq_activate_entity(entity);
 +}
 +
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++static void bfqg_stats_update_dequeue(struct bfq_group *bfqg);
++#endif
++
 +/*
 + * Called when the bfqq no longer has requests pending, remove it from
 + * the service tree.
@@ -6139,6 +6250,10 @@ index 0000000..c343099
 +	if (bfqq->wr_coeff > 1)
 +		bfqd->wr_busy_queues--;
 +
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	bfqg_stats_update_dequeue(bfqq_group(bfqq));
++#endif
++
 +	bfq_deactivate_bfqq(bfqd, bfqq, requeue);
 +}
 +
@@ -6172,12 +6287,12 @@ index 0000000..c343099
 +}
 diff --git a/block/bfq.h b/block/bfq.h
 new file mode 100644
-index 0000000..dd1a5b1
+index 0000000..3bb7df2
 --- /dev/null
 +++ b/block/bfq.h
-@@ -0,0 +1,771 @@
+@@ -0,0 +1,801 @@
 +/*
-+ * BFQ-v7r8 for 3.19.0: data structures and common functions prototypes.
++ * BFQ-v7r11 for 4.4.0: data structures and common functions prototypes.
 + *
 + * Based on ideas and code from CFQ:
 + * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
@@ -6195,12 +6310,14 @@ index 0000000..dd1a5b1
 +#include <linux/hrtimer.h>
 +#include <linux/ioprio.h>
 +#include <linux/rbtree.h>
++#include <linux/blk-cgroup.h>
 +
 +#define BFQ_IOPRIO_CLASSES	3
 +#define BFQ_CL_IDLE_TIMEOUT	(HZ/5)
 +
-+#define BFQ_MIN_WEIGHT	1
-+#define BFQ_MAX_WEIGHT	1000
++#define BFQ_MIN_WEIGHT			1
++#define BFQ_MAX_WEIGHT			1000
++#define BFQ_WEIGHT_CONVERSION_COEFF	10
 +
 +#define BFQ_DEFAULT_QUEUE_IOPRIO	4
 +
@@ -6295,12 +6412,8 @@ index 0000000..dd1a5b1
 + * @ioprio: the ioprio in use.
 + * @new_weight: when a weight change is requested, the new weight value.
 + * @orig_weight: original weight, used to implement weight boosting
-+ * @new_ioprio: when an ioprio change is requested, the new ioprio value.
-+ * @ioprio_class: the ioprio_class in use.
-+ * @new_ioprio_class: when an ioprio_class change is requested, the new
-+ *                    ioprio_class value.
-+ * @ioprio_changed: flag, true when the user requested a weight, ioprio or
-+ *                  ioprio_class change.
++ * @prio_changed: flag, true when the user requested a weight, ioprio or
++ *		  ioprio_class change.
 + *
 + * A bfq_entity is used to represent either a bfq_queue (leaf node in the
 + * cgroup hierarchy) or a bfq_group into the upper level scheduler.  Each
@@ -6312,7 +6425,7 @@ index 0000000..dd1a5b1
 + * allow different weights on different devices, but this
 + * functionality is not exported to userspace by now.  Priorities and
 + * weights are updated lazily, first storing the new values into the
-+ * new_* fields, then setting the @ioprio_changed flag.  As soon as
++ * new_* fields, then setting the @prio_changed flag.  As soon as
 + * there is a transition in the entity state that allows the priority
 + * update to take place the effective and the requested priority
 + * values are synchronized.
@@ -6339,7 +6452,7 @@ index 0000000..dd1a5b1
 +
 +	u64 min_start;
 +
-+	unsigned long service, budget;
++	int service, budget;
 +	unsigned short weight, new_weight;
 +	unsigned short orig_weight;
 +
@@ -6348,10 +6461,7 @@ index 0000000..dd1a5b1
 +	struct bfq_sched_data *my_sched_data;
 +	struct bfq_sched_data *sched_data;
 +
-+	unsigned short ioprio, new_ioprio;
-+	unsigned short ioprio_class, new_ioprio_class;
-+
-+	int ioprio_changed;
++	int prio_changed;
 +};
 +
 +struct bfq_group;
@@ -6360,10 +6470,12 @@ index 0000000..dd1a5b1
 + * struct bfq_queue - leaf schedulable entity.
 + * @ref: reference counter.
 + * @bfqd: parent bfq_data.
++ * @new_ioprio: when an ioprio change is requested, the new ioprio value.
++ * @ioprio_class: the ioprio_class in use.
++ * @new_ioprio_class: when an ioprio_class change is requested, the new
++ *                    ioprio_class value.
 + * @new_bfqq: shared bfq_queue if queue is cooperating with
 + *           one or more other queues.
-+ * @pos_node: request-position tree member (see bfq_data's @rq_pos_tree).
-+ * @pos_root: request-position tree root (see bfq_data's @rq_pos_tree).
 + * @sort_list: sorted list of pending requests.
 + * @next_rq: if fifo isn't expired, next request to serve.
 + * @queued: nr of requests queued in @sort_list.
@@ -6396,24 +6508,30 @@ index 0000000..dd1a5b1
 + *                      idle @bfq_queue with no outstanding requests, then
 + *                      the task associated with the queue it is deemed as
 + *                      soft real-time (see the comments to the function
-+ *                      bfq_bfqq_softrt_next_start()).
++ *                      bfq_bfqq_softrt_next_start())
 + * @last_idle_bklogged: time of the last transition of the @bfq_queue from
 + *                      idle to backlogged
 + * @service_from_backlogged: cumulative service received from the @bfq_queue
 + *                           since the last transition from idle to
 + *                           backlogged
++ * @bic: pointer to the bfq_io_cq owning the bfq_queue, set to %NULL if the
++ *	 queue is shared
 + *
-+ * A bfq_queue is a leaf request queue; it can be associated with an io_context
-+ * or more, if it is async or shared between cooperating processes. @cgroup
-+ * holds a reference to the cgroup, to be sure that it does not disappear while
-+ * a bfqq still references it (mostly to avoid races between request issuing and
-+ * task migration followed by cgroup destruction).
++ * A bfq_queue is a leaf request queue; it can be associated with an
++ * io_context or more, if it  is  async or shared  between  cooperating
++ * processes. @cgroup holds a reference to the cgroup, to be sure that it
++ * does not disappear while a bfqq still references it (mostly to avoid
++ * races between request issuing and task migration followed by cgroup
++ * destruction).
 + * All the fields are protected by the queue lock of the containing bfqd.
 + */
 +struct bfq_queue {
 +	atomic_t ref;
 +	struct bfq_data *bfqd;
 +
++	unsigned short ioprio, new_ioprio;
++	unsigned short ioprio_class, new_ioprio_class;
++
 +	/* fields for cooperating queues handling */
 +	struct bfq_queue *new_bfqq;
 +	struct rb_node pos_node;
@@ -6428,7 +6546,7 @@ index 0000000..dd1a5b1
 +
 +	struct bfq_entity entity;
 +
-+	unsigned long max_budget;
++	int max_budget;
 +	unsigned long budget_timeout;
 +
 +	int dispatched;
@@ -6447,6 +6565,7 @@ index 0000000..dd1a5b1
 +	unsigned int requests_within_timer;
 +
 +	pid_t pid;
++	struct bfq_io_cq *bic;
 +
 +	/* weight-raising fields */
 +	unsigned long wr_cur_max_time;
@@ -6476,12 +6595,18 @@ index 0000000..dd1a5b1
 + * @icq: associated io_cq structure
 + * @bfqq: array of two process queues, the sync and the async
 + * @ttime: associated @bfq_ttime struct
++ * @ioprio: per (request_queue, blkcg) ioprio.
++ * @blkcg_id: id of the blkcg the related io_cq belongs to.
 + */
 +struct bfq_io_cq {
 +	struct io_cq icq; /* must be the first member */
 +	struct bfq_queue *bfqq[2];
 +	struct bfq_ttime ttime;
 +	int ioprio;
++
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++	uint64_t blkcg_id; /* the current blkcg ID */
++#endif
 +};
 +
 +enum bfq_device_speed {
@@ -6493,9 +6618,6 @@ index 0000000..dd1a5b1
 + * struct bfq_data - per device data structure.
 + * @queue: request queue for the managed device.
 + * @root_group: root bfq_group for the device.
-+ * @rq_pos_tree: rbtree sorted by next_request position, used when
-+ *               determining if two or more queues have interleaving
-+ *               requests (see bfq_close_cooperator()).
 + * @active_numerous_groups: number of bfq_groups containing more than one
 + *                          active @bfq_entity.
 + * @queue_weights_tree: rbtree of weight counters of @bfq_queues, sorted by
@@ -6560,7 +6682,6 @@ index 0000000..dd1a5b1
 + * @peak_rate_samples: number of samples used to calculate @peak_rate.
 + * @bfq_max_budget: maximum budget allotted to a bfq_queue before
 + *                  rescheduling.
-+ * @group_list: list of all the bfq_groups active on the device.
 + * @active_list: list of all the bfq_queues active on the device.
 + * @idle_list: list of all the bfq_queues idle on the device.
 + * @bfq_fifo_expire: timeout for async/sync requests; when it expires
@@ -6629,9 +6750,8 @@ index 0000000..dd1a5b1
 +	struct request_queue *queue;
 +
 +	struct bfq_group *root_group;
-+	struct rb_root rq_pos_tree;
 +
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
 +	int active_numerous_groups;
 +#endif
 +
@@ -6664,9 +6784,8 @@ index 0000000..dd1a5b1
 +	ktime_t last_idling_start;
 +	int peak_rate_samples;
 +	u64 peak_rate;
-+	unsigned long bfq_max_budget;
++	int bfq_max_budget;
 +
-+	struct hlist_head group_list;
 +	struct list_head active_list;
 +	struct list_head idle_list;
 +
@@ -6676,8 +6795,8 @@ index 0000000..dd1a5b1
 +	unsigned int bfq_slice_idle;
 +	u64 bfq_class_idle_last_service;
 +
-+	unsigned int bfq_user_max_budget;
-+	unsigned int bfq_max_budget_async_rq;
++	int bfq_user_max_budget;
++	int bfq_max_budget_async_rq;
 +	unsigned int bfq_timeout[2];
 +
 +	unsigned int bfq_coop_thresh;
@@ -6714,7 +6833,7 @@ index 0000000..dd1a5b1
 +	BFQ_BFQQ_FLAG_idle_window,	/* slice idling enabled */
 +	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
 +	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
-+	BFQ_BFQQ_FLAG_IO_bound,         /*
++	BFQ_BFQQ_FLAG_IO_bound,		/*
 +					 * bfqq has timed-out at least once
 +					 * having consumed at most 2/10 of
 +					 * its budget
@@ -6727,24 +6846,22 @@ index 0000000..dd1a5b1
 +					 * bfqq has proved to be slow and
 +					 * seeky until budget timeout
 +					 */
-+	BFQ_BFQQ_FLAG_softrt_update,    /*
++	BFQ_BFQQ_FLAG_softrt_update,	/*
 +					 * may need softrt-next-start
 +					 * update
 +					 */
-+	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
 +};
 +
 +#define BFQ_BFQQ_FNS(name)						\
-+static inline void bfq_mark_bfqq_##name(struct bfq_queue *bfqq)		\
++static void bfq_mark_bfqq_##name(struct bfq_queue *bfqq)		\
 +{									\
 +	(bfqq)->flags |= (1 << BFQ_BFQQ_FLAG_##name);			\
 +}									\
-+static inline void bfq_clear_bfqq_##name(struct bfq_queue *bfqq)	\
++static void bfq_clear_bfqq_##name(struct bfq_queue *bfqq)		\
 +{									\
 +	(bfqq)->flags &= ~(1 << BFQ_BFQQ_FLAG_##name);			\
 +}									\
-+static inline int bfq_bfqq_##name(const struct bfq_queue *bfqq)		\
++static int bfq_bfqq_##name(const struct bfq_queue *bfqq)		\
 +{									\
 +	return ((bfqq)->flags & (1 << BFQ_BFQQ_FLAG_##name)) != 0;	\
 +}
@@ -6759,8 +6876,6 @@ index 0000000..dd1a5b1
 +BFQ_BFQQ_FNS(IO_bound);
 +BFQ_BFQQ_FNS(in_large_burst);
 +BFQ_BFQQ_FNS(constantly_seeky);
-+BFQ_BFQQ_FNS(coop);
-+BFQ_BFQQ_FNS(split_coop);
 +BFQ_BFQQ_FNS(softrt_update);
 +#undef BFQ_BFQQ_FNS
 +
@@ -6782,16 +6897,64 @@ index 0000000..dd1a5b1
 +	BFQ_BFQQ_NO_MORE_REQUESTS,	/* the queue has no more requests */
 +};
 +
-+#ifdef CONFIG_CGROUP_BFQIO
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++
++struct bfqg_stats {
++	/* total bytes transferred */
++	struct blkg_rwstat		service_bytes;
++	/* total IOs serviced, post merge */
++	struct blkg_rwstat		serviced;
++	/* number of ios merged */
++	struct blkg_rwstat		merged;
++	/* total time spent on device in ns, may not be accurate w/ queueing */
++	struct blkg_rwstat		service_time;
++	/* total time spent waiting in scheduler queue in ns */
++	struct blkg_rwstat		wait_time;
++	/* number of IOs queued up */
++	struct blkg_rwstat		queued;
++	/* total sectors transferred */
++	struct blkg_stat		sectors;
++	/* total disk time and nr sectors dispatched by this group */
++	struct blkg_stat		time;
++	/* time not charged to this cgroup */
++	struct blkg_stat		unaccounted_time;
++	/* sum of number of ios queued across all samples */
++	struct blkg_stat		avg_queue_size_sum;
++	/* count of samples taken for average */
++	struct blkg_stat		avg_queue_size_samples;
++	/* how many times this group has been removed from service tree */
++	struct blkg_stat		dequeue;
++	/* total time spent waiting for it to be assigned a timeslice. */
++	struct blkg_stat		group_wait_time;
++	/* time spent idling for this blkcg_gq */
++	struct blkg_stat		idle_time;
++	/* total time with empty current active q with other requests queued */
++	struct blkg_stat		empty_time;
++	/* fields after this shouldn't be cleared on stat reset */
++	uint64_t			start_group_wait_time;
++	uint64_t			start_idle_time;
++	uint64_t			start_empty_time;
++	uint16_t			flags;
++};
++
++/*
++ * struct bfq_group_data - per-blkcg storage for the blkio subsystem.
++ *
++ * @ps: @blkcg_policy_storage that this structure inherits
++ * @weight: weight of the bfq_group
++ */
++struct bfq_group_data {
++	/* must be the first member */
++	struct blkcg_policy_data pd;
++
++	unsigned short weight;
++};
++
 +/**
 + * struct bfq_group - per (device, cgroup) data structure.
 + * @entity: schedulable entity to insert into the parent group sched_data.
 + * @sched_data: own sched_data, to contain child entities (they may be
 + *              both bfq_queues and bfq_groups).
-+ * @group_node: node to be inserted into the bfqio_cgroup->group_data
-+ *              list of the containing cgroup's bfqio_cgroup.
-+ * @bfqd_node: node to be inserted into the @bfqd->group_list list
-+ *             of the groups active on the same device; used for cleanup.
 + * @bfqd: the bfq_data for the device this group acts upon.
 + * @async_bfqq: array of async queues for all the tasks belonging to
 + *              the group, one queue per ioprio value per ioprio_class,
@@ -6811,19 +6974,17 @@ index 0000000..dd1a5b1
 + * entities belonging to the group that are acting on the same device.
 + *
 + * Locking works as follows:
-+ *    o @group_node is protected by the bfqio_cgroup lock, and is accessed
-+ *      via RCU from its readers.
 + *    o @bfqd is protected by the queue lock, RCU is used to access it
 + *      from the readers.
 + *    o All the other fields are protected by the @bfqd queue lock.
 + */
 +struct bfq_group {
++	/* must be the first member */
++	struct blkg_policy_data pd;
++
 +	struct bfq_entity entity;
 +	struct bfq_sched_data sched_data;
 +
-+	struct hlist_node group_node;
-+	struct hlist_node bfqd_node;
-+
 +	void *bfqd;
 +
 +	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
@@ -6832,30 +6993,11 @@ index 0000000..dd1a5b1
 +	struct bfq_entity *my_entity;
 +
 +	int active_entities;
-+};
-+
-+/**
-+ * struct bfqio_cgroup - bfq cgroup data structure.
-+ * @css: subsystem state for bfq in the containing cgroup.
-+ * @online: flag marked when the subsystem is inserted.
-+ * @weight: cgroup weight.
-+ * @ioprio: cgroup ioprio.
-+ * @ioprio_class: cgroup ioprio_class.
-+ * @lock: spinlock that protects @ioprio, @ioprio_class and @group_data.
-+ * @group_data: list containing the bfq_group belonging to this cgroup.
-+ *
-+ * @group_data is accessed using RCU, with @lock protecting the updates,
-+ * @ioprio and @ioprio_class are protected by @lock.
-+ */
-+struct bfqio_cgroup {
-+	struct cgroup_subsys_state css;
-+	bool online;
-+
-+	unsigned short weight, ioprio, ioprio_class;
 +
-+	spinlock_t lock;
-+	struct hlist_head group_data;
++	struct bfqg_stats stats;
++	struct bfqg_stats dead_stats;	/* stats pushed from dead children */
 +};
++
 +#else
 +struct bfq_group {
 +	struct bfq_sched_data sched_data;
@@ -6865,11 +7007,15 @@ index 0000000..dd1a5b1
 +};
 +#endif
 +
-+static inline struct bfq_service_tree *
++static struct bfq_queue *bfq_entity_to_bfqq(struct bfq_entity *entity);
++
++static struct bfq_service_tree *
 +bfq_entity_service_tree(struct bfq_entity *entity)
 +{
 +	struct bfq_sched_data *sched_data = entity->sched_data;
-+	unsigned int idx = entity->ioprio_class - 1;
++	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
++	unsigned int idx = bfqq ? bfqq->ioprio_class - 1 :
++				  BFQ_DEFAULT_GRP_CLASS;
 +
 +	BUG_ON(idx >= BFQ_IOPRIO_CLASSES);
 +	BUG_ON(sched_data == NULL);
@@ -6877,19 +7023,18 @@ index 0000000..dd1a5b1
 +	return sched_data->service_tree + idx;
 +}
 +
-+static inline struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic,
-+					    bool is_sync)
++static struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic, bool is_sync)
 +{
 +	return bic->bfqq[is_sync];
 +}
 +
-+static inline void bic_set_bfqq(struct bfq_io_cq *bic,
-+				struct bfq_queue *bfqq, bool is_sync)
++static void bic_set_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq,
++			 bool is_sync)
 +{
 +	bic->bfqq[is_sync] = bfqq;
 +}
 +
-+static inline struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic)
++static struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic)
 +{
 +	return bic->icq.q->elevator->elevator_data;
 +}
@@ -6908,8 +7053,7 @@ index 0000000..dd1a5b1
 + * the function returns NULL, with the queue unlocked, otherwise it
 + * returns the dereferenced pointer, with the queue locked.
 + */
-+static inline struct bfq_data *bfq_get_bfqd_locked(void **ptr,
-+						   unsigned long *flags)
++static struct bfq_data *bfq_get_bfqd_locked(void **ptr, unsigned long *flags)
 +{
 +	struct bfq_data *bfqd;
 +
@@ -6918,7 +7062,9 @@ index 0000000..dd1a5b1
 +
 +	if (bfqd != NULL) {
 +		spin_lock_irqsave(bfqd->queue->queue_lock, *flags);
-+		if (*ptr == bfqd)
++		if (ptr == NULL)
++			printk(KERN_CRIT "get_bfqd_locked pointer NULL\n");
++		else if (*ptr == bfqd)
 +			goto out;
 +		spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
 +	}
@@ -6929,17 +7075,16 @@ index 0000000..dd1a5b1
 +	return bfqd;
 +}
 +
-+static inline void bfq_put_bfqd_unlock(struct bfq_data *bfqd,
-+				       unsigned long *flags)
++static void bfq_put_bfqd_unlock(struct bfq_data *bfqd, unsigned long *flags)
 +{
 +	spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
 +}
 +
-+static void bfq_check_ioprio_change(struct bfq_io_cq *bic);
++static void bfq_check_ioprio_change(struct bfq_io_cq *bic, struct bio *bio);
 +static void bfq_put_queue(struct bfq_queue *bfqq);
 +static void bfq_dispatch_insert(struct request_queue *q, struct request *rq);
 +static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
++				       struct bio *bio, int is_sync,
 +				       struct bfq_io_cq *bic, gfp_t gfp_mask);
 +static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
 +				    struct bfq_group *bfqg);
@@ -6948,5 +7093,5 @@ index 0000000..dd1a5b1
 +
 +#endif /* _BFQ_H */
 -- 
-2.1.4
+1.9.1
 
diff --git a/helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r5-I-O-sched-for-3.13.patch b/helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r5-I-O-sched-for-3.13.patch
deleted file mode 100644
index 157ee75e6..000000000
--- a/helpers/DATA/linux/0002-block-introduce-the-BFQ-v7r5-I-O-sched-for-3.13.patch
+++ /dev/null
@@ -1,6637 +0,0 @@
-From d5da35b81a79db11efdbc63ea22afd16c954a389 Mon Sep 17 00:00:00 2001
-From: Paolo Valente <paolo.valente@unimore.it>
-Date: Thu, 9 May 2013 19:10:02 +0200
-Subject: [PATCH 2/3] block: introduce the BFQ-v7r5 I/O sched for 3.13
-
-Add the BFQ-v7r5 I/O scheduler to 3.13.
-The general structure is borrowed from CFQ, as much of the code for
-handling I/O contexts. Over time, several useful features have been
-ported from CFQ as well (details in the changelog in README.BFQ). A
-(bfq_)queue is associated to each task doing I/O on a device, and each
-time a scheduling decision has to be made a queue is selected and served
-until it expires.
-
-    - Slices are given in the service domain: tasks are assigned
-      budgets, measured in number of sectors. Once got the disk, a task
-      must however consume its assigned budget within a configurable
-      maximum time (by default, the maximum possible value of the
-      budgets is automatically computed to comply with this timeout).
-      This allows the desired latency vs "throughput boosting" tradeoff
-      to be set.
-
-    - Budgets are scheduled according to a variant of WF2Q+, implemented
-      using an augmented rb-tree to take eligibility into account while
-      preserving an O(log N) overall complexity.
-
-    - A low-latency tunable is provided; if enabled, both interactive
-      and soft real-time applications are guaranteed a very low latency.
-
-    - Latency guarantees are preserved also in the presence of NCQ.
-
-    - Also with flash-based devices, a high throughput is achieved
-      while still preserving latency guarantees.
-
-    - BFQ features Early Queue Merge (EQM), a sort of fusion of the
-      cooperating-queue-merging and the preemption mechanisms present
-      in CFQ. EQM is in fact a unified mechanism that tries to get a
-      sequential read pattern, and hence a high throughput, with any
-      set of processes performing interleaved I/O over a contiguous
-      sequence of sectors.
-
-    - BFQ supports full hierarchical scheduling, exporting a cgroups
-      interface.  Since each node has a full scheduler, each group can
-      be assigned its own weight.
-
-    - If the cgroups interface is not used, only I/O priorities can be
-      assigned to processes, with ioprio values mapped to weights
-      with the relation weight = IOPRIO_BE_NR - ioprio.
-
-    - ioprio classes are served in strict priority order, i.e., lower
-      priority queues are not served as long as there are higher
-      priority queues.  Among queues in the same class the bandwidth is
-      distributed in proportion to the weight of each queue. A very
-      thin extra bandwidth is however guaranteed to the Idle class, to
-      prevent it from starving.
-
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
----
- block/bfq-cgroup.c  |  932 +++++++++++++
- block/bfq-ioc.c     |   36 +
- block/bfq-iosched.c | 3617 +++++++++++++++++++++++++++++++++++++++++++++++++++
- block/bfq-sched.c   | 1207 +++++++++++++++++
- block/bfq.h         |  742 +++++++++++
- 5 files changed, 6534 insertions(+)
- create mode 100644 block/bfq-cgroup.c
- create mode 100644 block/bfq-ioc.c
- create mode 100644 block/bfq-iosched.c
- create mode 100644 block/bfq-sched.c
- create mode 100644 block/bfq.h
-
-diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
-new file mode 100644
-index 0000000..2aacc94
---- /dev/null
-+++ b/block/bfq-cgroup.c
-@@ -0,0 +1,932 @@
-+/*
-+ * BFQ: CGROUPS support.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Licensed under the GPL-2 as detailed in the accompanying COPYING.BFQ
-+ * file.
-+ */
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+
-+static DEFINE_MUTEX(bfqio_mutex);
-+
-+static bool bfqio_is_removed(struct bfqio_cgroup *bgrp)
-+{
-+	return bgrp ? !bgrp->online : false;
-+}
-+
-+static struct bfqio_cgroup bfqio_root_cgroup = {
-+	.weight = BFQ_DEFAULT_GRP_WEIGHT,
-+	.ioprio = BFQ_DEFAULT_GRP_IOPRIO,
-+	.ioprio_class = BFQ_DEFAULT_GRP_CLASS,
-+};
-+
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
-+{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
-+}
-+
-+static struct bfqio_cgroup *css_to_bfqio(struct cgroup_subsys_state *css)
-+{
-+	return css ? container_of(css, struct bfqio_cgroup, css) : NULL;
-+}
-+
-+/*
-+ * Search the bfq_group for bfqd into the hash table (by now only a list)
-+ * of bgrp.  Must be called under rcu_read_lock().
-+ */
-+static struct bfq_group *bfqio_lookup_group(struct bfqio_cgroup *bgrp,
-+					    struct bfq_data *bfqd)
-+{
-+	struct bfq_group *bfqg;
-+	void *key;
-+
-+	hlist_for_each_entry_rcu(bfqg, &bgrp->group_data, group_node) {
-+		key = rcu_dereference(bfqg->bfqd);
-+		if (key == bfqd)
-+			return bfqg;
-+	}
-+
-+	return NULL;
-+}
-+
-+static inline void bfq_group_init_entity(struct bfqio_cgroup *bgrp,
-+					 struct bfq_group *bfqg)
-+{
-+	struct bfq_entity *entity = &bfqg->entity;
-+
-+	/*
-+	 * If the weight of the entity has never been set via the sysfs
-+	 * interface, then bgrp->weight == 0. In this case we initialize
-+	 * the weight from the current ioprio value. Otherwise, the group
-+	 * weight, if set, has priority over the ioprio value.
-+	 */
-+	if (bgrp->weight == 0) {
-+		entity->new_weight = bfq_ioprio_to_weight(bgrp->ioprio);
-+		entity->new_ioprio = bgrp->ioprio;
-+	} else {
-+		entity->new_weight = bgrp->weight;
-+		entity->new_ioprio = bfq_weight_to_ioprio(bgrp->weight);
-+	}
-+	entity->orig_weight = entity->weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class = bgrp->ioprio_class;
-+	entity->my_sched_data = &bfqg->sched_data;
-+	bfqg->active_entities = 0;
-+}
-+
-+static inline void bfq_group_set_parent(struct bfq_group *bfqg,
-+					struct bfq_group *parent)
-+{
-+	struct bfq_entity *entity;
-+
-+	BUG_ON(parent == NULL);
-+	BUG_ON(bfqg == NULL);
-+
-+	entity = &bfqg->entity;
-+	entity->parent = parent->my_entity;
-+	entity->sched_data = &parent->sched_data;
-+}
-+
-+/**
-+ * bfq_group_chain_alloc - allocate a chain of groups.
-+ * @bfqd: queue descriptor.
-+ * @css: the leaf cgroup_subsys_state this chain starts from.
-+ *
-+ * Allocate a chain of groups starting from the one belonging to
-+ * @cgroup up to the root cgroup.  Stop if a cgroup on the chain
-+ * to the root has already an allocated group on @bfqd.
-+ */
-+static struct bfq_group *bfq_group_chain_alloc(struct bfq_data *bfqd,
-+					       struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *prev = NULL, *leaf = NULL;
-+
-+	for (; css != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		if (bfqg != NULL) {
-+			/*
-+			 * All the cgroups in the path from there to the
-+			 * root must have a bfq_group for bfqd, so we don't
-+			 * need any more allocations.
-+			 */
-+			break;
-+		}
-+
-+		bfqg = kzalloc(sizeof(*bfqg), GFP_ATOMIC);
-+		if (bfqg == NULL)
-+			goto cleanup;
-+
-+		bfq_group_init_entity(bgrp, bfqg);
-+		bfqg->my_entity = &bfqg->entity;
-+
-+		if (leaf == NULL) {
-+			leaf = bfqg;
-+			prev = leaf;
-+		} else {
-+			bfq_group_set_parent(prev, bfqg);
-+			/*
-+			 * Build a list of allocated nodes using the bfqd
-+			 * filed, that is still unused and will be
-+			 * initialized only after the node will be
-+			 * connected.
-+			 */
-+			prev->bfqd = bfqg;
-+			prev = bfqg;
-+		}
-+	}
-+
-+	return leaf;
-+
-+cleanup:
-+	while (leaf != NULL) {
-+		prev = leaf;
-+		leaf = leaf->bfqd;
-+		kfree(prev);
-+	}
-+
-+	return NULL;
-+}
-+
-+/**
-+ * bfq_group_chain_link - link an allocated group chain to a cgroup
-+ *                        hierarchy.
-+ * @bfqd: the queue descriptor.
-+ * @css: the leaf cgroup_subsys_state to start from.
-+ * @leaf: the leaf group (to be associated to @cgroup).
-+ *
-+ * Try to link a chain of groups to a cgroup hierarchy, connecting the
-+ * nodes bottom-up, so we can be sure that when we find a cgroup in the
-+ * hierarchy that already as a group associated to @bfqd all the nodes
-+ * in the path to the root cgroup have one too.
-+ *
-+ * On locking: the queue lock protects the hierarchy (there is a hierarchy
-+ * per device) while the bfqio_cgroup lock protects the list of groups
-+ * belonging to the same cgroup.
-+ */
-+static void bfq_group_chain_link(struct bfq_data *bfqd,
-+				 struct cgroup_subsys_state *css,
-+				 struct bfq_group *leaf)
-+{
-+	struct bfqio_cgroup *bgrp;
-+	struct bfq_group *bfqg, *next, *prev = NULL;
-+	unsigned long flags;
-+
-+	assert_spin_locked(bfqd->queue->queue_lock);
-+
-+	for (; css != NULL && leaf != NULL; css = css->parent) {
-+		bgrp = css_to_bfqio(css);
-+		next = leaf->bfqd;
-+
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		BUG_ON(bfqg != NULL);
-+
-+		spin_lock_irqsave(&bgrp->lock, flags);
-+
-+		rcu_assign_pointer(leaf->bfqd, bfqd);
-+		hlist_add_head_rcu(&leaf->group_node, &bgrp->group_data);
-+		hlist_add_head(&leaf->bfqd_node, &bfqd->group_list);
-+
-+		spin_unlock_irqrestore(&bgrp->lock, flags);
-+
-+		prev = leaf;
-+		leaf = next;
-+	}
-+
-+	BUG_ON(css == NULL && leaf != NULL);
-+	if (css != NULL && prev != NULL) {
-+		bgrp = css_to_bfqio(css);
-+		bfqg = bfqio_lookup_group(bgrp, bfqd);
-+		bfq_group_set_parent(prev, bfqg);
-+	}
-+}
-+
-+/**
-+ * bfq_find_alloc_group - return the group associated to @bfqd in @cgroup.
-+ * @bfqd: queue descriptor.
-+ * @cgroup: cgroup being searched for.
-+ *
-+ * Return a group associated to @bfqd in @cgroup, allocating one if
-+ * necessary.  When a group is returned all the cgroups in the path
-+ * to the root have a group associated to @bfqd.
-+ *
-+ * If the allocation fails, return the root group: this breaks guarantees
-+ * but is a safe fallback.  If this loss becomes a problem it can be
-+ * mitigated using the equivalent weight (given by the product of the
-+ * weights of the groups in the path from @group to the root) in the
-+ * root scheduler.
-+ *
-+ * We allocate all the missing nodes in the path from the leaf cgroup
-+ * to the root and we connect the nodes only after all the allocations
-+ * have been successful.
-+ */
-+static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
-+					      struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct bfq_group *bfqg;
-+
-+	bfqg = bfqio_lookup_group(bgrp, bfqd);
-+	if (bfqg != NULL)
-+		return bfqg;
-+
-+	bfqg = bfq_group_chain_alloc(bfqd, css);
-+	if (bfqg != NULL)
-+		bfq_group_chain_link(bfqd, css, bfqg);
-+	else
-+		bfqg = bfqd->root_group;
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_bfqq_move - migrate @bfqq to @bfqg.
-+ * @bfqd: queue descriptor.
-+ * @bfqq: the queue to move.
-+ * @entity: @bfqq's entity.
-+ * @bfqg: the group to move to.
-+ *
-+ * Move @bfqq to @bfqg, deactivating it from its old group and reactivating
-+ * it on the new one.  Avoid putting the entity on the old group idle tree.
-+ *
-+ * Must be called under the queue lock; the cgroup owning @bfqg must
-+ * not disappear (by now this just means that we are called under
-+ * rcu_read_lock()).
-+ */
-+static void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			  struct bfq_entity *entity, struct bfq_group *bfqg)
-+{
-+	int busy, resume;
-+
-+	busy = bfq_bfqq_busy(bfqq);
-+	resume = !RB_EMPTY_ROOT(&bfqq->sort_list);
-+
-+	BUG_ON(resume && !entity->on_st);
-+	BUG_ON(busy && !resume && entity->on_st &&
-+	       bfqq != bfqd->in_service_queue);
-+
-+	if (busy) {
-+		BUG_ON(atomic_read(&bfqq->ref) < 2);
-+
-+		if (!resume)
-+			bfq_del_bfqq_busy(bfqd, bfqq, 0);
-+		else
-+			bfq_deactivate_bfqq(bfqd, bfqq, 0);
-+	} else if (entity->on_st)
-+		bfq_put_idle_entity(bfq_entity_service_tree(entity), entity);
-+
-+	/*
-+	 * Here we use a reference to bfqg.  We don't need a refcounter
-+	 * as the cgroup reference will not be dropped, so that its
-+	 * destroy() callback will not be invoked.
-+	 */
-+	entity->parent = bfqg->my_entity;
-+	entity->sched_data = &bfqg->sched_data;
-+
-+	if (busy && resume)
-+		bfq_activate_bfqq(bfqd, bfqq);
-+
-+	if (bfqd->in_service_queue == NULL && !bfqd->rq_in_driver)
-+		bfq_schedule_dispatch(bfqd);
-+}
-+
-+/**
-+ * __bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bfqd: the queue descriptor.
-+ * @bic: the bic to move.
-+ * @cgroup: the cgroup to move to.
-+ *
-+ * Move bic to cgroup, assuming that bfqd->queue is locked; the caller
-+ * has to make sure that the reference to cgroup is valid across the call.
-+ *
-+ * NOTE: an alternative approach might have been to store the current
-+ * cgroup in bfqq and getting a reference to it, reducing the lookup
-+ * time here, at the price of slightly more complex code.
-+ */
-+static struct bfq_group *__bfq_bic_change_cgroup(struct bfq_data *bfqd,
-+						struct bfq_io_cq *bic,
-+						struct cgroup_subsys_state *css)
-+{
-+	struct bfq_queue *async_bfqq = bic_to_bfqq(bic, 0);
-+	struct bfq_queue *sync_bfqq = bic_to_bfqq(bic, 1);
-+	struct bfq_entity *entity;
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+
-+	bgrp = css_to_bfqio(css);
-+
-+	bfqg = bfq_find_alloc_group(bfqd, css);
-+	if (async_bfqq != NULL) {
-+		entity = &async_bfqq->entity;
-+
-+		if (entity->sched_data != &bfqg->sched_data) {
-+			bic_set_bfqq(bic, NULL, 0);
-+			bfq_log_bfqq(bfqd, async_bfqq,
-+				     "bic_change_group: %p %d",
-+				     async_bfqq, atomic_read(&async_bfqq->ref));
-+			bfq_put_queue(async_bfqq);
-+		}
-+	}
-+
-+	if (sync_bfqq != NULL) {
-+		entity = &sync_bfqq->entity;
-+		if (entity->sched_data != &bfqg->sched_data)
-+			bfq_bfqq_move(bfqd, sync_bfqq, entity, bfqg);
-+	}
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_bic_change_cgroup - move @bic to @cgroup.
-+ * @bic: the bic being migrated.
-+ * @cgroup: the destination cgroup.
-+ *
-+ * When the task owning @bic is moved to @cgroup, @bic is immediately
-+ * moved into its new parent group.
-+ */
-+static void bfq_bic_change_cgroup(struct bfq_io_cq *bic,
-+				  struct cgroup_subsys_state *css)
-+{
-+	struct bfq_data *bfqd;
-+	unsigned long uninitialized_var(flags);
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	if (bfqd != NULL) {
-+		__bfq_bic_change_cgroup(bfqd, bic, css);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+}
-+
-+/**
-+ * bfq_bic_update_cgroup - update the cgroup of @bic.
-+ * @bic: the @bic to update.
-+ *
-+ * Make sure that @bic is enqueued in the cgroup of the current task.
-+ * We need this in addition to moving bics during the cgroup attach
-+ * phase because the task owning @bic could be at its first disk
-+ * access or we may end up in the root cgroup as the result of a
-+ * memory allocation failure and here we try to move to the right
-+ * group.
-+ *
-+ * Must be called under the queue lock.  It is safe to use the returned
-+ * value even after the rcu_read_unlock() as the migration/destruction
-+ * paths act under the queue lock too.  IOW it is impossible to race with
-+ * group migration/destruction and end up with an invalid group as:
-+ *   a) here cgroup has not yet been destroyed, nor its destroy callback
-+ *      has started execution, as current holds a reference to it,
-+ *   b) if it is destroyed after rcu_read_unlock() [after current is
-+ *      migrated to a different cgroup] its attach() callback will have
-+ *      taken care of remove all the references to the old cgroup data.
-+ */
-+static struct bfq_group *bfq_bic_update_cgroup(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	struct bfq_group *bfqg;
-+	struct cgroup_subsys_state *css;
-+
-+	BUG_ON(bfqd == NULL);
-+
-+	rcu_read_lock();
-+	css = task_css(current, bfqio_subsys_id);
-+	bfqg = __bfq_bic_change_cgroup(bfqd, bic, css);
-+	rcu_read_unlock();
-+
-+	return bfqg;
-+}
-+
-+/**
-+ * bfq_flush_idle_tree - deactivate any entity on the idle tree of @st.
-+ * @st: the service tree being flushed.
-+ */
-+static inline void bfq_flush_idle_tree(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entity = st->first_idle;
-+
-+	for (; entity != NULL; entity = st->first_idle)
-+		__bfq_deactivate_entity(entity, 0);
-+}
-+
-+/**
-+ * bfq_reparent_leaf_entity - move leaf entity to the root_group.
-+ * @bfqd: the device data structure with the root group.
-+ * @entity: the entity to move.
-+ */
-+static inline void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
-+					    struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	BUG_ON(bfqq == NULL);
-+	bfq_bfqq_move(bfqd, bfqq, entity, bfqd->root_group);
-+	return;
-+}
-+
-+/**
-+ * bfq_reparent_active_entities - move to the root group all active
-+ *                                entities.
-+ * @bfqd: the device data structure with the root group.
-+ * @bfqg: the group to move from.
-+ * @st: the service tree with the entities.
-+ *
-+ * Needs queue_lock to be taken and reference to be valid over the call.
-+ */
-+static inline void bfq_reparent_active_entities(struct bfq_data *bfqd,
-+						struct bfq_group *bfqg,
-+						struct bfq_service_tree *st)
-+{
-+	struct rb_root *active = &st->active;
-+	struct bfq_entity *entity = NULL;
-+
-+	if (!RB_EMPTY_ROOT(&st->active))
-+		entity = bfq_entity_of(rb_first(active));
-+
-+	for (; entity != NULL; entity = bfq_entity_of(rb_first(active)))
-+		bfq_reparent_leaf_entity(bfqd, entity);
-+
-+	if (bfqg->sched_data.in_service_entity != NULL)
-+		bfq_reparent_leaf_entity(bfqd,
-+			bfqg->sched_data.in_service_entity);
-+
-+	return;
-+}
-+
-+/**
-+ * bfq_destroy_group - destroy @bfqg.
-+ * @bgrp: the bfqio_cgroup containing @bfqg.
-+ * @bfqg: the group being destroyed.
-+ *
-+ * Destroy @bfqg, making sure that it is not referenced from its parent.
-+ */
-+static void bfq_destroy_group(struct bfqio_cgroup *bgrp, struct bfq_group *bfqg)
-+{
-+	struct bfq_data *bfqd;
-+	struct bfq_service_tree *st;
-+	struct bfq_entity *entity = bfqg->my_entity;
-+	unsigned long uninitialized_var(flags);
-+	int i;
-+
-+	hlist_del(&bfqg->group_node);
-+
-+	/*
-+	 * Empty all service_trees belonging to this group before
-+	 * deactivating the group itself.
-+	 */
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++) {
-+		st = bfqg->sched_data.service_tree + i;
-+
-+		/*
-+		 * The idle tree may still contain bfq_queues belonging
-+		 * to exited task because they never migrated to a different
-+		 * cgroup from the one being destroyed now.  No one else
-+		 * can access them so it's safe to act without any lock.
-+		 */
-+		bfq_flush_idle_tree(st);
-+
-+		/*
-+		 * It may happen that some queues are still active
-+		 * (busy) upon group destruction (if the corresponding
-+		 * processes have been forced to terminate). We move
-+		 * all the leaf entities corresponding to these queues
-+		 * to the root_group.
-+		 * Also, it may happen that the group has an entity
-+		 * in service, which is disconnected from the active
-+		 * tree: it must be moved, too.
-+		 * There is no need to put the sync queues, as the
-+		 * scheduler has taken no reference.
-+		 */
-+		bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+		if (bfqd != NULL) {
-+			bfq_reparent_active_entities(bfqd, bfqg, st);
-+			bfq_put_bfqd_unlock(bfqd, &flags);
-+		}
-+		BUG_ON(!RB_EMPTY_ROOT(&st->active));
-+		BUG_ON(!RB_EMPTY_ROOT(&st->idle));
-+	}
-+	BUG_ON(bfqg->sched_data.next_in_service != NULL);
-+	BUG_ON(bfqg->sched_data.in_service_entity != NULL);
-+
-+	/*
-+	 * We may race with device destruction, take extra care when
-+	 * dereferencing bfqg->bfqd.
-+	 */
-+	bfqd = bfq_get_bfqd_locked(&bfqg->bfqd, &flags);
-+	if (bfqd != NULL) {
-+		hlist_del(&bfqg->bfqd_node);
-+		__bfq_deactivate_entity(entity, 0);
-+		bfq_put_async_queues(bfqd, bfqg);
-+		bfq_put_bfqd_unlock(bfqd, &flags);
-+	}
-+	BUG_ON(entity->tree != NULL);
-+
-+	/*
-+	 * No need to defer the kfree() to the end of the RCU grace
-+	 * period: we are called from the destroy() callback of our
-+	 * cgroup, so we can be sure that no one is a) still using
-+	 * this cgroup or b) doing lookups in it.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static void bfq_end_wr_async(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node)
-+		bfq_end_wr_async_queues(bfqd, bfqg);
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+/**
-+ * bfq_disconnect_groups - disconnect @bfqd from all its groups.
-+ * @bfqd: the device descriptor being exited.
-+ *
-+ * When the device exits we just make sure that no lookup can return
-+ * the now unused group structures.  They will be deallocated on cgroup
-+ * destruction.
-+ */
-+static void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	bfq_log(bfqd, "disconnect_groups beginning");
-+	hlist_for_each_entry_safe(bfqg, tmp, &bfqd->group_list, bfqd_node) {
-+		hlist_del(&bfqg->bfqd_node);
-+
-+		__bfq_deactivate_entity(bfqg->my_entity, 0);
-+
-+		/*
-+		 * Don't remove from the group hash, just set an
-+		 * invalid key.  No lookups can race with the
-+		 * assignment as bfqd is being destroyed; this
-+		 * implies also that new elements cannot be added
-+		 * to the list.
-+		 */
-+		rcu_assign_pointer(bfqg->bfqd, NULL);
-+
-+		bfq_log(bfqd, "disconnect_groups: put async for group %p",
-+			bfqg);
-+		bfq_put_async_queues(bfqd, bfqg);
-+	}
-+}
-+
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	struct bfqio_cgroup *bgrp = &bfqio_root_cgroup;
-+	struct bfq_group *bfqg = bfqd->root_group;
-+
-+	bfq_put_async_queues(bfqd, bfqg);
-+
-+	spin_lock_irq(&bgrp->lock);
-+	hlist_del_rcu(&bfqg->group_node);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	/*
-+	 * No need to synchronize_rcu() here: since the device is gone
-+	 * there cannot be any read-side access to its root_group.
-+	 */
-+	kfree(bfqg);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
-+{
-+	struct bfq_group *bfqg;
-+	struct bfqio_cgroup *bgrp;
-+	int i;
-+
-+	bfqg = kzalloc_node(sizeof(*bfqg), GFP_KERNEL, node);
-+	if (bfqg == NULL)
-+		return NULL;
-+
-+	bfqg->entity.parent = NULL;
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	bgrp = &bfqio_root_cgroup;
-+	spin_lock_irq(&bgrp->lock);
-+	rcu_assign_pointer(bfqg->bfqd, bfqd);
-+	hlist_add_head_rcu(&bfqg->group_node, &bgrp->group_data);
-+	spin_unlock_irq(&bgrp->lock);
-+
-+	return bfqg;
-+}
-+
-+#define SHOW_FUNCTION(__VAR)						\
-+static u64 bfqio_cgroup_##__VAR##_read(struct cgroup_subsys_state *css, \
-+				       struct cftype *cftype)		\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	u64 ret = -ENODEV;						\
-+									\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	ret = bgrp->__VAR;						\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
-+
-+SHOW_FUNCTION(weight);
-+SHOW_FUNCTION(ioprio);
-+SHOW_FUNCTION(ioprio_class);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__VAR, __MIN, __MAX)				\
-+static int bfqio_cgroup_##__VAR##_write(struct cgroup_subsys_state *css,\
-+					struct cftype *cftype,		\
-+					u64 val)			\
-+{									\
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);			\
-+	struct bfq_group *bfqg;						\
-+	int ret = -EINVAL;						\
-+									\
-+	if (val < (__MIN) || val > (__MAX))				\
-+		return ret;						\
-+									\
-+	ret = -ENODEV;							\
-+	mutex_lock(&bfqio_mutex);					\
-+	if (bfqio_is_removed(bgrp))					\
-+		goto out_unlock;					\
-+	ret = 0;							\
-+									\
-+	spin_lock_irq(&bgrp->lock);					\
-+	bgrp->__VAR = (unsigned short)val;				\
-+	hlist_for_each_entry(bfqg, &bgrp->group_data, group_node) {	\
-+		/*							\
-+		 * Setting the ioprio_changed flag of the entity        \
-+		 * to 1 with new_##__VAR == ##__VAR would re-set        \
-+		 * the value of the weight to its ioprio mapping.       \
-+		 * Set the flag only if necessary.			\
-+		 */							\
-+		if ((unsigned short)val != bfqg->entity.new_##__VAR) {  \
-+			bfqg->entity.new_##__VAR = (unsigned short)val; \
-+			/*						\
-+			 * Make sure that the above new value has been	\
-+			 * stored in bfqg->entity.new_##__VAR before	\
-+			 * setting the ioprio_changed flag. In fact,	\
-+			 * this flag may be read asynchronously (in	\
-+			 * critical sections protected by a different	\
-+			 * lock than that held here), and finding this	\
-+			 * flag set may cause the execution of the code	\
-+			 * for updating parameters whose value may	\
-+			 * depend also on bfqg->entity.new_##__VAR (in	\
-+			 * __bfq_entity_update_weight_prio).		\
-+			 * This barrier makes sure that the new value	\
-+			 * of bfqg->entity.new_##__VAR is correctly	\
-+			 * seen in that code.				\
-+			 */						\
-+			smp_wmb();                                      \
-+			bfqg->entity.ioprio_changed = 1;                \
-+		}							\
-+	}								\
-+	spin_unlock_irq(&bgrp->lock);					\
-+									\
-+out_unlock:								\
-+	mutex_unlock(&bfqio_mutex);					\
-+	return ret;							\
-+}
-+
-+STORE_FUNCTION(weight, BFQ_MIN_WEIGHT, BFQ_MAX_WEIGHT);
-+STORE_FUNCTION(ioprio, 0, IOPRIO_BE_NR - 1);
-+STORE_FUNCTION(ioprio_class, IOPRIO_CLASS_RT, IOPRIO_CLASS_IDLE);
-+#undef STORE_FUNCTION
-+
-+static struct cftype bfqio_files[] = {
-+	{
-+		.name = "weight",
-+		.read_u64 = bfqio_cgroup_weight_read,
-+		.write_u64 = bfqio_cgroup_weight_write,
-+	},
-+	{
-+		.name = "ioprio",
-+		.read_u64 = bfqio_cgroup_ioprio_read,
-+		.write_u64 = bfqio_cgroup_ioprio_write,
-+	},
-+	{
-+		.name = "ioprio_class",
-+		.read_u64 = bfqio_cgroup_ioprio_class_read,
-+		.write_u64 = bfqio_cgroup_ioprio_class_write,
-+	},
-+	{ },	/* terminate */
-+};
-+
-+static struct cgroup_subsys_state *bfqio_create(struct cgroup_subsys_state
-+						*parent_css)
-+{
-+	struct bfqio_cgroup *bgrp;
-+
-+	if (parent_css != NULL) {
-+		bgrp = kzalloc(sizeof(*bgrp), GFP_KERNEL);
-+		if (bgrp == NULL)
-+			return ERR_PTR(-ENOMEM);
-+	} else
-+		bgrp = &bfqio_root_cgroup;
-+
-+	spin_lock_init(&bgrp->lock);
-+	INIT_HLIST_HEAD(&bgrp->group_data);
-+	bgrp->ioprio = BFQ_DEFAULT_GRP_IOPRIO;
-+	bgrp->ioprio_class = BFQ_DEFAULT_GRP_CLASS;
-+
-+	return &bgrp->css;
-+}
-+
-+/*
-+ * We cannot support shared io contexts, as we have no means to support
-+ * two tasks with the same ioc in two different groups without major rework
-+ * of the main bic/bfqq data structures.  By now we allow a task to change
-+ * its cgroup only if it's the only owner of its ioc; the drawback of this
-+ * behavior is that a group containing a task that forked using CLONE_IO
-+ * will not be destroyed until the tasks sharing the ioc die.
-+ */
-+static int bfqio_can_attach(struct cgroup_subsys_state *css,
-+			    struct cgroup_taskset *tset)
-+{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	int ret = 0;
-+
-+	cgroup_taskset_for_each(task, css, tset) {
-+		/*
-+		 * task_lock() is needed to avoid races with
-+		 * exit_io_context()
-+		 */
-+		task_lock(task);
-+		ioc = task->io_context;
-+		if (ioc != NULL && atomic_read(&ioc->nr_tasks) > 1)
-+			/*
-+			 * ioc == NULL means that the task is either too
-+			 * young or exiting: if it has still no ioc the
-+			 * ioc can't be shared, if the task is exiting the
-+			 * attach will fail anyway, no matter what we
-+			 * return here.
-+			 */
-+			ret = -EINVAL;
-+		task_unlock(task);
-+		if (ret)
-+			break;
-+	}
-+
-+	return ret;
-+}
-+
-+static void bfqio_attach(struct cgroup_subsys_state *css,
-+			 struct cgroup_taskset *tset)
-+{
-+	struct task_struct *task;
-+	struct io_context *ioc;
-+	struct io_cq *icq;
-+
-+	/*
-+	 * IMPORTANT NOTE: The move of more than one process at a time to a
-+	 * new group has not yet been tested.
-+	 */
-+	cgroup_taskset_for_each(task, css, tset) {
-+		ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);
-+		if (ioc) {
-+			/*
-+			 * Handle cgroup change here.
-+			 */
-+			rcu_read_lock();
-+			hlist_for_each_entry_rcu(icq, &ioc->icq_list, ioc_node)
-+				if (!strncmp(
-+					icq->q->elevator->type->elevator_name,
-+					"bfq", ELV_NAME_MAX))
-+					bfq_bic_change_cgroup(icq_to_bic(icq),
-+							      css);
-+			rcu_read_unlock();
-+			put_io_context(ioc);
-+		}
-+	}
-+}
-+
-+static void bfqio_destroy(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+	struct hlist_node *tmp;
-+	struct bfq_group *bfqg;
-+
-+	/*
-+	 * Since we are destroying the cgroup, there are no more tasks
-+	 * referencing it, and all the RCU grace periods that may have
-+	 * referenced it are ended (as the destruction of the parent
-+	 * cgroup is RCU-safe); bgrp->group_data will not be accessed by
-+	 * anything else and we don't need any synchronization.
-+	 */
-+	hlist_for_each_entry_safe(bfqg, tmp, &bgrp->group_data, group_node)
-+		bfq_destroy_group(bgrp, bfqg);
-+
-+	BUG_ON(!hlist_empty(&bgrp->group_data));
-+
-+	kfree(bgrp);
-+}
-+
-+static int bfqio_css_online(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = true;
-+	mutex_unlock(&bfqio_mutex);
-+
-+	return 0;
-+}
-+
-+static void bfqio_css_offline(struct cgroup_subsys_state *css)
-+{
-+	struct bfqio_cgroup *bgrp = css_to_bfqio(css);
-+
-+	mutex_lock(&bfqio_mutex);
-+	bgrp->online = false;
-+	mutex_unlock(&bfqio_mutex);
-+}
-+
-+struct cgroup_subsys bfqio_subsys = {
-+	.name = "bfqio",
-+	.css_alloc = bfqio_create,
-+	.css_online = bfqio_css_online,
-+	.css_offline = bfqio_css_offline,
-+	.can_attach = bfqio_can_attach,
-+	.attach = bfqio_attach,
-+	.css_free = bfqio_destroy,
-+	.subsys_id = bfqio_subsys_id,
-+	.base_cftypes = bfqio_files,
-+};
-+#else
-+static inline void bfq_init_entity(struct bfq_entity *entity,
-+				   struct bfq_group *bfqg)
-+{
-+	entity->weight = entity->new_weight;
-+	entity->orig_weight = entity->new_weight;
-+	entity->ioprio = entity->new_ioprio;
-+	entity->ioprio_class = entity->new_ioprio_class;
-+	entity->sched_data = &bfqg->sched_data;
-+}
-+
-+static inline struct bfq_group *
-+bfq_bic_update_cgroup(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+	return bfqd->root_group;
-+}
-+
-+static inline void bfq_bfqq_move(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq,
-+				 struct bfq_entity *entity,
-+				 struct bfq_group *bfqg)
-+{
-+}
-+
-+static void bfq_end_wr_async(struct bfq_data *bfqd)
-+{
-+	bfq_end_wr_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+static inline void bfq_disconnect_groups(struct bfq_data *bfqd)
-+{
-+	bfq_put_async_queues(bfqd, bfqd->root_group);
-+}
-+
-+static inline void bfq_free_root_group(struct bfq_data *bfqd)
-+{
-+	kfree(bfqd->root_group);
-+}
-+
-+static struct bfq_group *bfq_alloc_root_group(struct bfq_data *bfqd, int node)
-+{
-+	struct bfq_group *bfqg;
-+	int i;
-+
-+	bfqg = kmalloc_node(sizeof(*bfqg), GFP_KERNEL | __GFP_ZERO, node);
-+	if (bfqg == NULL)
-+		return NULL;
-+
-+	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
-+		bfqg->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
-+
-+	return bfqg;
-+}
-+#endif
-diff --git a/block/bfq-ioc.c b/block/bfq-ioc.c
-new file mode 100644
-index 0000000..7f6b000
---- /dev/null
-+++ b/block/bfq-ioc.c
-@@ -0,0 +1,36 @@
-+/*
-+ * BFQ: I/O context handling.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+/**
-+ * icq_to_bic - convert iocontext queue structure to bfq_io_cq.
-+ * @icq: the iocontext queue.
-+ */
-+static inline struct bfq_io_cq *icq_to_bic(struct io_cq *icq)
-+{
-+	/* bic->icq is the first member, %NULL will convert to %NULL */
-+	return container_of(icq, struct bfq_io_cq, icq);
-+}
-+
-+/**
-+ * bfq_bic_lookup - search into @ioc a bic associated to @bfqd.
-+ * @bfqd: the lookup key.
-+ * @ioc: the io_context of the process doing I/O.
-+ *
-+ * Queue lock must be held.
-+ */
-+static inline struct bfq_io_cq *bfq_bic_lookup(struct bfq_data *bfqd,
-+					       struct io_context *ioc)
-+{
-+	if (ioc)
-+		return icq_to_bic(ioc_lookup_icq(ioc, bfqd->queue));
-+	return NULL;
-+}
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-new file mode 100644
-index 0000000..0cbb182
---- /dev/null
-+++ b/block/bfq-iosched.c
-@@ -0,0 +1,3617 @@
-+/*
-+ * Budget Fair Queueing (BFQ) disk scheduler.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Licensed under the GPL-2 as detailed in the accompanying COPYING.BFQ
-+ * file.
-+ *
-+ * BFQ is a proportional-share storage-I/O scheduling algorithm based on
-+ * the slice-by-slice service scheme of CFQ. But BFQ assigns budgets,
-+ * measured in number of sectors, to processes instead of time slices. The
-+ * device is not granted to the in-service process for a given time slice,
-+ * but until it has exhausted its assigned budget. This change from the time
-+ * to the service domain allows BFQ to distribute the device throughput
-+ * among processes as desired, without any distortion due to ZBR, workload
-+ * fluctuations or other factors. BFQ uses an ad hoc internal scheduler,
-+ * called B-WF2Q+, to schedule processes according to their budgets. More
-+ * precisely, BFQ schedules queues associated to processes. Thanks to the
-+ * accurate policy of B-WF2Q+, BFQ can afford to assign high budgets to
-+ * I/O-bound processes issuing sequential requests (to boost the
-+ * throughput), and yet guarantee a low latency to interactive and soft
-+ * real-time applications.
-+ *
-+ * BFQ is described in [1], where also a reference to the initial, more
-+ * theoretical paper on BFQ can be found. The interested reader can find
-+ * in the latter paper full details on the main algorithm, as well as
-+ * formulas of the guarantees and formal proofs of all the properties.
-+ * With respect to the version of BFQ presented in these papers, this
-+ * implementation adds a few more heuristics, such as the one that
-+ * guarantees a low latency to soft real-time applications, and a
-+ * hierarchical extension based on H-WF2Q+.
-+ *
-+ * B-WF2Q+ is based on WF2Q+, that is described in [2], together with
-+ * H-WF2Q+, while the augmented tree used to implement B-WF2Q+ with O(log N)
-+ * complexity derives from the one introduced with EEVDF in [3].
-+ *
-+ * [1] P. Valente and M. Andreolini, ``Improving Application Responsiveness
-+ *     with the BFQ Disk I/O Scheduler'',
-+ *     Proceedings of the 5th Annual International Systems and Storage
-+ *     Conference (SYSTOR '12), June 2012.
-+ *
-+ * http://algogroup.unimo.it/people/paolo/disk_sched/bf1-v1-suite-results.pdf
-+ *
-+ * [2] Jon C.R. Bennett and H. Zhang, ``Hierarchical Packet Fair Queueing
-+ *     Algorithms,'' IEEE/ACM Transactions on Networking, 5(5):675-689,
-+ *     Oct 1997.
-+ *
-+ * http://www.cs.cmu.edu/~hzhang/papers/TON-97-Oct.ps.gz
-+ *
-+ * [3] I. Stoica and H. Abdel-Wahab, ``Earliest Eligible Virtual Deadline
-+ *     First: A Flexible and Accurate Mechanism for Proportional Share
-+ *     Resource Allocation,'' technical report.
-+ *
-+ * http://www.cs.berkeley.edu/~istoica/papers/eevdf-tr-95.pdf
-+ */
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/blkdev.h>
-+#include <linux/cgroup.h>
-+#include <linux/elevator.h>
-+#include <linux/jiffies.h>
-+#include <linux/rbtree.h>
-+#include <linux/ioprio.h>
-+#include "bfq.h"
-+#include "blk.h"
-+
-+/* Max number of dispatches in one round of service. */
-+static const int bfq_quantum = 4;
-+
-+/* Expiration time of sync (0) and async (1) requests, in jiffies. */
-+static const int bfq_fifo_expire[2] = { HZ / 4, HZ / 8 };
-+
-+/* Maximum backwards seek, in KiB. */
-+static const int bfq_back_max = 16 * 1024;
-+
-+/* Penalty of a backwards seek, in number of sectors. */
-+static const int bfq_back_penalty = 2;
-+
-+/* Idling period duration, in jiffies. */
-+static int bfq_slice_idle = HZ / 125;
-+
-+/* Default maximum budget values, in sectors and number of requests. */
-+static const int bfq_default_max_budget = 16 * 1024;
-+static const int bfq_max_budget_async_rq = 4;
-+
-+/*
-+ * Async to sync throughput distribution is controlled as follows:
-+ * when an async request is served, the entity is charged the number
-+ * of sectors of the request, multiplied by the factor below
-+ */
-+static const int bfq_async_charge_factor = 10;
-+
-+/* Default timeout values, in jiffies, approximating CFQ defaults. */
-+static const int bfq_timeout_sync = HZ / 8;
-+static int bfq_timeout_async = HZ / 25;
-+
-+struct kmem_cache *bfq_pool;
-+
-+/* Below this threshold (in ms), we consider thinktime immediate. */
-+#define BFQ_MIN_TT		2
-+
-+/* hw_tag detection: parallel requests threshold and min samples needed. */
-+#define BFQ_HW_QUEUE_THRESHOLD	4
-+#define BFQ_HW_QUEUE_SAMPLES	32
-+
-+#define BFQQ_SEEK_THR	 (sector_t)(8 * 1024)
-+#define BFQQ_SEEKY(bfqq) ((bfqq)->seek_mean > BFQQ_SEEK_THR)
-+
-+/* Min samples used for peak rate estimation (for autotuning). */
-+#define BFQ_PEAK_RATE_SAMPLES	32
-+
-+/* Shift used for peak rate fixed precision calculations. */
-+#define BFQ_RATE_SHIFT		16
-+
-+/*
-+ * By default, BFQ computes the duration of the weight raising for
-+ * interactive applications automatically, using the following formula:
-+ * duration = (R / r) * T, where r is the peak rate of the device, and
-+ * R and T are two reference parameters.
-+ * In particular, R is the peak rate of the reference device (see below),
-+ * and T is a reference time: given the systems that are likely to be
-+ * installed on the reference device according to its speed class, T is
-+ * about the maximum time needed, under BFQ and while reading two files in
-+ * parallel, to load typical large applications on these systems.
-+ * In practice, the slower/faster the device at hand is, the more/less it
-+ * takes to load applications with respect to the reference device.
-+ * Accordingly, the longer/shorter BFQ grants weight raising to interactive
-+ * applications.
-+ *
-+ * BFQ uses four different reference pairs (R, T), depending on:
-+ * . whether the device is rotational or non-rotational;
-+ * . whether the device is slow, such as old or portable HDDs, as well as
-+ *   SD cards, or fast, such as newer HDDs and SSDs.
-+ *
-+ * The device's speed class is dynamically (re)detected in
-+ * bfq_update_peak_rate() every time the estimated peak rate is updated.
-+ *
-+ * In the following definitions, R_slow[0]/R_fast[0] and T_slow[0]/T_fast[0]
-+ * are the reference values for a slow/fast rotational device, whereas
-+ * R_slow[1]/R_fast[1] and T_slow[1]/T_fast[1] are the reference values for
-+ * a slow/fast non-rotational device. Finally, device_speed_thresh are the
-+ * thresholds used to switch between speed classes.
-+ * Both the reference peak rates and the thresholds are measured in
-+ * sectors/usec, left-shifted by BFQ_RATE_SHIFT.
-+ */
-+static int R_slow[2] = {1536, 10752};
-+static int R_fast[2] = {17415, 34791};
-+/*
-+ * To improve readability, a conversion function is used to initialize the
-+ * following arrays, which entails that they can be initialized only in a
-+ * function.
-+ */
-+static int T_slow[2];
-+static int T_fast[2];
-+static int device_speed_thresh[2];
-+
-+#define BFQ_SERVICE_TREE_INIT	((struct bfq_service_tree)		\
-+				{ RB_ROOT, RB_ROOT, NULL, NULL, 0, 0 })
-+
-+#define RQ_BIC(rq)		((struct bfq_io_cq *) (rq)->elv.priv[0])
-+#define RQ_BFQQ(rq)		((rq)->elv.priv[1])
-+
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd);
-+
-+#include "bfq-ioc.c"
-+#include "bfq-sched.c"
-+#include "bfq-cgroup.c"
-+
-+#define bfq_class_idle(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_IDLE)
-+#define bfq_class_rt(bfqq)	((bfqq)->entity.ioprio_class ==\
-+				 IOPRIO_CLASS_RT)
-+
-+#define bfq_sample_valid(samples)	((samples) > 80)
-+
-+/*
-+ * We regard a request as SYNC, if either it's a read or has the SYNC bit
-+ * set (in which case it could also be a direct WRITE).
-+ */
-+static inline int bfq_bio_sync(struct bio *bio)
-+{
-+	if (bio_data_dir(bio) == READ || (bio->bi_rw & REQ_SYNC))
-+		return 1;
-+
-+	return 0;
-+}
-+
-+/*
-+ * Scheduler run of queue, if there are requests pending and no one in the
-+ * driver that will restart queueing.
-+ */
-+static inline void bfq_schedule_dispatch(struct bfq_data *bfqd)
-+{
-+	if (bfqd->queued != 0) {
-+		bfq_log(bfqd, "schedule dispatch");
-+		kblockd_schedule_work(bfqd->queue, &bfqd->unplug_work);
-+	}
-+}
-+
-+/*
-+ * Lifted from AS - choose which of rq1 and rq2 that is best served now.
-+ * We choose the request that is closesr to the head right now.  Distance
-+ * behind the head is penalized and only allowed to a certain extent.
-+ */
-+static struct request *bfq_choose_req(struct bfq_data *bfqd,
-+				      struct request *rq1,
-+				      struct request *rq2,
-+				      sector_t last)
-+{
-+	sector_t s1, s2, d1 = 0, d2 = 0;
-+	unsigned long back_max;
-+#define BFQ_RQ1_WRAP	0x01 /* request 1 wraps */
-+#define BFQ_RQ2_WRAP	0x02 /* request 2 wraps */
-+	unsigned wrap = 0; /* bit mask: requests behind the disk head? */
-+
-+	if (rq1 == NULL || rq1 == rq2)
-+		return rq2;
-+	if (rq2 == NULL)
-+		return rq1;
-+
-+	if (rq_is_sync(rq1) && !rq_is_sync(rq2))
-+		return rq1;
-+	else if (rq_is_sync(rq2) && !rq_is_sync(rq1))
-+		return rq2;
-+	if ((rq1->cmd_flags & REQ_META) && !(rq2->cmd_flags & REQ_META))
-+		return rq1;
-+	else if ((rq2->cmd_flags & REQ_META) && !(rq1->cmd_flags & REQ_META))
-+		return rq2;
-+
-+	s1 = blk_rq_pos(rq1);
-+	s2 = blk_rq_pos(rq2);
-+
-+	/*
-+	 * By definition, 1KiB is 2 sectors.
-+	 */
-+	back_max = bfqd->bfq_back_max * 2;
-+
-+	/*
-+	 * Strict one way elevator _except_ in the case where we allow
-+	 * short backward seeks which are biased as twice the cost of a
-+	 * similar forward seek.
-+	 */
-+	if (s1 >= last)
-+		d1 = s1 - last;
-+	else if (s1 + back_max >= last)
-+		d1 = (last - s1) * bfqd->bfq_back_penalty;
-+	else
-+		wrap |= BFQ_RQ1_WRAP;
-+
-+	if (s2 >= last)
-+		d2 = s2 - last;
-+	else if (s2 + back_max >= last)
-+		d2 = (last - s2) * bfqd->bfq_back_penalty;
-+	else
-+		wrap |= BFQ_RQ2_WRAP;
-+
-+	/* Found required data */
-+
-+	/*
-+	 * By doing switch() on the bit mask "wrap" we avoid having to
-+	 * check two variables for all permutations: --> faster!
-+	 */
-+	switch (wrap) {
-+	case 0: /* common case for CFQ: rq1 and rq2 not wrapped */
-+		if (d1 < d2)
-+			return rq1;
-+		else if (d2 < d1)
-+			return rq2;
-+		else {
-+			if (s1 >= s2)
-+				return rq1;
-+			else
-+				return rq2;
-+		}
-+
-+	case BFQ_RQ2_WRAP:
-+		return rq1;
-+	case BFQ_RQ1_WRAP:
-+		return rq2;
-+	case (BFQ_RQ1_WRAP|BFQ_RQ2_WRAP): /* both rqs wrapped */
-+	default:
-+		/*
-+		 * Since both rqs are wrapped,
-+		 * start with the one that's further behind head
-+		 * (--> only *one* back seek required),
-+		 * since back seek takes more time than forward.
-+		 */
-+		if (s1 <= s2)
-+			return rq1;
-+		else
-+			return rq2;
-+	}
-+}
-+
-+static struct bfq_queue *
-+bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
-+		     sector_t sector, struct rb_node **ret_parent,
-+		     struct rb_node ***rb_link)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	parent = NULL;
-+	p = &root->rb_node;
-+	while (*p) {
-+		struct rb_node **n;
-+
-+		parent = *p;
-+		bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+
-+		/*
-+		 * Sort strictly based on sector. Smallest to the left,
-+		 * largest to the right.
-+		 */
-+		if (sector > blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_right;
-+		else if (sector < blk_rq_pos(bfqq->next_rq))
-+			n = &(*p)->rb_left;
-+		else
-+			break;
-+		p = n;
-+		bfqq = NULL;
-+	}
-+
-+	*ret_parent = parent;
-+	if (rb_link)
-+		*rb_link = p;
-+
-+	bfq_log(bfqd, "rq_pos_tree_lookup %llu: returning %d",
-+		(long long unsigned)sector,
-+		bfqq != NULL ? bfqq->pid : 0);
-+
-+	return bfqq;
-+}
-+
-+static void bfq_rq_pos_tree_add(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct rb_node **p, *parent;
-+	struct bfq_queue *__bfqq;
-+
-+	if (bfqq->pos_root != NULL) {
-+		rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+		bfqq->pos_root = NULL;
-+	}
-+
-+	if (bfq_class_idle(bfqq))
-+		return;
-+	if (!bfqq->next_rq)
-+		return;
-+
-+	bfqq->pos_root = &bfqd->rq_pos_tree;
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, bfqq->pos_root,
-+			blk_rq_pos(bfqq->next_rq), &parent, &p);
-+	if (__bfqq == NULL) {
-+		rb_link_node(&bfqq->pos_node, parent, p);
-+		rb_insert_color(&bfqq->pos_node, bfqq->pos_root);
-+	} else
-+		bfqq->pos_root = NULL;
-+}
-+
-+/*
-+ * Tell whether there are active queues or groups with differentiated weights.
-+ */
-+static inline bool bfq_differentiated_weights(struct bfq_data *bfqd)
-+{
-+	BUG_ON(!bfqd->hw_tag);
-+	/*
-+	 * For weights to differ, at least one of the trees must contain
-+	 * at least two nodes.
-+	 */
-+	return (!RB_EMPTY_ROOT(&bfqd->queue_weights_tree) &&
-+		(bfqd->queue_weights_tree.rb_node->rb_left ||
-+		 bfqd->queue_weights_tree.rb_node->rb_right)
-+#ifdef CONFIG_CGROUP_BFQIO
-+	       ) ||
-+	       (!RB_EMPTY_ROOT(&bfqd->group_weights_tree) &&
-+		(bfqd->group_weights_tree.rb_node->rb_left ||
-+		 bfqd->group_weights_tree.rb_node->rb_right)
-+#endif
-+	       );
-+}
-+
-+/*
-+ * If the weight-counter tree passed as input contains no counter for
-+ * the weight of the input entity, then add that counter; otherwise just
-+ * increment the existing counter.
-+ *
-+ * Note that weight-counter trees contain few nodes in mostly symmetric
-+ * scenarios. For example, if all queues have the same weight, then the
-+ * weight-counter tree for the queues may contain at most one node.
-+ * This holds even if low_latency is on, because weight-raised queues
-+ * are not inserted in the tree.
-+ * In most scenarios, the rate at which nodes are created/destroyed
-+ * should be low too.
-+ */
-+static void bfq_weights_tree_add(struct bfq_data *bfqd,
-+				 struct bfq_entity *entity,
-+				 struct rb_root *root)
-+{
-+	struct rb_node **new = &(root->rb_node), *parent = NULL;
-+
-+	/*
-+	 * Do not insert if:
-+	 * - the device does not support queueing;
-+	 * - the entity is already associated with a counter, which happens if:
-+	 *   1) the entity is associated with a queue, 2) a request arrival
-+	 *   has caused the queue to become both non-weight-raised, and hence
-+	 *   change its weight, and backlogged; in this respect, each
-+	 *   of the two events causes an invocation of this function,
-+	 *   3) this is the invocation of this function caused by the second
-+	 *   event. This second invocation is actually useless, and we handle
-+	 *   this fact by exiting immediately. More efficient or clearer
-+	 *   solutions might possibly be adopted.
-+	 */
-+	if (!bfqd->hw_tag || entity->weight_counter)
-+		return;
-+
-+	while (*new) {
-+		struct bfq_weight_counter *__counter = container_of(*new,
-+						struct bfq_weight_counter,
-+						weights_node);
-+		parent = *new;
-+
-+		if (entity->weight == __counter->weight) {
-+			entity->weight_counter = __counter;
-+			goto inc_counter;
-+		}
-+		if (entity->weight < __counter->weight)
-+			new = &((*new)->rb_left);
-+		else
-+			new = &((*new)->rb_right);
-+	}
-+
-+	entity->weight_counter = kzalloc(sizeof(struct bfq_weight_counter),
-+					 GFP_ATOMIC);
-+	entity->weight_counter->weight = entity->weight;
-+	rb_link_node(&entity->weight_counter->weights_node, parent, new);
-+	rb_insert_color(&entity->weight_counter->weights_node, root);
-+
-+inc_counter:
-+	entity->weight_counter->num_active++;
-+}
-+
-+/*
-+ * Decrement the weight counter associated with the entity, and, if the
-+ * counter reaches 0, remove the counter from the tree.
-+ * See the comments to the function bfq_weights_tree_add() for considerations
-+ * about overhead.
-+ */
-+static void bfq_weights_tree_remove(struct bfq_data *bfqd,
-+				    struct bfq_entity *entity,
-+				    struct rb_root *root)
-+{
-+	/*
-+	 * Check whether the entity is actually associated with a counter.
-+	 * In fact, the device may not be considered NCQ-capable for a while,
-+	 * which implies that no insertion in the weight trees is performed,
-+	 * after which the device may start to be deemed NCQ-capable, and hence
-+	 * this function may start to be invoked. This may cause the function
-+	 * to be invoked for entities that are not associated with any counter.
-+	 */
-+	if (!entity->weight_counter)
-+		return;
-+
-+	BUG_ON(RB_EMPTY_ROOT(root));
-+	BUG_ON(entity->weight_counter->weight != entity->weight);
-+
-+	BUG_ON(!entity->weight_counter->num_active);
-+	entity->weight_counter->num_active--;
-+	if (entity->weight_counter->num_active > 0)
-+		goto reset_entity_pointer;
-+
-+	rb_erase(&entity->weight_counter->weights_node, root);
-+	kfree(entity->weight_counter);
-+
-+reset_entity_pointer:
-+	entity->weight_counter = NULL;
-+}
-+
-+static struct request *bfq_find_next_rq(struct bfq_data *bfqd,
-+					struct bfq_queue *bfqq,
-+					struct request *last)
-+{
-+	struct rb_node *rbnext = rb_next(&last->rb_node);
-+	struct rb_node *rbprev = rb_prev(&last->rb_node);
-+	struct request *next = NULL, *prev = NULL;
-+
-+	BUG_ON(RB_EMPTY_NODE(&last->rb_node));
-+
-+	if (rbprev != NULL)
-+		prev = rb_entry_rq(rbprev);
-+
-+	if (rbnext != NULL)
-+		next = rb_entry_rq(rbnext);
-+	else {
-+		rbnext = rb_first(&bfqq->sort_list);
-+		if (rbnext && rbnext != &last->rb_node)
-+			next = rb_entry_rq(rbnext);
-+	}
-+
-+	return bfq_choose_req(bfqd, next, prev, blk_rq_pos(last));
-+}
-+
-+/* see the definition of bfq_async_charge_factor for details */
-+static inline unsigned long bfq_serv_to_charge(struct request *rq,
-+					       struct bfq_queue *bfqq)
-+{
-+	return blk_rq_sectors(rq) *
-+		(1 + ((!bfq_bfqq_sync(bfqq)) * (bfqq->wr_coeff == 1) *
-+		bfq_async_charge_factor));
-+}
-+
-+/**
-+ * bfq_updated_next_req - update the queue after a new next_rq selection.
-+ * @bfqd: the device data the queue belongs to.
-+ * @bfqq: the queue to update.
-+ *
-+ * If the first request of a queue changes we make sure that the queue
-+ * has enough budget to serve at least its first request (if the
-+ * request has grown).  We do this because if the queue has not enough
-+ * budget for its first request, it has to go through two dispatch
-+ * rounds to actually get it dispatched.
-+ */
-+static void bfq_updated_next_req(struct bfq_data *bfqd,
-+				 struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	struct request *next_rq = bfqq->next_rq;
-+	unsigned long new_budget;
-+
-+	if (next_rq == NULL)
-+		return;
-+
-+	if (bfqq == bfqd->in_service_queue)
-+		/*
-+		 * In order not to break guarantees, budgets cannot be
-+		 * changed after an entity has been selected.
-+		 */
-+		return;
-+
-+	BUG_ON(entity->tree != &st->active);
-+	BUG_ON(entity == entity->sched_data->in_service_entity);
-+
-+	new_budget = max_t(unsigned long, bfqq->max_budget,
-+			   bfq_serv_to_charge(next_rq, bfqq));
-+	if (entity->budget != new_budget) {
-+		entity->budget = new_budget;
-+		bfq_log_bfqq(bfqd, bfqq, "updated next rq: new budget %lu",
-+					 new_budget);
-+		bfq_activate_bfqq(bfqd, bfqq);
-+	}
-+}
-+
-+static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
-+{
-+	u64 dur;
-+
-+	if (bfqd->bfq_wr_max_time > 0)
-+		return bfqd->bfq_wr_max_time;
-+
-+	dur = bfqd->RT_prod;
-+	do_div(dur, bfqd->peak_rate);
-+
-+	return dur;
-+}
-+
-+static void bfq_add_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	struct request *next_rq, *prev;
-+	unsigned long old_wr_coeff = bfqq->wr_coeff;
-+	int idle_for_long_time = 0;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "add_request %d", rq_is_sync(rq));
-+	bfqq->queued[rq_is_sync(rq)]++;
-+	bfqd->queued++;
-+
-+	elv_rb_add(&bfqq->sort_list, rq);
-+
-+	/*
-+	 * Check if this request is a better next-serve candidate.
-+	 */
-+	prev = bfqq->next_rq;
-+	next_rq = bfq_choose_req(bfqd, bfqq->next_rq, rq, bfqd->last_position);
-+	BUG_ON(next_rq == NULL);
-+	bfqq->next_rq = next_rq;
-+
-+	/*
-+	 * Adjust priority tree position, if next_rq changes.
-+	 */
-+	if (prev != bfqq->next_rq)
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+
-+	if (!bfq_bfqq_busy(bfqq)) {
-+		int soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
-+			time_is_before_jiffies(bfqq->soft_rt_next_start);
-+		idle_for_long_time = time_is_before_jiffies(
-+			bfqq->budget_timeout +
-+			bfqd->bfq_wr_min_idle_time);
-+		entity->budget = max_t(unsigned long, bfqq->max_budget,
-+				       bfq_serv_to_charge(next_rq, bfqq));
-+
-+		if (!bfq_bfqq_IO_bound(bfqq)) {
-+			if (time_before(jiffies,
-+					RQ_BIC(rq)->ttime.last_end_request +
-+					bfqd->bfq_slice_idle)) {
-+				bfqq->requests_within_timer++;
-+				if (bfqq->requests_within_timer >=
-+				    bfqd->bfq_requests_within_timer)
-+					bfq_mark_bfqq_IO_bound(bfqq);
-+			} else
-+				bfqq->requests_within_timer = 0;
-+		}
-+
-+		if (!bfqd->low_latency)
-+			goto add_bfqq_busy;
-+
-+		/*
-+		 * If the queue is not being boosted and has been idle
-+		 * for enough time, start a weight-raising period
-+		 */
-+		if (old_wr_coeff == 1 && (idle_for_long_time || soft_rt)) {
-+			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
-+			if (idle_for_long_time)
-+				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else
-+				bfqq->wr_cur_max_time =
-+					bfqd->bfq_wr_rt_max_time;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "wrais starting at %lu, rais_max_time %u",
-+				     jiffies,
-+				     jiffies_to_msecs(bfqq->wr_cur_max_time));
-+		} else if (old_wr_coeff > 1) {
-+			if (idle_for_long_time)
-+				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+			else if (bfqq->wr_cur_max_time ==
-+				 bfqd->bfq_wr_rt_max_time &&
-+				 !soft_rt) {
-+				bfqq->wr_coeff = 1;
-+				bfq_log_bfqq(bfqd, bfqq,
-+					"wrais ending at %lu, rais_max_time %u",
-+					jiffies,
-+					jiffies_to_msecs(bfqq->
-+						wr_cur_max_time));
-+			} else if (time_before(
-+					bfqq->last_wr_start_finish +
-+					bfqq->wr_cur_max_time,
-+					jiffies +
-+					bfqd->bfq_wr_rt_max_time) &&
-+				   soft_rt) {
-+				/*
-+				 *
-+				 * The remaining weight-raising time is lower
-+				 * than bfqd->bfq_wr_rt_max_time, which
-+				 * means that the application is enjoying
-+				 * weight raising either because deemed soft-
-+				 * rt in the near past, or because deemed
-+				 * interactive a long ago. In both cases,
-+				 * resetting now the current remaining weight-
-+				 * raising time for the application to the
-+				 * weight-raising duration for soft rt
-+				 * applications would not cause any latency
-+				 * increase for the application (as the new
-+				 * duration would be higher than the remaining
-+				 * time).
-+				 *
-+				 * In addition, the application is now meeting
-+				 * the requirements for being deemed soft rt.
-+				 * In the end we can correctly and safely
-+				 * (re)charge the weight-raising duration for
-+				 * the application with the weight-raising
-+				 * duration for soft rt applications.
-+				 *
-+				 * In particular, doing this recharge now, i.e.,
-+				 * before the weight-raising period for the
-+				 * application finishes, reduces the probability
-+				 * of the following negative scenario:
-+				 * 1) the weight of a soft rt application is
-+				 *    raised at startup (as for any newly
-+				 *    created application),
-+				 * 2) since the application is not interactive,
-+				 *    at a certain time weight-raising is
-+				 *    stopped for the application,
-+				 * 3) at that time the application happens to
-+				 *    still have pending requests, and hence
-+				 *    is destined to not have a chance to be
-+				 *    deemed soft rt before these requests are
-+				 *    completed (see the comments to the
-+				 *    function bfq_bfqq_softrt_next_start()
-+				 *    for details on soft rt detection),
-+				 * 4) these pending requests experience a high
-+				 *    latency because the application is not
-+				 *    weight-raised while they are pending.
-+				 */
-+				bfqq->last_wr_start_finish = jiffies;
-+				bfqq->wr_cur_max_time =
-+					bfqd->bfq_wr_rt_max_time;
-+			}
-+		}
-+		if (old_wr_coeff != bfqq->wr_coeff)
-+			entity->ioprio_changed = 1;
-+add_bfqq_busy:
-+		bfqq->last_idle_bklogged = jiffies;
-+		bfqq->service_from_backlogged = 0;
-+		bfq_clear_bfqq_softrt_update(bfqq);
-+		bfq_add_bfqq_busy(bfqd, bfqq);
-+	} else {
-+		if (bfqd->low_latency && old_wr_coeff == 1 && !rq_is_sync(rq) &&
-+		    time_is_before_jiffies(
-+				bfqq->last_wr_start_finish +
-+				bfqd->bfq_wr_min_inter_arr_async)) {
-+			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
-+			bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-+
-+			bfqd->wr_busy_queues++;
-+			entity->ioprio_changed = 1;
-+			bfq_log_bfqq(bfqd, bfqq,
-+			    "non-idle wrais starting at %lu, rais_max_time %u",
-+			    jiffies,
-+			    jiffies_to_msecs(bfqq->wr_cur_max_time));
-+		}
-+		if (prev != bfqq->next_rq)
-+			bfq_updated_next_req(bfqd, bfqq);
-+	}
-+
-+	if (bfqd->low_latency &&
-+		(old_wr_coeff == 1 || bfqq->wr_coeff == 1 ||
-+		 idle_for_long_time))
-+		bfqq->last_wr_start_finish = jiffies;
-+}
-+
-+static struct request *bfq_find_rq_fmerge(struct bfq_data *bfqd,
-+					  struct bio *bio)
-+{
-+	struct task_struct *tsk = current;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
-+		return NULL;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	if (bfqq != NULL)
-+		return elv_rb_find(&bfqq->sort_list, bio_end_sector(bio));
-+
-+	return NULL;
-+}
-+
-+static void bfq_activate_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+
-+	bfqd->rq_in_driver++;
-+	bfqd->last_position = blk_rq_pos(rq) + blk_rq_sectors(rq);
-+	bfq_log(bfqd, "activate_request: new bfqd->last_position %llu",
-+		(long long unsigned)bfqd->last_position);
-+}
-+
-+static inline void bfq_deactivate_request(struct request_queue *q,
-+					  struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+
-+	BUG_ON(bfqd->rq_in_driver == 0);
-+	bfqd->rq_in_driver--;
-+}
-+
-+static void bfq_remove_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	const int sync = rq_is_sync(rq);
-+
-+	if (bfqq->next_rq == rq) {
-+		bfqq->next_rq = bfq_find_next_rq(bfqd, bfqq, rq);
-+		bfq_updated_next_req(bfqd, bfqq);
-+	}
-+
-+	list_del_init(&rq->queuelist);
-+	BUG_ON(bfqq->queued[sync] == 0);
-+	bfqq->queued[sync]--;
-+	bfqd->queued--;
-+	elv_rb_del(&bfqq->sort_list, rq);
-+
-+	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		if (bfq_bfqq_busy(bfqq) && bfqq != bfqd->in_service_queue)
-+			bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+		/*
-+		 * Remove queue from request-position tree as it is empty.
-+		 */
-+		if (bfqq->pos_root != NULL) {
-+			rb_erase(&bfqq->pos_node, bfqq->pos_root);
-+			bfqq->pos_root = NULL;
-+		}
-+	}
-+
-+	if (rq->cmd_flags & REQ_META) {
-+		BUG_ON(bfqq->meta_pending == 0);
-+		bfqq->meta_pending--;
-+	}
-+}
-+
-+static int bfq_merge(struct request_queue *q, struct request **req,
-+		     struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct request *__rq;
-+
-+	__rq = bfq_find_rq_fmerge(bfqd, bio);
-+	if (__rq != NULL && elv_rq_merge_ok(__rq, bio)) {
-+		*req = __rq;
-+		return ELEVATOR_FRONT_MERGE;
-+	}
-+
-+	return ELEVATOR_NO_MERGE;
-+}
-+
-+static void bfq_merged_request(struct request_queue *q, struct request *req,
-+			       int type)
-+{
-+	if (type == ELEVATOR_FRONT_MERGE &&
-+	    rb_prev(&req->rb_node) &&
-+	    blk_rq_pos(req) <
-+	    blk_rq_pos(container_of(rb_prev(&req->rb_node),
-+				    struct request, rb_node))) {
-+		struct bfq_queue *bfqq = RQ_BFQQ(req);
-+		struct bfq_data *bfqd = bfqq->bfqd;
-+		struct request *prev, *next_rq;
-+
-+		/* Reposition request in its sort_list */
-+		elv_rb_del(&bfqq->sort_list, req);
-+		elv_rb_add(&bfqq->sort_list, req);
-+		/* Choose next request to be served for bfqq */
-+		prev = bfqq->next_rq;
-+		next_rq = bfq_choose_req(bfqd, bfqq->next_rq, req,
-+					 bfqd->last_position);
-+		BUG_ON(next_rq == NULL);
-+		bfqq->next_rq = next_rq;
-+		/*
-+		 * If next_rq changes, update both the queue's budget to
-+		 * fit the new request and the queue's position in its
-+		 * rq_pos_tree.
-+		 */
-+		if (prev != bfqq->next_rq) {
-+			bfq_updated_next_req(bfqd, bfqq);
-+			bfq_rq_pos_tree_add(bfqd, bfqq);
-+		}
-+	}
-+}
-+
-+static void bfq_merged_requests(struct request_queue *q, struct request *rq,
-+				struct request *next)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	/*
-+	 * Reposition in fifo if next is older than rq.
-+	 */
-+	if (!list_empty(&rq->queuelist) && !list_empty(&next->queuelist) &&
-+	    time_before(rq_fifo_time(next), rq_fifo_time(rq))) {
-+		list_move(&rq->queuelist, &next->queuelist);
-+		rq_set_fifo_time(rq, rq_fifo_time(next));
-+	}
-+
-+	if (bfqq->next_rq == next)
-+		bfqq->next_rq = rq;
-+
-+	bfq_remove_request(next);
-+}
-+
-+/* Must be called with bfqq != NULL */
-+static inline void bfq_bfqq_end_wr(struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfqq == NULL);
-+	if (bfq_bfqq_busy(bfqq))
-+		bfqq->bfqd->wr_busy_queues--;
-+	bfqq->wr_coeff = 1;
-+	bfqq->wr_cur_max_time = 0;
-+	/* Trigger a weight change on the next activation of the queue */
-+	bfqq->entity.ioprio_changed = 1;
-+}
-+
-+static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
-+				    struct bfq_group *bfqg)
-+{
-+	int i, j;
-+
-+	for (i = 0; i < 2; i++)
-+		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			if (bfqg->async_bfqq[i][j] != NULL)
-+				bfq_bfqq_end_wr(bfqg->async_bfqq[i][j]);
-+	if (bfqg->async_idle_bfqq != NULL)
-+		bfq_bfqq_end_wr(bfqg->async_idle_bfqq);
-+}
-+
-+static void bfq_end_wr(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	spin_lock_irq(bfqd->queue->queue_lock);
-+
-+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list)
-+		bfq_bfqq_end_wr(bfqq);
-+	list_for_each_entry(bfqq, &bfqd->idle_list, bfqq_list)
-+		bfq_bfqq_end_wr(bfqq);
-+	bfq_end_wr_async(bfqd);
-+
-+	spin_unlock_irq(bfqd->queue->queue_lock);
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
-+						  struct bfq_queue *bfqq)
-+{
-+	if (!bfqq)
-+		bfqq = bfq_get_next_queue(bfqd);
-+	else
-+		bfq_get_next_queue_forced(bfqd, bfqq);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
-+static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
-+					  struct request *rq)
-+{
-+	if (blk_rq_pos(rq) >= bfqd->last_position)
-+		return blk_rq_pos(rq) - bfqd->last_position;
-+	else
-+		return bfqd->last_position - blk_rq_pos(rq);
-+}
-+
-+/*
-+ * Return true if bfqq has no request pending and rq is close enough to
-+ * bfqd->last_position, or if rq is closer to bfqd->last_position than
-+ * bfqq->next_rq
-+ */
-+static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+{
-+	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+}
-+
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+{
-+	struct rb_root *root = &bfqd->rq_pos_tree;
-+	struct rb_node *parent, *node;
-+	struct bfq_queue *__bfqq;
-+	sector_t sector = bfqd->last_position;
-+
-+	if (RB_EMPTY_ROOT(root))
-+		return NULL;
-+
-+	/*
-+	 * First, if we find a request starting at the end of the last
-+	 * request, choose it.
-+	 */
-+	__bfqq = bfq_rq_pos_tree_lookup(bfqd, root, sector, &parent, NULL);
-+	if (__bfqq != NULL)
-+		return __bfqq;
-+
-+	/*
-+	 * If the exact sector wasn't found, the parent of the NULL leaf
-+	 * will contain the closest sector (rq_pos_tree sorted by
-+	 * next_request position).
-+	 */
-+	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	if (blk_rq_pos(__bfqq->next_rq) < sector)
-+		node = rb_next(&__bfqq->pos_node);
-+	else
-+		node = rb_prev(&__bfqq->pos_node);
-+	if (node == NULL)
-+		return NULL;
-+
-+	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
-+	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+		return __bfqq;
-+
-+	return NULL;
-+}
-+
-+/*
-+ * bfqd - obvious
-+ * cur_bfqq - passed in so that we don't decide that the current queue
-+ *            is closely cooperating with itself.
-+ *
-+ * We are assuming that cur_bfqq has dispatched at least one request,
-+ * and that bfqd->last_position reflects a position on the disk associated
-+ * with the I/O issued by cur_bfqq.
-+ */
-+static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
-+					      struct bfq_queue *cur_bfqq)
-+{
-+	struct bfq_queue *bfqq;
-+
-+	if (bfq_class_idle(cur_bfqq))
-+		return NULL;
-+	if (!bfq_bfqq_sync(cur_bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(cur_bfqq))
-+		return NULL;
-+
-+	/* If device has only one backlogged bfq_queue, don't search. */
-+	if (bfqd->busy_queues == 1)
-+		return NULL;
-+
-+	/*
-+	 * We should notice if some of the queues are cooperating, e.g.
-+	 * working closely on the same area of the disk. In that case,
-+	 * we can group them together and don't waste time idling.
-+	 */
-+	bfqq = bfqq_close(bfqd);
-+	if (bfqq == NULL || bfqq == cur_bfqq)
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues from different bfq_groups.
-+	*/
-+	if (bfqq->entity.parent != cur_bfqq->entity.parent)
-+		return NULL;
-+
-+	/*
-+	 * It only makes sense to merge sync queues.
-+	 */
-+	if (!bfq_bfqq_sync(bfqq))
-+		return NULL;
-+	if (BFQQ_SEEKY(bfqq))
-+		return NULL;
-+
-+	/*
-+	 * Do not merge queues of different priority classes.
-+	 */
-+	if (bfq_class_rt(bfqq) != bfq_class_rt(cur_bfqq))
-+		return NULL;
-+
-+	return bfqq;
-+}
-+
-+/*
-+ * If enough samples have been computed, return the current max budget
-+ * stored in bfqd, which is dynamically updated according to the
-+ * estimated disk peak rate; otherwise return the default max budget
-+ */
-+static inline unsigned long bfq_max_budget(struct bfq_data *bfqd)
-+{
-+	if (bfqd->budgets_assigned < 194)
-+		return bfq_default_max_budget;
-+	else
-+		return bfqd->bfq_max_budget;
-+}
-+
-+/*
-+ * Return min budget, which is a fraction of the current or default
-+ * max budget (trying with 1/32)
-+ */
-+static inline unsigned long bfq_min_budget(struct bfq_data *bfqd)
-+{
-+	if (bfqd->budgets_assigned < 194)
-+		return bfq_default_max_budget / 32;
-+	else
-+		return bfqd->bfq_max_budget / 32;
-+}
-+
-+static void bfq_arm_slice_timer(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfqd->in_service_queue;
-+	struct bfq_io_cq *bic;
-+	unsigned long sl;
-+
-+	BUG_ON(!RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	/* Processes have exited, don't wait. */
-+	bic = bfqd->in_service_bic;
-+	if (bic == NULL || atomic_read(&bic->icq.ioc->active_ref) == 0)
-+		return;
-+
-+	bfq_mark_bfqq_wait_request(bfqq);
-+
-+	/*
-+	 * We don't want to idle for seeks, but we do want to allow
-+	 * fair distribution of slice time for a process doing back-to-back
-+	 * seeks. So allow a little bit of time for him to submit a new rq.
-+	 *
-+	 * To prevent processes with (partly) seeky workloads from
-+	 * being too ill-treated, grant them a small fraction of the
-+	 * assigned budget before reducing the waiting time to
-+	 * BFQ_MIN_TT. This happened to help reduce latency.
-+	 */
-+	sl = bfqd->bfq_slice_idle;
-+	/*
-+	 * Unless the queue is being weight-raised, grant only minimum idle
-+	 * time if the queue either has been seeky for long enough or has
-+	 * already proved to be constantly seeky.
-+	 */
-+	if (bfq_sample_valid(bfqq->seek_samples) &&
-+	    ((BFQQ_SEEKY(bfqq) && bfqq->entity.service >
-+				  bfq_max_budget(bfqq->bfqd) / 8) ||
-+	      bfq_bfqq_constantly_seeky(bfqq)) && bfqq->wr_coeff == 1)
-+		sl = min(sl, msecs_to_jiffies(BFQ_MIN_TT));
-+	else if (bfqq->wr_coeff > 1)
-+		sl = sl * 3;
-+	bfqd->last_idling_start = ktime_get();
-+	mod_timer(&bfqd->idle_slice_timer, jiffies + sl);
-+	bfq_log(bfqd, "arm idle: %u/%u ms",
-+		jiffies_to_msecs(sl), jiffies_to_msecs(bfqd->bfq_slice_idle));
-+}
-+
-+/*
-+ * Set the maximum time for the in-service queue to consume its
-+ * budget. This prevents seeky processes from lowering the disk
-+ * throughput (always guaranteed with a time slice scheme as in CFQ).
-+ */
-+static void bfq_set_budget_timeout(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfqd->in_service_queue;
-+	unsigned int timeout_coeff;
-+	if (bfqq->wr_cur_max_time == bfqd->bfq_wr_rt_max_time)
-+		timeout_coeff = 1;
-+	else
-+		timeout_coeff = bfqq->entity.weight / bfqq->entity.orig_weight;
-+
-+	bfqd->last_budget_start = ktime_get();
-+
-+	bfq_clear_bfqq_budget_new(bfqq);
-+	bfqq->budget_timeout = jiffies +
-+		bfqd->bfq_timeout[bfq_bfqq_sync(bfqq)] * timeout_coeff;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "set budget_timeout %u",
-+		jiffies_to_msecs(bfqd->bfq_timeout[bfq_bfqq_sync(bfqq)] *
-+		timeout_coeff));
-+}
-+
-+/*
-+ * Move request from internal lists to the request queue dispatch list.
-+ */
-+static void bfq_dispatch_insert(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	/*
-+	 * For consistency, the next instruction should have been executed
-+	 * after removing the request from the queue and dispatching it.
-+	 * We execute instead this instruction before bfq_remove_request()
-+	 * (and hence introduce a temporary inconsistency), for efficiency.
-+	 * In fact, in a forced_dispatch, this prevents two counters related
-+	 * to bfqq->dispatched to risk to be uselessly decremented if bfqq
-+	 * is not in service, and then to be incremented again after
-+	 * incrementing bfqq->dispatched.
-+	 */
-+	bfqq->dispatched++;
-+	bfq_remove_request(rq);
-+	elv_dispatch_sort(q, rq);
-+
-+	if (bfq_bfqq_sync(bfqq))
-+		bfqd->sync_flight++;
-+}
-+
-+/*
-+ * Return expired entry, or NULL to just start from scratch in rbtree.
-+ */
-+static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
-+{
-+	struct request *rq = NULL;
-+
-+	if (bfq_bfqq_fifo_expire(bfqq))
-+		return NULL;
-+
-+	bfq_mark_bfqq_fifo_expire(bfqq);
-+
-+	if (list_empty(&bfqq->fifo))
-+		return NULL;
-+
-+	rq = rq_entry_fifo(bfqq->fifo.next);
-+
-+	if (time_before(jiffies, rq_fifo_time(rq)))
-+		return NULL;
-+
-+	return rq;
-+}
-+
-+/*
-+ * Must be called with the queue_lock held.
-+ */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
-+static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return;
-+
-+	/*
-+	 * Merge in the direction of the lesser amount of work.
-+	 */
-+	if (new_process_refs >= process_refs) {
-+		bfqq->new_bfqq = new_bfqq;
-+		atomic_add(process_refs, &new_bfqq->ref);
-+	} else {
-+		new_bfqq->new_bfqq = bfqq;
-+		atomic_add(new_process_refs, &bfqq->ref);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+}
-+
-+static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	return entity->budget - entity->service;
-+}
-+
-+static void __bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	__bfq_bfqd_reset_in_service(bfqd);
-+
-+	/*
-+	 * If this bfqq is shared between multiple processes, check
-+	 * to make sure that those processes are still issuing I/Os
-+	 * within the mean seek distance. If not, it may be time to
-+	 * break the queues apart again.
-+	 */
-+	if (bfq_bfqq_coop(bfqq) && BFQQ_SEEKY(bfqq))
-+		bfq_mark_bfqq_split_coop(bfqq);
-+
-+	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		/*
-+		 * Overloading budget_timeout field to store the time
-+		 * at which the queue remains with no backlog; used by
-+		 * the weight-raising mechanism.
-+		 */
-+		bfqq->budget_timeout = jiffies;
-+		bfq_del_bfqq_busy(bfqd, bfqq, 1);
-+	} else {
-+		bfq_activate_bfqq(bfqd, bfqq);
-+		/*
-+		 * Resort priority tree of potential close cooperators.
-+		 */
-+		bfq_rq_pos_tree_add(bfqd, bfqq);
-+	}
-+}
-+
-+/**
-+ * __bfq_bfqq_recalc_budget - try to adapt the budget to the @bfqq behavior.
-+ * @bfqd: device data.
-+ * @bfqq: queue to update.
-+ * @reason: reason for expiration.
-+ *
-+ * Handle the feedback on @bfqq budget.  See the body for detailed
-+ * comments.
-+ */
-+static void __bfq_bfqq_recalc_budget(struct bfq_data *bfqd,
-+				     struct bfq_queue *bfqq,
-+				     enum bfqq_expiration reason)
-+{
-+	struct request *next_rq;
-+	unsigned long budget, min_budget;
-+
-+	budget = bfqq->max_budget;
-+	min_budget = bfq_min_budget(bfqd);
-+
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last budg %lu, budg left %lu",
-+		bfqq->entity.budget, bfq_bfqq_budget_left(bfqq));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last max_budg %lu, min budg %lu",
-+		budget, bfq_min_budget(bfqd));
-+	bfq_log_bfqq(bfqd, bfqq, "recalc_budg: sync %d, seeky %d",
-+		bfq_bfqq_sync(bfqq), BFQQ_SEEKY(bfqd->in_service_queue));
-+
-+	if (bfq_bfqq_sync(bfqq)) {
-+		switch (reason) {
-+		/*
-+		 * Caveat: in all the following cases we trade latency
-+		 * for throughput.
-+		 */
-+		case BFQ_BFQQ_TOO_IDLE:
-+			/*
-+			 * This is the only case where we may reduce
-+			 * the budget: if there is no request of the
-+			 * process still waiting for completion, then
-+			 * we assume (tentatively) that the timer has
-+			 * expired because the batch of requests of
-+			 * the process could have been served with a
-+			 * smaller budget.  Hence, betting that
-+			 * process will behave in the same way when it
-+			 * becomes backlogged again, we reduce its
-+			 * next budget.  As long as we guess right,
-+			 * this budget cut reduces the latency
-+			 * experienced by the process.
-+			 *
-+			 * However, if there are still outstanding
-+			 * requests, then the process may have not yet
-+			 * issued its next request just because it is
-+			 * still waiting for the completion of some of
-+			 * the still outstanding ones.  So in this
-+			 * subcase we do not reduce its budget, on the
-+			 * contrary we increase it to possibly boost
-+			 * the throughput, as discussed in the
-+			 * comments to the BUDGET_TIMEOUT case.
-+			 */
-+			if (bfqq->dispatched > 0) /* still outstanding reqs */
-+				budget = min(budget * 2, bfqd->bfq_max_budget);
-+			else {
-+				if (budget > 5 * min_budget)
-+					budget -= 4 * min_budget;
-+				else
-+					budget = min_budget;
-+			}
-+			break;
-+		case BFQ_BFQQ_BUDGET_TIMEOUT:
-+			/*
-+			 * We double the budget here because: 1) it
-+			 * gives the chance to boost the throughput if
-+			 * this is not a seeky process (which may have
-+			 * bumped into this timeout because of, e.g.,
-+			 * ZBR), 2) together with charge_full_budget
-+			 * it helps give seeky processes higher
-+			 * timestamps, and hence be served less
-+			 * frequently.
-+			 */
-+			budget = min(budget * 2, bfqd->bfq_max_budget);
-+			break;
-+		case BFQ_BFQQ_BUDGET_EXHAUSTED:
-+			/*
-+			 * The process still has backlog, and did not
-+			 * let either the budget timeout or the disk
-+			 * idling timeout expire. Hence it is not
-+			 * seeky, has a short thinktime and may be
-+			 * happy with a higher budget too. So
-+			 * definitely increase the budget of this good
-+			 * candidate to boost the disk throughput.
-+			 */
-+			budget = min(budget * 4, bfqd->bfq_max_budget);
-+			break;
-+		case BFQ_BFQQ_NO_MORE_REQUESTS:
-+		       /*
-+			* Leave the budget unchanged.
-+			*/
-+		default:
-+			return;
-+		}
-+	} else /* async queue */
-+	    /* async queues get always the maximum possible budget
-+	     * (their ability to dispatch is limited by
-+	     * @bfqd->bfq_max_budget_async_rq).
-+	     */
-+		budget = bfqd->bfq_max_budget;
-+
-+	bfqq->max_budget = budget;
-+
-+	if (bfqd->budgets_assigned >= 194 && bfqd->bfq_user_max_budget == 0 &&
-+	    bfqq->max_budget > bfqd->bfq_max_budget)
-+		bfqq->max_budget = bfqd->bfq_max_budget;
-+
-+	/*
-+	 * Make sure that we have enough budget for the next request.
-+	 * Since the finish time of the bfqq must be kept in sync with
-+	 * the budget, be sure to call __bfq_bfqq_expire() after the
-+	 * update.
-+	 */
-+	next_rq = bfqq->next_rq;
-+	if (next_rq != NULL)
-+		bfqq->entity.budget = max_t(unsigned long, bfqq->max_budget,
-+					    bfq_serv_to_charge(next_rq, bfqq));
-+	else
-+		bfqq->entity.budget = bfqq->max_budget;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "head sect: %u, new budget %lu",
-+			next_rq != NULL ? blk_rq_sectors(next_rq) : 0,
-+			bfqq->entity.budget);
-+}
-+
-+static unsigned long bfq_calc_max_budget(u64 peak_rate, u64 timeout)
-+{
-+	unsigned long max_budget;
-+
-+	/*
-+	 * The max_budget calculated when autotuning is equal to the
-+	 * amount of sectors transfered in timeout_sync at the
-+	 * estimated peak rate.
-+	 */
-+	max_budget = (unsigned long)(peak_rate * 1000 *
-+				     timeout >> BFQ_RATE_SHIFT);
-+
-+	return max_budget;
-+}
-+
-+/*
-+ * In addition to updating the peak rate, checks whether the process
-+ * is "slow", and returns 1 if so. This slow flag is used, in addition
-+ * to the budget timeout, to reduce the amount of service provided to
-+ * seeky processes, and hence reduce their chances to lower the
-+ * throughput. See the code for more details.
-+ */
-+static int bfq_update_peak_rate(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int compensate, enum bfqq_expiration reason)
-+{
-+	u64 bw, usecs, expected, timeout;
-+	ktime_t delta;
-+	int update = 0;
-+
-+	if (!bfq_bfqq_sync(bfqq) || bfq_bfqq_budget_new(bfqq))
-+		return 0;
-+
-+	if (compensate)
-+		delta = bfqd->last_idling_start;
-+	else
-+		delta = ktime_get();
-+	delta = ktime_sub(delta, bfqd->last_budget_start);
-+	usecs = ktime_to_us(delta);
-+
-+	/* Don't trust short/unrealistic values. */
-+	if (usecs < 100 || usecs >= LONG_MAX)
-+		return 0;
-+
-+	/*
-+	 * Calculate the bandwidth for the last slice.  We use a 64 bit
-+	 * value to store the peak rate, in sectors per usec in fixed
-+	 * point math.  We do so to have enough precision in the estimate
-+	 * and to avoid overflows.
-+	 */
-+	bw = (u64)bfqq->entity.service << BFQ_RATE_SHIFT;
-+	do_div(bw, (unsigned long)usecs);
-+
-+	timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
-+
-+	/*
-+	 * Use only long (> 20ms) intervals to filter out spikes for
-+	 * the peak rate estimation.
-+	 */
-+	if (usecs > 20000) {
-+		if (bw > bfqd->peak_rate ||
-+		   (!BFQQ_SEEKY(bfqq) &&
-+		    reason == BFQ_BFQQ_BUDGET_TIMEOUT)) {
-+			bfq_log(bfqd, "measured bw =%llu", bw);
-+			/*
-+			 * To smooth oscillations use a low-pass filter with
-+			 * alpha=7/8, i.e.,
-+			 * new_rate = (7/8) * old_rate + (1/8) * bw
-+			 */
-+			do_div(bw, 8);
-+			if (bw == 0)
-+				return 0;
-+			bfqd->peak_rate *= 7;
-+			do_div(bfqd->peak_rate, 8);
-+			bfqd->peak_rate += bw;
-+			update = 1;
-+			bfq_log(bfqd, "new peak_rate=%llu", bfqd->peak_rate);
-+		}
-+
-+		update |= bfqd->peak_rate_samples == BFQ_PEAK_RATE_SAMPLES - 1;
-+
-+		if (bfqd->peak_rate_samples < BFQ_PEAK_RATE_SAMPLES)
-+			bfqd->peak_rate_samples++;
-+
-+		if (bfqd->peak_rate_samples == BFQ_PEAK_RATE_SAMPLES &&
-+		    update) {
-+			int dev_type = blk_queue_nonrot(bfqd->queue);
-+			if (bfqd->bfq_user_max_budget == 0) {
-+				bfqd->bfq_max_budget =
-+					bfq_calc_max_budget(bfqd->peak_rate,
-+							    timeout);
-+				bfq_log(bfqd, "new max_budget=%lu",
-+					bfqd->bfq_max_budget);
-+			}
-+			if (bfqd->device_speed == BFQ_BFQD_FAST &&
-+			    bfqd->peak_rate < device_speed_thresh[dev_type]) {
-+				bfqd->device_speed = BFQ_BFQD_SLOW;
-+				bfqd->RT_prod = R_slow[dev_type] *
-+						T_slow[dev_type];
-+			} else if (bfqd->device_speed == BFQ_BFQD_SLOW &&
-+			    bfqd->peak_rate > device_speed_thresh[dev_type]) {
-+				bfqd->device_speed = BFQ_BFQD_FAST;
-+				bfqd->RT_prod = R_fast[dev_type] *
-+						T_fast[dev_type];
-+			}
-+		}
-+	}
-+
-+	/*
-+	 * If the process has been served for a too short time
-+	 * interval to let its possible sequential accesses prevail on
-+	 * the initial seek time needed to move the disk head on the
-+	 * first sector it requested, then give the process a chance
-+	 * and for the moment return false.
-+	 */
-+	if (bfqq->entity.budget <= bfq_max_budget(bfqd) / 8)
-+		return 0;
-+
-+	/*
-+	 * A process is considered ``slow'' (i.e., seeky, so that we
-+	 * cannot treat it fairly in the service domain, as it would
-+	 * slow down too much the other processes) if, when a slice
-+	 * ends for whatever reason, it has received service at a
-+	 * rate that would not be high enough to complete the budget
-+	 * before the budget timeout expiration.
-+	 */
-+	expected = bw * 1000 * timeout >> BFQ_RATE_SHIFT;
-+
-+	/*
-+	 * Caveat: processes doing IO in the slower disk zones will
-+	 * tend to be slow(er) even if not seeky. And the estimated
-+	 * peak rate will actually be an average over the disk
-+	 * surface. Hence, to not be too harsh with unlucky processes,
-+	 * we keep a budget/3 margin of safety before declaring a
-+	 * process slow.
-+	 */
-+	return expected > (4 * bfqq->entity.budget) / 3;
-+}
-+
-+/*
-+ * To be deemed as soft real-time, an application must meet two
-+ * requirements. First, the application must not require an average
-+ * bandwidth higher than the approximate bandwidth required to playback or
-+ * record a compressed high-definition video.
-+ * The next function is invoked on the completion of the last request of a
-+ * batch, to compute the next-start time instant, soft_rt_next_start, such
-+ * that, if the next request of the application does not arrive before
-+ * soft_rt_next_start, then the above requirement on the bandwidth is met.
-+ *
-+ * The second requirement is that the request pattern of the application is
-+ * isochronous, i.e., that, after issuing a request or a batch of requests,
-+ * the application stops issuing new requests until all its pending requests
-+ * have been completed. After that, the application may issue a new batch,
-+ * and so on.
-+ * For this reason the next function is invoked to compute
-+ * soft_rt_next_start only for applications that meet this requirement,
-+ * whereas soft_rt_next_start is set to infinity for applications that do
-+ * not.
-+ *
-+ * Unfortunately, even a greedy application may happen to behave in an
-+ * isochronous way if the CPU load is high. In fact, the application may
-+ * stop issuing requests while the CPUs are busy serving other processes,
-+ * then restart, then stop again for a while, and so on. In addition, if
-+ * the disk achieves a low enough throughput with the request pattern
-+ * issued by the application (e.g., because the request pattern is random
-+ * and/or the device is slow), then the application may meet the above
-+ * bandwidth requirement too. To prevent such a greedy application to be
-+ * deemed as soft real-time, a further rule is used in the computation of
-+ * soft_rt_next_start: soft_rt_next_start must be higher than the current
-+ * time plus the maximum time for which the arrival of a request is waited
-+ * for when a sync queue becomes idle, namely bfqd->bfq_slice_idle.
-+ * This filters out greedy applications, as the latter issue instead their
-+ * next request as soon as possible after the last one has been completed
-+ * (in contrast, when a batch of requests is completed, a soft real-time
-+ * application spends some time processing data).
-+ *
-+ * Unfortunately, the last filter may easily generate false positives if
-+ * only bfqd->bfq_slice_idle is used as a reference time interval and one
-+ * or both the following cases occur:
-+ * 1) HZ is so low that the duration of a jiffy is comparable to or higher
-+ *    than bfqd->bfq_slice_idle. This happens, e.g., on slow devices with
-+ *    HZ=100.
-+ * 2) jiffies, instead of increasing at a constant rate, may stop increasing
-+ *    for a while, then suddenly 'jump' by several units to recover the lost
-+ *    increments. This seems to happen, e.g., inside virtual machines.
-+ * To address this issue, we do not use as a reference time interval just
-+ * bfqd->bfq_slice_idle, but bfqd->bfq_slice_idle plus a few jiffies. In
-+ * particular we add the minimum number of jiffies for which the filter
-+ * seems to be quite precise also in embedded systems and KVM/QEMU virtual
-+ * machines.
-+ */
-+static inline unsigned long bfq_bfqq_softrt_next_start(struct bfq_data *bfqd,
-+						       struct bfq_queue *bfqq)
-+{
-+	return max(bfqq->last_idle_bklogged +
-+		   HZ * bfqq->service_from_backlogged /
-+		   bfqd->bfq_wr_max_softrt_rate,
-+		   jiffies + bfqq->bfqd->bfq_slice_idle + 4);
-+}
-+
-+/*
-+ * Return the largest-possible time instant such that, for as long as possible,
-+ * the current time will be lower than this time instant according to the macro
-+ * time_is_before_jiffies().
-+ */
-+static inline unsigned long bfq_infinity_from_now(unsigned long now)
-+{
-+	return now + ULONG_MAX / 2;
-+}
-+
-+/**
-+ * bfq_bfqq_expire - expire a queue.
-+ * @bfqd: device owning the queue.
-+ * @bfqq: the queue to expire.
-+ * @compensate: if true, compensate for the time spent idling.
-+ * @reason: the reason causing the expiration.
-+ *
-+ *
-+ * If the process associated to the queue is slow (i.e., seeky), or in
-+ * case of budget timeout, or, finally, if it is async, we
-+ * artificially charge it an entire budget (independently of the
-+ * actual service it received). As a consequence, the queue will get
-+ * higher timestamps than the correct ones upon reactivation, and
-+ * hence it will be rescheduled as if it had received more service
-+ * than what it actually received. In the end, this class of processes
-+ * will receive less service in proportion to how slowly they consume
-+ * their budgets (and hence how seriously they tend to lower the
-+ * throughput).
-+ *
-+ * In contrast, when a queue expires because it has been idling for
-+ * too much or because it exhausted its budget, we do not touch the
-+ * amount of service it has received. Hence when the queue will be
-+ * reactivated and its timestamps updated, the latter will be in sync
-+ * with the actual service received by the queue until expiration.
-+ *
-+ * Charging a full budget to the first type of queues and the exact
-+ * service to the others has the effect of using the WF2Q+ policy to
-+ * schedule the former on a timeslice basis, without violating the
-+ * service domain guarantees of the latter.
-+ */
-+static void bfq_bfqq_expire(struct bfq_data *bfqd,
-+			    struct bfq_queue *bfqq,
-+			    int compensate,
-+			    enum bfqq_expiration reason)
-+{
-+	int slow;
-+	BUG_ON(bfqq != bfqd->in_service_queue);
-+
-+	/* Update disk peak rate for autotuning and check whether the
-+	 * process is slow (see bfq_update_peak_rate).
-+	 */
-+	slow = bfq_update_peak_rate(bfqd, bfqq, compensate, reason);
-+
-+	/*
-+	 * As above explained, 'punish' slow (i.e., seeky), timed-out
-+	 * and async queues, to favor sequential sync workloads.
-+	 *
-+	 * Processes doing I/O in the slower disk zones will tend to be
-+	 * slow(er) even if not seeky. Hence, since the estimated peak
-+	 * rate is actually an average over the disk surface, these
-+	 * processes may timeout just for bad luck. To avoid punishing
-+	 * them we do not charge a full budget to a process that
-+	 * succeeded in consuming at least 2/3 of its budget.
-+	 */
-+	if (slow || (reason == BFQ_BFQQ_BUDGET_TIMEOUT &&
-+		     bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3))
-+		bfq_bfqq_charge_full_budget(bfqq);
-+
-+	bfqq->service_from_backlogged += bfqq->entity.service;
-+
-+	if (BFQQ_SEEKY(bfqq) && reason == BFQ_BFQQ_BUDGET_TIMEOUT &&
-+	    !bfq_bfqq_constantly_seeky(bfqq)) {
-+		bfq_mark_bfqq_constantly_seeky(bfqq);
-+		if (!blk_queue_nonrot(bfqd->queue))
-+			bfqd->const_seeky_busy_in_flight_queues++;
-+	}
-+
-+	if (reason == BFQ_BFQQ_TOO_IDLE &&
-+	    bfqq->entity.service <= 2 * bfqq->entity.budget / 10 )
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+
-+	if (bfqd->low_latency && bfqq->wr_coeff == 1)
-+		bfqq->last_wr_start_finish = jiffies;
-+
-+	if (bfqd->low_latency && bfqd->bfq_wr_max_softrt_rate > 0 &&
-+	    RB_EMPTY_ROOT(&bfqq->sort_list)) {
-+		/*
-+		 * If we get here, and there are no outstanding requests,
-+		 * then the request pattern is isochronous (see the comments
-+		 * to the function bfq_bfqq_softrt_next_start()). Hence we
-+		 * can compute soft_rt_next_start. If, instead, the queue
-+		 * still has outstanding requests, then we have to wait
-+		 * for the completion of all the outstanding requests to
-+		 * discover whether the request pattern is actually
-+		 * isochronous.
-+		 */
-+		if (bfqq->dispatched == 0)
-+			bfqq->soft_rt_next_start =
-+				bfq_bfqq_softrt_next_start(bfqd, bfqq);
-+		else {
-+			/*
-+			 * The application is still waiting for the
-+			 * completion of one or more requests:
-+			 * prevent it from possibly being incorrectly
-+			 * deemed as soft real-time by setting its
-+			 * soft_rt_next_start to infinity. In fact,
-+			 * without this assignment, the application
-+			 * would be incorrectly deemed as soft
-+			 * real-time if:
-+			 * 1) it issued a new request before the
-+			 *    completion of all its in-flight
-+			 *    requests, and
-+			 * 2) at that time, its soft_rt_next_start
-+			 *    happened to be in the past.
-+			 */
-+			bfqq->soft_rt_next_start =
-+				bfq_infinity_from_now(jiffies);
-+			/*
-+			 * Schedule an update of soft_rt_next_start to when
-+			 * the task may be discovered to be isochronous.
-+			 */
-+			bfq_mark_bfqq_softrt_update(bfqq);
-+		}
-+	}
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+		"expire (%d, slow %d, num_disp %d, idle_win %d)", reason,
-+		slow, bfqq->dispatched, bfq_bfqq_idle_window(bfqq));
-+
-+	/*
-+	 * Increase, decrease or leave budget unchanged according to
-+	 * reason.
-+	 */
-+	__bfq_bfqq_recalc_budget(bfqd, bfqq, reason);
-+	__bfq_bfqq_expire(bfqd, bfqq);
-+}
-+
-+/*
-+ * Budget timeout is not implemented through a dedicated timer, but
-+ * just checked on request arrivals and completions, as well as on
-+ * idle timer expirations.
-+ */
-+static int bfq_bfqq_budget_timeout(struct bfq_queue *bfqq)
-+{
-+	if (bfq_bfqq_budget_new(bfqq) ||
-+	    time_before(jiffies, bfqq->budget_timeout))
-+		return 0;
-+	return 1;
-+}
-+
-+/*
-+ * If we expire a queue that is waiting for the arrival of a new
-+ * request, we may prevent the fictitious timestamp back-shifting that
-+ * allows the guarantees of the queue to be preserved (see [1] for
-+ * this tricky aspect). Hence we return true only if this condition
-+ * does not hold, or if the queue is slow enough to deserve only to be
-+ * kicked off for preserving a high throughput.
-+*/
-+static inline int bfq_may_expire_for_budg_timeout(struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq,
-+		"may_budget_timeout: wait_request %d left %d timeout %d",
-+		bfq_bfqq_wait_request(bfqq),
-+			bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3,
-+		bfq_bfqq_budget_timeout(bfqq));
-+
-+	return (!bfq_bfqq_wait_request(bfqq) ||
-+		bfq_bfqq_budget_left(bfqq) >=  bfqq->entity.budget / 3)
-+		&&
-+		bfq_bfqq_budget_timeout(bfqq);
-+}
-+
-+/*
-+ * Device idling is allowed only for the queues for which this function
-+ * returns true. For this reason, the return value of this function plays a
-+ * critical role for both throughput boosting and service guarantees. The
-+ * return value is computed through a logical expression. In this rather
-+ * long comment, we try to briefly describe all the details and motivations
-+ * behind the components of this logical expression.
-+ *
-+ * First, the expression may be true only for sync queues. Besides, if
-+ * bfqq is also being weight-raised, then the expression always evaluates
-+ * to true, as device idling is instrumental for preserving low-latency
-+ * guarantees (see [1]). Otherwise, the expression evaluates to true only
-+ * if bfqq has a non-null idle window and at least one of the following
-+ * two conditions holds. The first condition is that the device is not
-+ * performing NCQ, because idling the device most certainly boosts the
-+ * throughput if this condition holds and bfqq has been granted a non-null
-+ * idle window. The second compound condition is made of the logical AND of
-+ * two components.
-+ *
-+ * The first component is true only if there is no weight-raised busy
-+ * queue. This guarantees that the device is not idled for a sync non-
-+ * weight-raised queue when there are busy weight-raised queues. The former
-+ * is then expired immediately if empty. Combined with the timestamping
-+ * rules of BFQ (see [1] for details), this causes sync non-weight-raised
-+ * queues to get a lower number of requests served, and hence to ask for a
-+ * lower number of requests from the request pool, before the busy weight-
-+ * raised queues get served again.
-+ *
-+ * This is beneficial for the processes associated with weight-raised
-+ * queues, when the request pool is saturated (e.g., in the presence of
-+ * write hogs). In fact, if the processes associated with the other queues
-+ * ask for requests at a lower rate, then weight-raised processes have a
-+ * higher probability to get a request from the pool immediately (or at
-+ * least soon) when they need one. Hence they have a higher probability to
-+ * actually get a fraction of the disk throughput proportional to their
-+ * high weight. This is especially true with NCQ-capable drives, which
-+ * enqueue several requests in advance and further reorder internally-
-+ * queued requests.
-+ *
-+ * In the end, mistreating non-weight-raised queues when there are busy
-+ * weight-raised queues seems to mitigate starvation problems in the
-+ * presence of heavy write workloads and NCQ, and hence to guarantee a
-+ * higher application and system responsiveness in these hostile scenarios.
-+ *
-+ * If the first component of the compound condition is instead true, i.e.,
-+ * there is no weight-raised busy queue, then the second component of the
-+ * compound condition takes into account service-guarantee and throughput
-+ * issues related to NCQ (recall that the compound condition is evaluated
-+ * only if the device is detected as supporting NCQ).
-+ *
-+ * As for service guarantees, allowing the drive to enqueue more than one
-+ * request at a time, and hence delegating de facto final scheduling
-+ * decisions to the drive's internal scheduler, causes loss of control on
-+ * the actual request service order. In this respect, when the drive is
-+ * allowed to enqueue more than one request at a time, the service
-+ * distribution enforced by the drive's internal scheduler is likely to
-+ * coincide with the desired device-throughput distribution only in the
-+ * following, perfectly symmetric, scenario:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups at the same level in the groups tree have the same
-+ *    weight,
-+ * 3) all active groups at the same level in the groups tree have the same
-+ *    number of children.
-+ *
-+ * Even in such a scenario, sequential I/O may still receive a preferential
-+ * treatment, but this is not likely to be a big issue with flash-based
-+ * devices, because of their non-dramatic loss of throughput with random
-+ * I/O. Things do differ with HDDs, for which additional care is taken, as
-+ * explained after completing the discussion for flash-based devices.
-+ *
-+ * Unfortunately, keeping the necessary state for evaluating exactly the
-+ * above symmetry conditions would be quite complex and time-consuming.
-+ * Therefore BFQ evaluates instead the following stronger sub-conditions,
-+ * for which it is much easier to maintain the needed state:
-+ * 1) all active queues have the same weight,
-+ * 2) all active groups have the same weight,
-+ * 3) all active groups have at most one active child each.
-+ * In particular, the last two conditions are always true if hierarchical
-+ * support and the cgroups interface are not enabled, hence no state needs
-+ * to be maintained in this case.
-+ *
-+ * According to the above considerations, the second component of the
-+ * compound condition evaluates to true if any of the above symmetry
-+ * sub-condition does not hold, or the device is not flash-based. Therefore,
-+ * if also the first component is true, then idling is allowed for a sync
-+ * queue. These are the only sub-conditions considered if the device is
-+ * flash-based, as, for such a device, it is sensible to force idling only
-+ * for service-guarantee issues. In fact, as for throughput, idling
-+ * NCQ-capable flash-based devices would not boost the throughput even
-+ * with sequential I/O; rather it would lower the throughput in proportion
-+ * to how fast the device is. In the end, (only) if all the three
-+ * sub-conditions hold and the device is flash-based, the compound
-+ * condition evaluates to false and therefore no idling is performed.
-+ *
-+ * As already said, things change with a rotational device, where idling
-+ * boosts the throughput with sequential I/O (even with NCQ). Hence, for
-+ * such a device the second component of the compound condition evaluates
-+ * to true also if the following additional sub-condition does not hold:
-+ * the queue is constantly seeky. Unfortunately, this different behavior
-+ * with respect to flash-based devices causes an additional asymmetry: if
-+ * some sync queues enjoy idling and some other sync queues do not, then
-+ * the latter get a low share of the device throughput, simply because the
-+ * former get many requests served after being set as in service, whereas
-+ * the latter do not. As a consequence, to guarantee the desired throughput
-+ * distribution, on HDDs the compound expression evaluates to true (and
-+ * hence device idling is performed) also if the following last symmetry
-+ * condition does not hold: no other queue is benefiting from idling. Also
-+ * this last condition is actually replaced with a simpler-to-maintain and
-+ * stronger condition: there is no busy queue which is not constantly seeky
-+ * (and hence may also benefit from idling).
-+ *
-+ * To sum up, when all the required symmetry and throughput-boosting
-+ * sub-conditions hold, the second component of the compound condition
-+ * evaluates to false, and hence no idling is performed. This helps to
-+ * keep the drives' internal queues full on NCQ-capable devices, and hence
-+ * to boost the throughput, without causing 'almost' any loss of service
-+ * guarantees. The 'almost' follows from the fact that, if the internal
-+ * queue of one such device is filled while all the sub-conditions hold,
-+ * but at some point in time some sub-condition stops to hold, then it may
-+ * become impossible to let requests be served in the new desired order
-+ * until all the requests already queued in the device have been served.
-+ */
-+static inline bool bfq_bfqq_must_not_expire(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define symmetric_scenario	  (!bfqd->active_numerous_groups && \
-+				   !bfq_differentiated_weights(bfqd))
-+#else
-+#define symmetric_scenario	  (!bfq_differentiated_weights(bfqd))
-+#endif
-+#define cond_for_seeky_on_ncq_hdd (bfq_bfqq_constantly_seeky(bfqq) && \
-+				   bfqd->busy_in_flight_queues == \
-+				   bfqd->const_seeky_busy_in_flight_queues)
-+/*
-+ * Condition for expiring a non-weight-raised queue (and hence not idling
-+ * the device).
-+ */
-+#define cond_for_expiring_non_wr  (bfqd->hw_tag && \
-+				   (bfqd->wr_busy_queues > 0 || \
-+				    (symmetric_scenario && \
-+				     (blk_queue_nonrot(bfqd->queue) || \
-+				      cond_for_seeky_on_ncq_hdd))))
-+
-+	return bfq_bfqq_sync(bfqq) &&
-+		(bfq_bfqq_IO_bound(bfqq) || bfqq->wr_coeff > 1) &&
-+		(bfqq->wr_coeff > 1 ||
-+		 (bfq_bfqq_idle_window(bfqq) &&
-+		  !cond_for_expiring_non_wr)
-+	);
-+}
-+
-+/*
-+ * If the in-service queue is empty but sync, and the function
-+ * bfq_bfqq_must_not_expire returns true, then:
-+ * 1) the queue must remain in service and cannot be expired, and
-+ * 2) the disk must be idled to wait for the possible arrival of a new
-+ *    request for the queue.
-+ * See the comments to the function bfq_bfqq_must_not_expire for the reasons
-+ * why performing device idling is the best choice to boost the throughput
-+ * and preserve service guarantees when bfq_bfqq_must_not_expire itself
-+ * returns true.
-+ */
-+static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	return RB_EMPTY_ROOT(&bfqq->sort_list) && bfqd->bfq_slice_idle != 0 &&
-+	       bfq_bfqq_must_not_expire(bfqq);
-+}
-+
-+/*
-+ * Select a queue for service.  If we have a current queue in service,
-+ * check whether to continue servicing it, or retrieve and set a new one.
-+ */
-+static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct request *next_rq;
-+	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
-+
-+	bfqq = bfqd->in_service_queue;
-+	if (bfqq == NULL)
-+		goto new_queue;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
-+
-+	/*
-+         * If another queue has a request waiting within our mean seek
-+         * distance, let it run. The expire code will check for close
-+         * cooperators and put the close queue at the front of the
-+         * service tree. If possible, merge the expiring queue with the
-+         * new bfqq.
-+         */
-+        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
-+        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
-+                bfq_setup_merge(bfqq, new_bfqq);
-+
-+	if (bfq_may_expire_for_budg_timeout(bfqq) &&
-+	    !timer_pending(&bfqd->idle_slice_timer) &&
-+	    !bfq_bfqq_must_idle(bfqq))
-+		goto expire;
-+
-+	next_rq = bfqq->next_rq;
-+	/*
-+	 * If bfqq has requests queued and it has enough budget left to
-+	 * serve them, keep the queue, otherwise expire it.
-+	 */
-+	if (next_rq != NULL) {
-+		if (bfq_serv_to_charge(next_rq, bfqq) >
-+			bfq_bfqq_budget_left(bfqq)) {
-+			reason = BFQ_BFQQ_BUDGET_EXHAUSTED;
-+			goto expire;
-+		} else {
-+			/*
-+			 * The idle timer may be pending because we may
-+			 * not disable disk idling even when a new request
-+			 * arrives.
-+			 */
-+			if (timer_pending(&bfqd->idle_slice_timer)) {
-+				/*
-+				 * If we get here: 1) at least a new request
-+				 * has arrived but we have not disabled the
-+				 * timer because the request was too small,
-+				 * 2) then the block layer has unplugged
-+				 * the device, causing the dispatch to be
-+				 * invoked.
-+				 *
-+				 * Since the device is unplugged, now the
-+				 * requests are probably large enough to
-+				 * provide a reasonable throughput.
-+				 * So we disable idling.
-+				 */
-+				bfq_clear_bfqq_wait_request(bfqq);
-+				del_timer(&bfqd->idle_slice_timer);
-+			}
-+			if (new_bfqq == NULL)
-+				goto keep_queue;
-+			else
-+				goto expire;
-+		}
-+	}
-+
-+	/*
-+	 * No requests pending.  If the in-service queue still has requests
-+	 * in flight (possibly waiting for a completion) or is idling for a
-+	 * new request, then keep it.
-+	 */
-+	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+		bfqq = NULL;
-+		goto keep_queue;
-+	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
-+		/*
-+		 * Expiring the queue because there is a close cooperator,
-+		 * cancel timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
-+	}
-+
-+	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
-+expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
-+new_queue:
-+	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfq_log(bfqd, "select_queue: new queue %d returned",
-+		bfqq != NULL ? bfqq->pid : 0);
-+keep_queue:
-+	return bfqq;
-+}
-+
-+static void bfq_update_wr_data(struct bfq_data *bfqd,
-+			       struct bfq_queue *bfqq)
-+{
-+	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
-+		struct bfq_entity *entity = &bfqq->entity;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
-+			jiffies_to_msecs(jiffies -
-+				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(bfqq->wr_cur_max_time),
-+			bfqq->wr_coeff,
-+			bfqq->entity.weight, bfqq->entity.orig_weight);
-+
-+		BUG_ON(bfqq != bfqd->in_service_queue && entity->weight !=
-+		       entity->orig_weight * bfqq->wr_coeff);
-+		if (entity->ioprio_changed)
-+			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+		/*
-+		 * If too much time has elapsed from the beginning
-+		 * of this weight-raising, stop it.
-+		 */
-+		if (time_is_before_jiffies(bfqq->last_wr_start_finish +
-+					   bfqq->wr_cur_max_time)) {
-+			bfqq->last_wr_start_finish = jiffies;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "wrais ending at %lu, rais_max_time %u",
-+				     bfqq->last_wr_start_finish,
-+				     jiffies_to_msecs(bfqq->wr_cur_max_time));
-+			bfq_bfqq_end_wr(bfqq);
-+			__bfq_entity_update_weight_prio(
-+				bfq_entity_service_tree(entity),
-+				entity);
-+		}
-+	}
-+}
-+
-+/*
-+ * Dispatch one request from bfqq, moving it to the request queue
-+ * dispatch list.
-+ */
-+static int bfq_dispatch_request(struct bfq_data *bfqd,
-+				struct bfq_queue *bfqq)
-+{
-+	int dispatched = 0;
-+	struct request *rq;
-+	unsigned long service_to_charge;
-+
-+	BUG_ON(RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	/* Follow expired path, else get first next available. */
-+	rq = bfq_check_fifo(bfqq);
-+	if (rq == NULL)
-+		rq = bfqq->next_rq;
-+	service_to_charge = bfq_serv_to_charge(rq, bfqq);
-+
-+	if (service_to_charge > bfq_bfqq_budget_left(bfqq)) {
-+		/*
-+		 * This may happen if the next rq is chosen in fifo order
-+		 * instead of sector order. The budget is properly
-+		 * dimensioned to be always sufficient to serve the next
-+		 * request only if it is chosen in sector order. The reason
-+		 * is that it would be quite inefficient and little useful
-+		 * to always make sure that the budget is large enough to
-+		 * serve even the possible next rq in fifo order.
-+		 * In fact, requests are seldom served in fifo order.
-+		 *
-+		 * Expire the queue for budget exhaustion, and make sure
-+		 * that the next act_budget is enough to serve the next
-+		 * request, even if it comes from the fifo expired path.
-+		 */
-+		bfqq->next_rq = rq;
-+		/*
-+		 * Since this dispatch is failed, make sure that
-+		 * a new one will be performed
-+		 */
-+		if (!bfqd->rq_in_driver)
-+			bfq_schedule_dispatch(bfqd);
-+		goto expire;
-+	}
-+
-+	/* Finally, insert request into driver dispatch list. */
-+	bfq_bfqq_served(bfqq, service_to_charge);
-+	bfq_dispatch_insert(bfqd->queue, rq);
-+
-+	bfq_update_wr_data(bfqd, bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+			"dispatched %u sec req (%llu), budg left %lu",
-+			blk_rq_sectors(rq),
-+			(long long unsigned)blk_rq_pos(rq),
-+			bfq_bfqq_budget_left(bfqq));
-+
-+	dispatched++;
-+
-+	if (bfqd->in_service_bic == NULL) {
-+		atomic_long_inc(&RQ_BIC(rq)->icq.ioc->refcount);
-+		bfqd->in_service_bic = RQ_BIC(rq);
-+	}
-+
-+	if (bfqd->busy_queues > 1 && ((!bfq_bfqq_sync(bfqq) &&
-+	    dispatched >= bfqd->bfq_max_budget_async_rq) ||
-+	    bfq_class_idle(bfqq)))
-+		goto expire;
-+
-+	return dispatched;
-+
-+expire:
-+	bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_EXHAUSTED);
-+	return dispatched;
-+}
-+
-+static int __bfq_forced_dispatch_bfqq(struct bfq_queue *bfqq)
-+{
-+	int dispatched = 0;
-+
-+	while (bfqq->next_rq != NULL) {
-+		bfq_dispatch_insert(bfqq->bfqd->queue, bfqq->next_rq);
-+		dispatched++;
-+	}
-+
-+	BUG_ON(!list_empty(&bfqq->fifo));
-+	return dispatched;
-+}
-+
-+/*
-+ * Drain our current requests.
-+ * Used for barriers and when switching io schedulers on-the-fly.
-+ */
-+static int bfq_forced_dispatch(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq, *n;
-+	struct bfq_service_tree *st;
-+	int dispatched = 0;
-+
-+	bfqq = bfqd->in_service_queue;
-+	if (bfqq != NULL)
-+		__bfq_bfqq_expire(bfqd, bfqq);
-+
-+	/*
-+	 * Loop through classes, and be careful to leave the scheduler
-+	 * in a consistent state, as feedback mechanisms and vtime
-+	 * updates cannot be disabled during the process.
-+	 */
-+	list_for_each_entry_safe(bfqq, n, &bfqd->active_list, bfqq_list) {
-+		st = bfq_entity_service_tree(&bfqq->entity);
-+
-+		dispatched += __bfq_forced_dispatch_bfqq(bfqq);
-+		bfqq->max_budget = bfq_max_budget(bfqd);
-+
-+		bfq_forget_idle(st);
-+	}
-+
-+	BUG_ON(bfqd->busy_queues != 0);
-+
-+	return dispatched;
-+}
-+
-+static int bfq_dispatch_requests(struct request_queue *q, int force)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq;
-+	int max_dispatch;
-+
-+	bfq_log(bfqd, "dispatch requests: %d busy queues", bfqd->busy_queues);
-+	if (bfqd->busy_queues == 0)
-+		return 0;
-+
-+	if (unlikely(force))
-+		return bfq_forced_dispatch(bfqd);
-+
-+	bfqq = bfq_select_queue(bfqd);
-+	if (bfqq == NULL)
-+		return 0;
-+
-+	max_dispatch = bfqd->bfq_quantum;
-+	if (bfq_class_idle(bfqq))
-+		max_dispatch = 1;
-+
-+	if (!bfq_bfqq_sync(bfqq))
-+		max_dispatch = bfqd->bfq_max_budget_async_rq;
-+
-+	if (bfqq->dispatched >= max_dispatch) {
-+		if (bfqd->busy_queues > 1)
-+			return 0;
-+		if (bfqq->dispatched >= 4 * max_dispatch)
-+			return 0;
-+	}
-+
-+	if (bfqd->sync_flight != 0 && !bfq_bfqq_sync(bfqq))
-+		return 0;
-+
-+	bfq_clear_bfqq_wait_request(bfqq);
-+	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
-+
-+	if (!bfq_dispatch_request(bfqd, bfqq))
-+		return 0;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "dispatched one request of %d (max_disp %d)",
-+			bfqq->pid, max_dispatch);
-+
-+	return 1;
-+}
-+
-+/*
-+ * Task holds one reference to the queue, dropped when task exits.  Each rq
-+ * in-flight on this queue also holds a reference, dropped when rq is freed.
-+ *
-+ * Queue lock must be held here.
-+ */
-+static void bfq_put_queue(struct bfq_queue *bfqq)
-+{
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	BUG_ON(atomic_read(&bfqq->ref) <= 0);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+	if (!atomic_dec_and_test(&bfqq->ref))
-+		return;
-+
-+	BUG_ON(rb_first(&bfqq->sort_list) != NULL);
-+	BUG_ON(bfqq->allocated[READ] + bfqq->allocated[WRITE] != 0);
-+	BUG_ON(bfqq->entity.tree != NULL);
-+	BUG_ON(bfq_bfqq_busy(bfqq));
-+	BUG_ON(bfqd->in_service_queue == bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "put_queue: %p freed", bfqq);
-+
-+	kmem_cache_free(bfq_pool, bfqq);
-+}
-+
-+static void bfq_put_cooperator(struct bfq_queue *bfqq)
-+{
-+	struct bfq_queue *__bfqq, *next;
-+
-+	/*
-+	 * If this queue was scheduled to merge with another queue, be
-+	 * sure to drop the reference taken on that queue (and others in
-+	 * the merge chain). See bfq_setup_merge and bfq_merge_bfqqs.
-+	 */
-+	__bfqq = bfqq->new_bfqq;
-+	while (__bfqq) {
-+		if (__bfqq == bfqq)
-+			break;
-+		next = __bfqq->new_bfqq;
-+		bfq_put_queue(__bfqq);
-+		__bfqq = next;
-+	}
-+}
-+
-+static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	if (bfqq == bfqd->in_service_queue) {
-+		__bfq_bfqq_expire(bfqd, bfqq);
-+		bfq_schedule_dispatch(bfqd);
-+	}
-+
-+	bfq_log_bfqq(bfqd, bfqq, "exit_bfqq: %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_init_icq(struct io_cq *icq)
-+{
-+	struct bfq_io_cq *bic = icq_to_bic(icq);
-+
-+	bic->ttime.last_end_request = jiffies;
-+}
-+
-+static void bfq_exit_icq(struct io_cq *icq)
-+{
-+	struct bfq_io_cq *bic = icq_to_bic(icq);
-+	struct bfq_data *bfqd = bic_to_bfqd(bic);
-+
-+	if (bic->bfqq[BLK_RW_ASYNC]) {
-+		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_ASYNC]);
-+		bic->bfqq[BLK_RW_ASYNC] = NULL;
-+	}
-+
-+	if (bic->bfqq[BLK_RW_SYNC]) {
-+		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
-+		bic->bfqq[BLK_RW_SYNC] = NULL;
-+	}
-+}
-+
-+/*
-+ * Update the entity prio values; note that the new values will not
-+ * be used until the next (re)activation.
-+ */
-+static void bfq_init_prio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	struct task_struct *tsk = current;
-+	int ioprio_class;
-+
-+	if (!bfq_bfqq_prio_changed(bfqq))
-+		return;
-+
-+	ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio);
-+	switch (ioprio_class) {
-+	default:
-+		dev_err(bfqq->bfqd->queue->backing_dev_info.dev,
-+			"bfq: bad prio %x\n", ioprio_class);
-+	case IOPRIO_CLASS_NONE:
-+		/*
-+		 * No prio set, inherit CPU scheduling settings.
-+		 */
-+		bfqq->entity.new_ioprio = task_nice_ioprio(tsk);
-+		bfqq->entity.new_ioprio_class = task_nice_ioclass(tsk);
-+		break;
-+	case IOPRIO_CLASS_RT:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_RT;
-+		break;
-+	case IOPRIO_CLASS_BE:
-+		bfqq->entity.new_ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_BE;
-+		break;
-+	case IOPRIO_CLASS_IDLE:
-+		bfqq->entity.new_ioprio_class = IOPRIO_CLASS_IDLE;
-+		bfqq->entity.new_ioprio = 7;
-+		bfq_clear_bfqq_idle_window(bfqq);
-+		break;
-+	}
-+
-+	bfqq->entity.ioprio_changed = 1;
-+
-+	bfq_clear_bfqq_prio_changed(bfqq);
-+}
-+
-+static void bfq_changed_ioprio(struct bfq_io_cq *bic)
-+{
-+	struct bfq_data *bfqd;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+	struct bfq_group *bfqg;
-+	unsigned long uninitialized_var(flags);
-+	int ioprio = bic->icq.ioc->ioprio;
-+
-+	bfqd = bfq_get_bfqd_locked(&(bic->icq.q->elevator->elevator_data),
-+				   &flags);
-+	/*
-+	 * This condition may trigger on a newly created bic, be sure to
-+	 * drop the lock before returning.
-+	 */
-+	if (unlikely(bfqd == NULL) || likely(bic->ioprio == ioprio))
-+		goto out;
-+
-+	bfqq = bic->bfqq[BLK_RW_ASYNC];
-+	if (bfqq != NULL) {
-+		bfqg = container_of(bfqq->entity.sched_data, struct bfq_group,
-+				    sched_data);
-+		new_bfqq = bfq_get_queue(bfqd, bfqg, BLK_RW_ASYNC, bic,
-+					 GFP_ATOMIC);
-+		if (new_bfqq != NULL) {
-+			bic->bfqq[BLK_RW_ASYNC] = new_bfqq;
-+			bfq_log_bfqq(bfqd, bfqq,
-+				     "changed_ioprio: bfqq %p %d",
-+				     bfqq, atomic_read(&bfqq->ref));
-+			bfq_put_queue(bfqq);
-+		}
-+	}
-+
-+	bfqq = bic->bfqq[BLK_RW_SYNC];
-+	if (bfqq != NULL)
-+		bfq_mark_bfqq_prio_changed(bfqq);
-+
-+	bic->ioprio = ioprio;
-+
-+out:
-+	bfq_put_bfqd_unlock(bfqd, &flags);
-+}
-+
-+static void bfq_init_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			  pid_t pid, int is_sync)
-+{
-+	RB_CLEAR_NODE(&bfqq->entity.rb_node);
-+	INIT_LIST_HEAD(&bfqq->fifo);
-+
-+	atomic_set(&bfqq->ref, 0);
-+	bfqq->bfqd = bfqd;
-+
-+	bfq_mark_bfqq_prio_changed(bfqq);
-+
-+	if (is_sync) {
-+		if (!bfq_class_idle(bfqq))
-+			bfq_mark_bfqq_idle_window(bfqq);
-+		bfq_mark_bfqq_sync(bfqq);
-+	}
-+	bfq_mark_bfqq_IO_bound(bfqq);
-+
-+	/* Tentative initial value to trade off between thr and lat */
-+	bfqq->max_budget = (2 * bfq_max_budget(bfqd)) / 3;
-+	bfqq->pid = pid;
-+
-+	bfqq->wr_coeff = 1;
-+	bfqq->last_wr_start_finish = 0;
-+	/*
-+	 * Set to the value for which bfqq will not be deemed as
-+	 * soft rt when it becomes backlogged.
-+	 */
-+	bfqq->soft_rt_next_start = bfq_infinity_from_now(jiffies);
-+}
-+
-+static struct bfq_queue *bfq_find_alloc_queue(struct bfq_data *bfqd,
-+					      struct bfq_group *bfqg,
-+					      int is_sync,
-+					      struct bfq_io_cq *bic,
-+					      gfp_t gfp_mask)
-+{
-+	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+
-+retry:
-+	/* bic always exists here */
-+	bfqq = bic_to_bfqq(bic, is_sync);
-+
-+	/*
-+	 * Always try a new alloc if we fall back to the OOM bfqq
-+	 * originally, since it should just be a temporary situation.
-+	 */
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = NULL;
-+		if (new_bfqq != NULL) {
-+			bfqq = new_bfqq;
-+			new_bfqq = NULL;
-+		} else if (gfp_mask & __GFP_WAIT) {
-+			spin_unlock_irq(bfqd->queue->queue_lock);
-+			new_bfqq = kmem_cache_alloc_node(bfq_pool,
-+					gfp_mask | __GFP_ZERO,
-+					bfqd->queue->node);
-+			spin_lock_irq(bfqd->queue->queue_lock);
-+			if (new_bfqq != NULL)
-+				goto retry;
-+		} else {
-+			bfqq = kmem_cache_alloc_node(bfq_pool,
-+					gfp_mask | __GFP_ZERO,
-+					bfqd->queue->node);
-+		}
-+
-+		if (bfqq != NULL) {
-+			bfq_init_bfqq(bfqd, bfqq, current->pid, is_sync);
-+			bfq_log_bfqq(bfqd, bfqq, "allocated");
-+		} else {
-+			bfqq = &bfqd->oom_bfqq;
-+			bfq_log_bfqq(bfqd, bfqq, "using oom bfqq");
-+		}
-+
-+		bfq_init_prio_data(bfqq, bic);
-+		bfq_init_entity(&bfqq->entity, bfqg);
-+	}
-+
-+	if (new_bfqq != NULL)
-+		kmem_cache_free(bfq_pool, new_bfqq);
-+
-+	return bfqq;
-+}
-+
-+static struct bfq_queue **bfq_async_queue_prio(struct bfq_data *bfqd,
-+					       struct bfq_group *bfqg,
-+					       int ioprio_class, int ioprio)
-+{
-+	switch (ioprio_class) {
-+	case IOPRIO_CLASS_RT:
-+		return &bfqg->async_bfqq[0][ioprio];
-+	case IOPRIO_CLASS_NONE:
-+		ioprio = IOPRIO_NORM;
-+		/* fall through */
-+	case IOPRIO_CLASS_BE:
-+		return &bfqg->async_bfqq[1][ioprio];
-+	case IOPRIO_CLASS_IDLE:
-+		return &bfqg->async_idle_bfqq;
-+	default:
-+		BUG();
-+	}
-+}
-+
-+static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
-+				       struct bfq_io_cq *bic, gfp_t gfp_mask)
-+{
-+	const int ioprio = IOPRIO_PRIO_DATA(bic->ioprio);
-+	const int ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio);
-+	struct bfq_queue **async_bfqq = NULL;
-+	struct bfq_queue *bfqq = NULL;
-+
-+	if (!is_sync) {
-+		async_bfqq = bfq_async_queue_prio(bfqd, bfqg, ioprio_class,
-+						  ioprio);
-+		bfqq = *async_bfqq;
-+	}
-+
-+	if (bfqq == NULL)
-+		bfqq = bfq_find_alloc_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
-+
-+	/*
-+	 * Pin the queue now that it's allocated, scheduler exit will
-+	 * prune it.
-+	 */
-+	if (!is_sync && *async_bfqq == NULL) {
-+		atomic_inc(&bfqq->ref);
-+		bfq_log_bfqq(bfqd, bfqq, "get_queue, bfqq not in async: %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		*async_bfqq = bfqq;
-+	}
-+
-+	atomic_inc(&bfqq->ref);
-+	bfq_log_bfqq(bfqd, bfqq, "get_queue, at end: %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+	return bfqq;
-+}
-+
-+static void bfq_update_io_thinktime(struct bfq_data *bfqd,
-+				    struct bfq_io_cq *bic)
-+{
-+	unsigned long elapsed = jiffies - bic->ttime.last_end_request;
-+	unsigned long ttime = min(elapsed, 2UL * bfqd->bfq_slice_idle);
-+
-+	bic->ttime.ttime_samples = (7*bic->ttime.ttime_samples + 256) / 8;
-+	bic->ttime.ttime_total = (7*bic->ttime.ttime_total + 256*ttime) / 8;
-+	bic->ttime.ttime_mean = (bic->ttime.ttime_total + 128) /
-+				bic->ttime.ttime_samples;
-+}
-+
-+static void bfq_update_io_seektime(struct bfq_data *bfqd,
-+				   struct bfq_queue *bfqq,
-+				   struct request *rq)
-+{
-+	sector_t sdist;
-+	u64 total;
-+
-+	if (bfqq->last_request_pos < blk_rq_pos(rq))
-+		sdist = blk_rq_pos(rq) - bfqq->last_request_pos;
-+	else
-+		sdist = bfqq->last_request_pos - blk_rq_pos(rq);
-+
-+	/*
-+	 * Don't allow the seek distance to get too large from the
-+	 * odd fragment, pagein, etc.
-+	 */
-+	if (bfqq->seek_samples == 0) /* first request, not really a seek */
-+		sdist = 0;
-+	else if (bfqq->seek_samples <= 60) /* second & third seek */
-+		sdist = min(sdist, (bfqq->seek_mean * 4) + 2*1024*1024);
-+	else
-+		sdist = min(sdist, (bfqq->seek_mean * 4) + 2*1024*64);
-+
-+	bfqq->seek_samples = (7*bfqq->seek_samples + 256) / 8;
-+	bfqq->seek_total = (7*bfqq->seek_total + (u64)256*sdist) / 8;
-+	total = bfqq->seek_total + (bfqq->seek_samples/2);
-+	do_div(total, bfqq->seek_samples);
-+	bfqq->seek_mean = (sector_t)total;
-+
-+	bfq_log_bfqq(bfqd, bfqq, "dist=%llu mean=%llu", (u64)sdist,
-+			(u64)bfqq->seek_mean);
-+}
-+
-+/*
-+ * Disable idle window if the process thinks too long or seeks so much that
-+ * it doesn't matter.
-+ */
-+static void bfq_update_idle_window(struct bfq_data *bfqd,
-+				   struct bfq_queue *bfqq,
-+				   struct bfq_io_cq *bic)
-+{
-+	int enable_idle;
-+
-+	/* Don't idle for async or idle io prio class. */
-+	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
-+		return;
-+
-+	enable_idle = bfq_bfqq_idle_window(bfqq);
-+
-+	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-+	    bfqd->bfq_slice_idle == 0 ||
-+		(bfqd->hw_tag && BFQQ_SEEKY(bfqq) &&
-+			bfqq->wr_coeff == 1))
-+		enable_idle = 0;
-+	else if (bfq_sample_valid(bic->ttime.ttime_samples)) {
-+		if (bic->ttime.ttime_mean > bfqd->bfq_slice_idle &&
-+			bfqq->wr_coeff == 1)
-+			enable_idle = 0;
-+		else
-+			enable_idle = 1;
-+	}
-+	bfq_log_bfqq(bfqd, bfqq, "update_idle_window: enable_idle %d",
-+		enable_idle);
-+
-+	if (enable_idle)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+}
-+
-+/*
-+ * Called when a new fs request (rq) is added to bfqq.  Check if there's
-+ * something we should do about it.
-+ */
-+static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			    struct request *rq)
-+{
-+	struct bfq_io_cq *bic = RQ_BIC(rq);
-+
-+	if (rq->cmd_flags & REQ_META)
-+		bfqq->meta_pending++;
-+
-+	bfq_update_io_thinktime(bfqd, bic);
-+	bfq_update_io_seektime(bfqd, bfqq, rq);
-+	if (!BFQQ_SEEKY(bfqq) && bfq_bfqq_constantly_seeky(bfqq)) {
-+		bfq_clear_bfqq_constantly_seeky(bfqq);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->const_seeky_busy_in_flight_queues);
-+			bfqd->const_seeky_busy_in_flight_queues--;
-+		}
-+	}
-+	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
-+	    !BFQQ_SEEKY(bfqq))
-+		bfq_update_idle_window(bfqd, bfqq, bic);
-+
-+	bfq_log_bfqq(bfqd, bfqq,
-+		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-+		     bfq_bfqq_idle_window(bfqq), BFQQ_SEEKY(bfqq),
-+		     (long long unsigned)bfqq->seek_mean);
-+
-+	bfqq->last_request_pos = blk_rq_pos(rq) + blk_rq_sectors(rq);
-+
-+	if (bfqq == bfqd->in_service_queue && bfq_bfqq_wait_request(bfqq)) {
-+		int small_req = bfqq->queued[rq_is_sync(rq)] == 1 &&
-+				blk_rq_sectors(rq) < 32;
-+		int budget_timeout = bfq_bfqq_budget_timeout(bfqq);
-+
-+		/*
-+		 * There is just this request queued: if the request
-+		 * is small and the queue is not to be expired, then
-+		 * just exit.
-+		 *
-+		 * In this way, if the disk is being idled to wait for
-+		 * a new request from the in-service queue, we avoid
-+		 * unplugging the device and committing the disk to serve
-+		 * just a small request. On the contrary, we wait for
-+		 * the block layer to decide when to unplug the device:
-+		 * hopefully, new requests will be merged to this one
-+		 * quickly, then the device will be unplugged and
-+		 * larger requests will be dispatched.
-+		 */
-+		if (small_req && !budget_timeout)
-+			return;
-+
-+		/*
-+		 * A large enough request arrived, or the queue is to
-+		 * be expired: in both cases disk idling is to be
-+		 * stopped, so clear wait_request flag and reset
-+		 * timer.
-+		 */
-+		bfq_clear_bfqq_wait_request(bfqq);
-+		del_timer(&bfqd->idle_slice_timer);
-+
-+		/*
-+		 * The queue is not empty, because a new request just
-+		 * arrived. Hence we can safely expire the queue, in
-+		 * case of budget timeout, without risking that the
-+		 * timestamps of the queue are not updated correctly.
-+		 * See [1] for more details.
-+		 */
-+		if (budget_timeout)
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
-+
-+		/*
-+		 * Let the request rip immediately, or let a new queue be
-+		 * selected if bfqq has just been expired.
-+		 */
-+		__blk_run_queue(bfqd->queue);
-+	}
-+}
-+
-+static void bfq_insert_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	assert_spin_locked(bfqd->queue->queue_lock);
-+	bfq_init_prio_data(bfqq, RQ_BIC(rq));
-+
-+	bfq_add_request(rq);
-+
-+	rq_set_fifo_time(rq, jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)]);
-+	list_add_tail(&rq->queuelist, &bfqq->fifo);
-+
-+	bfq_rq_enqueued(bfqd, bfqq, rq);
-+}
-+
-+static void bfq_update_hw_tag(struct bfq_data *bfqd)
-+{
-+	bfqd->max_rq_in_driver = max(bfqd->max_rq_in_driver,
-+				     bfqd->rq_in_driver);
-+
-+	if (bfqd->hw_tag == 1)
-+		return;
-+
-+	/*
-+	 * This sample is valid if the number of outstanding requests
-+	 * is large enough to allow a queueing behavior.  Note that the
-+	 * sum is not exact, as it's not taking into account deactivated
-+	 * requests.
-+	 */
-+	if (bfqd->rq_in_driver + bfqd->queued < BFQ_HW_QUEUE_THRESHOLD)
-+		return;
-+
-+	if (bfqd->hw_tag_samples++ < BFQ_HW_QUEUE_SAMPLES)
-+		return;
-+
-+	bfqd->hw_tag = bfqd->max_rq_in_driver > BFQ_HW_QUEUE_THRESHOLD;
-+	bfqd->max_rq_in_driver = 0;
-+	bfqd->hw_tag_samples = 0;
-+}
-+
-+static void bfq_completed_request(struct request_queue *q, struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+	bool sync = bfq_bfqq_sync(bfqq);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "completed one req with %u sects left (%d)",
-+		     blk_rq_sectors(rq), sync);
-+
-+	bfq_update_hw_tag(bfqd);
-+
-+	BUG_ON(!bfqd->rq_in_driver);
-+	BUG_ON(!bfqq->dispatched);
-+	bfqd->rq_in_driver--;
-+	bfqq->dispatched--;
-+
-+	if (!bfqq->dispatched && !bfq_bfqq_busy(bfqq)) {
-+		bfq_weights_tree_remove(bfqd, &bfqq->entity,
-+					&bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->busy_in_flight_queues);
-+			bfqd->busy_in_flight_queues--;
-+			if (bfq_bfqq_constantly_seeky(bfqq)) {
-+				BUG_ON(!bfqd->
-+					const_seeky_busy_in_flight_queues);
-+				bfqd->const_seeky_busy_in_flight_queues--;
-+			}
-+		}
-+	}
-+
-+	if (sync) {
-+		bfqd->sync_flight--;
-+		RQ_BIC(rq)->ttime.last_end_request = jiffies;
-+	}
-+
-+	/*
-+	 * If we are waiting to discover whether the request pattern of the
-+	 * task associated with the queue is actually isochronous, and
-+	 * both requisites for this condition to hold are satisfied, then
-+	 * compute soft_rt_next_start (see the comments to the function
-+	 * bfq_bfqq_softrt_next_start()).
-+	 */
-+	if (bfq_bfqq_softrt_update(bfqq) && bfqq->dispatched == 0 &&
-+	    RB_EMPTY_ROOT(&bfqq->sort_list))
-+		bfqq->soft_rt_next_start =
-+			bfq_bfqq_softrt_next_start(bfqd, bfqq);
-+
-+	/*
-+	 * If this is the in-service queue, check if it needs to be expired,
-+	 * or if we want to idle in case it has no pending requests.
-+	 */
-+	if (bfqd->in_service_queue == bfqq) {
-+		if (bfq_bfqq_budget_new(bfqq))
-+			bfq_set_budget_timeout(bfqd);
-+
-+		if (bfq_bfqq_must_idle(bfqq)) {
-+			bfq_arm_slice_timer(bfqd);
-+			goto out;
-+		} else if (bfq_may_expire_for_budg_timeout(bfqq))
-+			bfq_bfqq_expire(bfqd, bfqq, 0, BFQ_BFQQ_BUDGET_TIMEOUT);
-+		else if (RB_EMPTY_ROOT(&bfqq->sort_list) &&
-+			 (bfqq->dispatched == 0 ||
-+			  !bfq_bfqq_must_not_expire(bfqq)))
-+			bfq_bfqq_expire(bfqd, bfqq, 0,
-+					BFQ_BFQQ_NO_MORE_REQUESTS);
-+	}
-+
-+	if (!bfqd->rq_in_driver)
-+		bfq_schedule_dispatch(bfqd);
-+
-+out:
-+	return;
-+}
-+
-+static inline int __bfq_may_queue(struct bfq_queue *bfqq)
-+{
-+	if (bfq_bfqq_wait_request(bfqq) && bfq_bfqq_must_alloc(bfqq)) {
-+		bfq_clear_bfqq_must_alloc(bfqq);
-+		return ELV_MQUEUE_MUST;
-+	}
-+
-+	return ELV_MQUEUE_MAY;
-+}
-+
-+static int bfq_may_queue(struct request_queue *q, int rw)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct task_struct *tsk = current;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq;
-+
-+	/*
-+	 * Don't force setup of a queue from here, as a call to may_queue
-+	 * does not necessarily imply that a request actually will be
-+	 * queued. So just lookup a possibly existing queue, or return
-+	 * 'may queue' if that fails.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, tsk->io_context);
-+	if (bic == NULL)
-+		return ELV_MQUEUE_MAY;
-+
-+	bfqq = bic_to_bfqq(bic, rw_is_sync(rw));
-+	if (bfqq != NULL) {
-+		bfq_init_prio_data(bfqq, bic);
-+
-+		return __bfq_may_queue(bfqq);
-+	}
-+
-+	return ELV_MQUEUE_MAY;
-+}
-+
-+/*
-+ * Queue lock held here.
-+ */
-+static void bfq_put_request(struct request *rq)
-+{
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+
-+	if (bfqq != NULL) {
-+		const int rw = rq_data_dir(rq);
-+
-+		BUG_ON(!bfqq->allocated[rw]);
-+		bfqq->allocated[rw]--;
-+
-+		rq->elv.priv[0] = NULL;
-+		rq->elv.priv[1] = NULL;
-+
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "put_request %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+	}
-+}
-+
-+static struct bfq_queue *
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)bfqq->new_bfqq->pid);
-+	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
-+	bfq_mark_bfqq_coop(bfqq->new_bfqq);
-+	bfq_put_queue(bfqq);
-+	return bic_to_bfqq(bic, 1);
-+}
-+
-+/*
-+ * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-+ * was the last process referring to said bfqq.
-+ */
-+static struct bfq_queue *
-+bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
-+{
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+	if (bfqq_process_refs(bfqq) == 1) {
-+		bfqq->pid = current->pid;
-+		bfq_clear_bfqq_coop(bfqq);
-+		bfq_clear_bfqq_split_coop(bfqq);
-+		return bfqq;
-+	}
-+
-+	bic_set_bfqq(bic, NULL, 1);
-+
-+	bfq_put_cooperator(bfqq);
-+
-+	bfq_put_queue(bfqq);
-+	return NULL;
-+}
-+
-+/*
-+ * Allocate bfq data structures associated with this request.
-+ */
-+static int bfq_set_request(struct request_queue *q, struct request *rq,
-+			   struct bio *bio, gfp_t gfp_mask)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic = icq_to_bic(rq->elv.icq);
-+	const int rw = rq_data_dir(rq);
-+	const int is_sync = rq_is_sync(rq);
-+	struct bfq_queue *bfqq;
-+	struct bfq_group *bfqg;
-+	unsigned long flags;
-+
-+	might_sleep_if(gfp_mask & __GFP_WAIT);
-+
-+	bfq_changed_ioprio(bic);
-+
-+	spin_lock_irqsave(q->queue_lock, flags);
-+
-+	if (bic == NULL)
-+		goto queue_fail;
-+
-+	bfqg = bfq_bic_update_cgroup(bic);
-+
-+new_queue:
-+	bfqq = bic_to_bfqq(bic, is_sync);
-+	if (bfqq == NULL || bfqq == &bfqd->oom_bfqq) {
-+		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
-+		bic_set_bfqq(bic, bfqq, is_sync);
-+	} else {
-+		/*
-+		 * If the queue was seeky for too long, break it apart.
-+		 */
-+		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
-+			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
-+			bfqq = bfq_split_bfqq(bic, bfqq);
-+			if (!bfqq)
-+				goto new_queue;
-+		}
-+
-+		/*
-+		 * Check to see if this queue is scheduled to merge with
-+		 * another closely cooperating queue. The merging of queues
-+		 * happens here as it must be done in process context.
-+		 * The reference on new_bfqq was taken in merge_bfqqs.
-+		 */
-+		if (bfqq->new_bfqq != NULL)
-+			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
-+	}
-+
-+	bfqq->allocated[rw]++;
-+	atomic_inc(&bfqq->ref);
-+	bfq_log_bfqq(bfqd, bfqq, "set_request: bfqq %p, %d", bfqq,
-+		     atomic_read(&bfqq->ref));
-+
-+	rq->elv.priv[0] = bic;
-+	rq->elv.priv[1] = bfqq;
-+
-+	spin_unlock_irqrestore(q->queue_lock, flags);
-+
-+	return 0;
-+
-+queue_fail:
-+	bfq_schedule_dispatch(bfqd);
-+	spin_unlock_irqrestore(q->queue_lock, flags);
-+
-+	return 1;
-+}
-+
-+static void bfq_kick_queue(struct work_struct *work)
-+{
-+	struct bfq_data *bfqd =
-+		container_of(work, struct bfq_data, unplug_work);
-+	struct request_queue *q = bfqd->queue;
-+
-+	spin_lock_irq(q->queue_lock);
-+	__blk_run_queue(q);
-+	spin_unlock_irq(q->queue_lock);
-+}
-+
-+/*
-+ * Handler of the expiration of the timer running if the in-service queue
-+ * is idling inside its time slice.
-+ */
-+static void bfq_idle_slice_timer(unsigned long data)
-+{
-+	struct bfq_data *bfqd = (struct bfq_data *)data;
-+	struct bfq_queue *bfqq;
-+	unsigned long flags;
-+	enum bfqq_expiration reason;
-+
-+	spin_lock_irqsave(bfqd->queue->queue_lock, flags);
-+
-+	bfqq = bfqd->in_service_queue;
-+	/*
-+	 * Theoretical race here: the in-service queue can be NULL or
-+	 * different from the queue that was idling if the timer handler
-+	 * spins on the queue_lock and a new request arrives for the
-+	 * current queue and there is a full dispatch cycle that changes
-+	 * the in-service queue.  This can hardly happen, but in the worst
-+	 * case we just expire a queue too early.
-+	 */
-+	if (bfqq != NULL) {
-+		bfq_log_bfqq(bfqd, bfqq, "slice_timer expired");
-+		if (bfq_bfqq_budget_timeout(bfqq))
-+			/*
-+			 * Also here the queue can be safely expired
-+			 * for budget timeout without wasting
-+			 * guarantees
-+			 */
-+			reason = BFQ_BFQQ_BUDGET_TIMEOUT;
-+		else if (bfqq->queued[0] == 0 && bfqq->queued[1] == 0)
-+			/*
-+			 * The queue may not be empty upon timer expiration,
-+			 * because we may not disable the timer when the
-+			 * first request of the in-service queue arrives
-+			 * during disk idling.
-+			 */
-+			reason = BFQ_BFQQ_TOO_IDLE;
-+		else
-+			goto schedule_dispatch;
-+
-+		bfq_bfqq_expire(bfqd, bfqq, 1, reason);
-+	}
-+
-+schedule_dispatch:
-+	bfq_schedule_dispatch(bfqd);
-+
-+	spin_unlock_irqrestore(bfqd->queue->queue_lock, flags);
-+}
-+
-+static void bfq_shutdown_timer_wq(struct bfq_data *bfqd)
-+{
-+	del_timer_sync(&bfqd->idle_slice_timer);
-+	cancel_work_sync(&bfqd->unplug_work);
-+}
-+
-+static inline void __bfq_put_async_bfqq(struct bfq_data *bfqd,
-+					struct bfq_queue **bfqq_ptr)
-+{
-+	struct bfq_group *root_group = bfqd->root_group;
-+	struct bfq_queue *bfqq = *bfqq_ptr;
-+
-+	bfq_log(bfqd, "put_async_bfqq: %p", bfqq);
-+	if (bfqq != NULL) {
-+		bfq_bfqq_move(bfqd, bfqq, &bfqq->entity, root_group);
-+		bfq_log_bfqq(bfqd, bfqq, "put_async_bfqq: putting %p, %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+		*bfqq_ptr = NULL;
-+	}
-+}
-+
-+/*
-+ * Release all the bfqg references to its async queues.  If we are
-+ * deallocating the group these queues may still contain requests, so
-+ * we reparent them to the root cgroup (i.e., the only one that will
-+ * exist for sure until all the requests on a device are gone).
-+ */
-+static void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg)
-+{
-+	int i, j;
-+
-+	for (i = 0; i < 2; i++)
-+		for (j = 0; j < IOPRIO_BE_NR; j++)
-+			__bfq_put_async_bfqq(bfqd, &bfqg->async_bfqq[i][j]);
-+
-+	__bfq_put_async_bfqq(bfqd, &bfqg->async_idle_bfqq);
-+}
-+
-+static void bfq_exit_queue(struct elevator_queue *e)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	struct request_queue *q = bfqd->queue;
-+	struct bfq_queue *bfqq, *n;
-+
-+	bfq_shutdown_timer_wq(bfqd);
-+
-+	spin_lock_irq(q->queue_lock);
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+	list_for_each_entry_safe(bfqq, n, &bfqd->idle_list, bfqq_list)
-+		bfq_deactivate_bfqq(bfqd, bfqq, 0);
-+
-+	bfq_disconnect_groups(bfqd);
-+	spin_unlock_irq(q->queue_lock);
-+
-+	bfq_shutdown_timer_wq(bfqd);
-+
-+	synchronize_rcu();
-+
-+	BUG_ON(timer_pending(&bfqd->idle_slice_timer));
-+
-+	bfq_free_root_group(bfqd);
-+	kfree(bfqd);
-+}
-+
-+static int bfq_init_queue(struct request_queue *q, struct elevator_type *e)
-+{
-+	struct bfq_group *bfqg;
-+	struct bfq_data *bfqd;
-+	struct elevator_queue *eq;
-+
-+	eq = elevator_alloc(q, e);
-+	if (eq == NULL)
-+		return -ENOMEM;
-+
-+	bfqd = kzalloc_node(sizeof(*bfqd), GFP_KERNEL, q->node);
-+	if (bfqd == NULL) {
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+	eq->elevator_data = bfqd;
-+
-+	/*
-+	 * Our fallback bfqq if bfq_find_alloc_queue() runs into OOM issues.
-+	 * Grab a permanent reference to it, so that the normal code flow
-+	 * will not attempt to free it.
-+	 */
-+	bfq_init_bfqq(bfqd, &bfqd->oom_bfqq, 1, 0);
-+	atomic_inc(&bfqd->oom_bfqq.ref);
-+
-+	bfqd->queue = q;
-+
-+	spin_lock_irq(q->queue_lock);
-+	q->elevator = eq;
-+	spin_unlock_irq(q->queue_lock);
-+
-+	bfqg = bfq_alloc_root_group(bfqd, q->node);
-+	if (bfqg == NULL) {
-+		kfree(bfqd);
-+		kobject_put(&eq->kobj);
-+		return -ENOMEM;
-+	}
-+
-+	bfqd->root_group = bfqg;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	bfqd->active_numerous_groups = 0;
-+#endif
-+
-+	init_timer(&bfqd->idle_slice_timer);
-+	bfqd->idle_slice_timer.function = bfq_idle_slice_timer;
-+	bfqd->idle_slice_timer.data = (unsigned long)bfqd;
-+
-+	bfqd->rq_pos_tree = RB_ROOT;
-+	bfqd->queue_weights_tree = RB_ROOT;
-+	bfqd->group_weights_tree = RB_ROOT;
-+
-+	INIT_WORK(&bfqd->unplug_work, bfq_kick_queue);
-+
-+	INIT_LIST_HEAD(&bfqd->active_list);
-+	INIT_LIST_HEAD(&bfqd->idle_list);
-+
-+	bfqd->hw_tag = -1;
-+
-+	bfqd->bfq_max_budget = bfq_default_max_budget;
-+
-+	bfqd->bfq_quantum = bfq_quantum;
-+	bfqd->bfq_fifo_expire[0] = bfq_fifo_expire[0];
-+	bfqd->bfq_fifo_expire[1] = bfq_fifo_expire[1];
-+	bfqd->bfq_back_max = bfq_back_max;
-+	bfqd->bfq_back_penalty = bfq_back_penalty;
-+	bfqd->bfq_slice_idle = bfq_slice_idle;
-+	bfqd->bfq_class_idle_last_service = 0;
-+	bfqd->bfq_max_budget_async_rq = bfq_max_budget_async_rq;
-+	bfqd->bfq_timeout[BLK_RW_ASYNC] = bfq_timeout_async;
-+	bfqd->bfq_timeout[BLK_RW_SYNC] = bfq_timeout_sync;
-+
-+	bfqd->bfq_coop_thresh = 2;
-+	bfqd->bfq_failed_cooperations = 7000;
-+	bfqd->bfq_requests_within_timer = 120;
-+
-+	bfqd->low_latency = true;
-+
-+	bfqd->bfq_wr_coeff = 20;
-+	bfqd->bfq_wr_rt_max_time = msecs_to_jiffies(300);
-+	bfqd->bfq_wr_max_time = 0;
-+	bfqd->bfq_wr_min_idle_time = msecs_to_jiffies(2000);
-+	bfqd->bfq_wr_min_inter_arr_async = msecs_to_jiffies(500);
-+	bfqd->bfq_wr_max_softrt_rate = 7000; /*
-+					      * Approximate rate required
-+					      * to playback or record a
-+					      * high-definition compressed
-+					      * video.
-+					      */
-+	bfqd->wr_busy_queues = 0;
-+	bfqd->busy_in_flight_queues = 0;
-+	bfqd->const_seeky_busy_in_flight_queues = 0;
-+
-+	/*
-+	 * Begin by assuming, optimistically, that the device peak rate is
-+	 * equal to the highest reference rate.
-+	 */
-+	bfqd->RT_prod = R_fast[blk_queue_nonrot(bfqd->queue)] *
-+			T_fast[blk_queue_nonrot(bfqd->queue)];
-+	bfqd->peak_rate = R_fast[blk_queue_nonrot(bfqd->queue)];
-+	bfqd->device_speed = BFQ_BFQD_FAST;
-+
-+	return 0;
-+}
-+
-+static void bfq_slab_kill(void)
-+{
-+	if (bfq_pool != NULL)
-+		kmem_cache_destroy(bfq_pool);
-+}
-+
-+static int __init bfq_slab_setup(void)
-+{
-+	bfq_pool = KMEM_CACHE(bfq_queue, 0);
-+	if (bfq_pool == NULL)
-+		return -ENOMEM;
-+	return 0;
-+}
-+
-+static ssize_t bfq_var_show(unsigned int var, char *page)
-+{
-+	return sprintf(page, "%d\n", var);
-+}
-+
-+static ssize_t bfq_var_store(unsigned long *var, const char *page,
-+			     size_t count)
-+{
-+	unsigned long new_val;
-+	int ret = kstrtoul(page, 10, &new_val);
-+
-+	if (ret == 0)
-+		*var = new_val;
-+
-+	return count;
-+}
-+
-+static ssize_t bfq_wr_max_time_show(struct elevator_queue *e, char *page)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	return sprintf(page, "%d\n", bfqd->bfq_wr_max_time > 0 ?
-+		       jiffies_to_msecs(bfqd->bfq_wr_max_time) :
-+		       jiffies_to_msecs(bfq_wr_duration(bfqd)));
-+}
-+
-+static ssize_t bfq_weights_show(struct elevator_queue *e, char *page)
-+{
-+	struct bfq_queue *bfqq;
-+	struct bfq_data *bfqd = e->elevator_data;
-+	ssize_t num_char = 0;
-+
-+	num_char += sprintf(page + num_char, "Tot reqs queued %d\n\n",
-+			    bfqd->queued);
-+
-+	spin_lock_irq(bfqd->queue->queue_lock);
-+
-+	num_char += sprintf(page + num_char, "Active:\n");
-+	list_for_each_entry(bfqq, &bfqd->active_list, bfqq_list) {
-+	  num_char += sprintf(page + num_char,
-+			      "pid%d: weight %hu, nr_queued %d %d, dur %d/%u\n",
-+			      bfqq->pid,
-+			      bfqq->entity.weight,
-+			      bfqq->queued[0],
-+			      bfqq->queued[1],
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(bfqq->wr_cur_max_time));
-+	}
-+
-+	num_char += sprintf(page + num_char, "Idle:\n");
-+	list_for_each_entry(bfqq, &bfqd->idle_list, bfqq_list) {
-+			num_char += sprintf(page + num_char,
-+				"pid%d: weight %hu, dur %d/%u\n",
-+				bfqq->pid,
-+				bfqq->entity.weight,
-+				jiffies_to_msecs(jiffies -
-+					bfqq->last_wr_start_finish),
-+				jiffies_to_msecs(bfqq->wr_cur_max_time));
-+	}
-+
-+	spin_unlock_irq(bfqd->queue->queue_lock);
-+
-+	return num_char;
-+}
-+
-+#define SHOW_FUNCTION(__FUNC, __VAR, __CONV)				\
-+static ssize_t __FUNC(struct elevator_queue *e, char *page)		\
-+{									\
-+	struct bfq_data *bfqd = e->elevator_data;			\
-+	unsigned int __data = __VAR;					\
-+	if (__CONV)							\
-+		__data = jiffies_to_msecs(__data);			\
-+	return bfq_var_show(__data, (page));				\
-+}
-+SHOW_FUNCTION(bfq_quantum_show, bfqd->bfq_quantum, 0);
-+SHOW_FUNCTION(bfq_fifo_expire_sync_show, bfqd->bfq_fifo_expire[1], 1);
-+SHOW_FUNCTION(bfq_fifo_expire_async_show, bfqd->bfq_fifo_expire[0], 1);
-+SHOW_FUNCTION(bfq_back_seek_max_show, bfqd->bfq_back_max, 0);
-+SHOW_FUNCTION(bfq_back_seek_penalty_show, bfqd->bfq_back_penalty, 0);
-+SHOW_FUNCTION(bfq_slice_idle_show, bfqd->bfq_slice_idle, 1);
-+SHOW_FUNCTION(bfq_max_budget_show, bfqd->bfq_user_max_budget, 0);
-+SHOW_FUNCTION(bfq_max_budget_async_rq_show,
-+	      bfqd->bfq_max_budget_async_rq, 0);
-+SHOW_FUNCTION(bfq_timeout_sync_show, bfqd->bfq_timeout[BLK_RW_SYNC], 1);
-+SHOW_FUNCTION(bfq_timeout_async_show, bfqd->bfq_timeout[BLK_RW_ASYNC], 1);
-+SHOW_FUNCTION(bfq_low_latency_show, bfqd->low_latency, 0);
-+SHOW_FUNCTION(bfq_wr_coeff_show, bfqd->bfq_wr_coeff, 0);
-+SHOW_FUNCTION(bfq_wr_rt_max_time_show, bfqd->bfq_wr_rt_max_time, 1);
-+SHOW_FUNCTION(bfq_wr_min_idle_time_show, bfqd->bfq_wr_min_idle_time, 1);
-+SHOW_FUNCTION(bfq_wr_min_inter_arr_async_show, bfqd->bfq_wr_min_inter_arr_async,
-+	1);
-+SHOW_FUNCTION(bfq_wr_max_softrt_rate_show, bfqd->bfq_wr_max_softrt_rate, 0);
-+#undef SHOW_FUNCTION
-+
-+#define STORE_FUNCTION(__FUNC, __PTR, MIN, MAX, __CONV)			\
-+static ssize_t								\
-+__FUNC(struct elevator_queue *e, const char *page, size_t count)	\
-+{									\
-+	struct bfq_data *bfqd = e->elevator_data;			\
-+	unsigned long uninitialized_var(__data);			\
-+	int ret = bfq_var_store(&__data, (page), count);		\
-+	if (__data < (MIN))						\
-+		__data = (MIN);						\
-+	else if (__data > (MAX))					\
-+		__data = (MAX);						\
-+	if (__CONV)							\
-+		*(__PTR) = msecs_to_jiffies(__data);			\
-+	else								\
-+		*(__PTR) = __data;					\
-+	return ret;							\
-+}
-+STORE_FUNCTION(bfq_quantum_store, &bfqd->bfq_quantum, 1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_fifo_expire_sync_store, &bfqd->bfq_fifo_expire[1], 1,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_fifo_expire_async_store, &bfqd->bfq_fifo_expire[0], 1,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_back_seek_max_store, &bfqd->bfq_back_max, 0, INT_MAX, 0);
-+STORE_FUNCTION(bfq_back_seek_penalty_store, &bfqd->bfq_back_penalty, 1,
-+		INT_MAX, 0);
-+STORE_FUNCTION(bfq_slice_idle_store, &bfqd->bfq_slice_idle, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_max_budget_async_rq_store, &bfqd->bfq_max_budget_async_rq,
-+		1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_timeout_async_store, &bfqd->bfq_timeout[BLK_RW_ASYNC], 0,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_coeff_store, &bfqd->bfq_wr_coeff, 1, INT_MAX, 0);
-+STORE_FUNCTION(bfq_wr_max_time_store, &bfqd->bfq_wr_max_time, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_rt_max_time_store, &bfqd->bfq_wr_rt_max_time, 0, INT_MAX,
-+		1);
-+STORE_FUNCTION(bfq_wr_min_idle_time_store, &bfqd->bfq_wr_min_idle_time, 0,
-+		INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_min_inter_arr_async_store,
-+		&bfqd->bfq_wr_min_inter_arr_async, 0, INT_MAX, 1);
-+STORE_FUNCTION(bfq_wr_max_softrt_rate_store, &bfqd->bfq_wr_max_softrt_rate, 0,
-+		INT_MAX, 0);
-+#undef STORE_FUNCTION
-+
-+/* do nothing for the moment */
-+static ssize_t bfq_weights_store(struct elevator_queue *e,
-+				    const char *page, size_t count)
-+{
-+	return count;
-+}
-+
-+static inline unsigned long bfq_estimated_max_budget(struct bfq_data *bfqd)
-+{
-+	u64 timeout = jiffies_to_msecs(bfqd->bfq_timeout[BLK_RW_SYNC]);
-+
-+	if (bfqd->peak_rate_samples >= BFQ_PEAK_RATE_SAMPLES)
-+		return bfq_calc_max_budget(bfqd->peak_rate, timeout);
-+	else
-+		return bfq_default_max_budget;
-+}
-+
-+static ssize_t bfq_max_budget_store(struct elevator_queue *e,
-+				    const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data == 0)
-+		bfqd->bfq_max_budget = bfq_estimated_max_budget(bfqd);
-+	else {
-+		if (__data > INT_MAX)
-+			__data = INT_MAX;
-+		bfqd->bfq_max_budget = __data;
-+	}
-+
-+	bfqd->bfq_user_max_budget = __data;
-+
-+	return ret;
-+}
-+
-+static ssize_t bfq_timeout_sync_store(struct elevator_queue *e,
-+				      const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data < 1)
-+		__data = 1;
-+	else if (__data > INT_MAX)
-+		__data = INT_MAX;
-+
-+	bfqd->bfq_timeout[BLK_RW_SYNC] = msecs_to_jiffies(__data);
-+	if (bfqd->bfq_user_max_budget == 0)
-+		bfqd->bfq_max_budget = bfq_estimated_max_budget(bfqd);
-+
-+	return ret;
-+}
-+
-+static ssize_t bfq_low_latency_store(struct elevator_queue *e,
-+				     const char *page, size_t count)
-+{
-+	struct bfq_data *bfqd = e->elevator_data;
-+	unsigned long uninitialized_var(__data);
-+	int ret = bfq_var_store(&__data, (page), count);
-+
-+	if (__data > 1)
-+		__data = 1;
-+	if (__data == 0 && bfqd->low_latency != 0)
-+		bfq_end_wr(bfqd);
-+	bfqd->low_latency = __data;
-+
-+	return ret;
-+}
-+
-+#define BFQ_ATTR(name) \
-+	__ATTR(name, S_IRUGO|S_IWUSR, bfq_##name##_show, bfq_##name##_store)
-+
-+static struct elv_fs_entry bfq_attrs[] = {
-+	BFQ_ATTR(quantum),
-+	BFQ_ATTR(fifo_expire_sync),
-+	BFQ_ATTR(fifo_expire_async),
-+	BFQ_ATTR(back_seek_max),
-+	BFQ_ATTR(back_seek_penalty),
-+	BFQ_ATTR(slice_idle),
-+	BFQ_ATTR(max_budget),
-+	BFQ_ATTR(max_budget_async_rq),
-+	BFQ_ATTR(timeout_sync),
-+	BFQ_ATTR(timeout_async),
-+	BFQ_ATTR(low_latency),
-+	BFQ_ATTR(wr_coeff),
-+	BFQ_ATTR(wr_max_time),
-+	BFQ_ATTR(wr_rt_max_time),
-+	BFQ_ATTR(wr_min_idle_time),
-+	BFQ_ATTR(wr_min_inter_arr_async),
-+	BFQ_ATTR(wr_max_softrt_rate),
-+	BFQ_ATTR(weights),
-+	__ATTR_NULL
-+};
-+
-+static struct elevator_type iosched_bfq = {
-+	.ops = {
-+		.elevator_merge_fn =		bfq_merge,
-+		.elevator_merged_fn =		bfq_merged_request,
-+		.elevator_merge_req_fn =	bfq_merged_requests,
-+		.elevator_allow_merge_fn =	bfq_allow_merge,
-+		.elevator_dispatch_fn =		bfq_dispatch_requests,
-+		.elevator_add_req_fn =		bfq_insert_request,
-+		.elevator_activate_req_fn =	bfq_activate_request,
-+		.elevator_deactivate_req_fn =	bfq_deactivate_request,
-+		.elevator_completed_req_fn =	bfq_completed_request,
-+		.elevator_former_req_fn =	elv_rb_former_request,
-+		.elevator_latter_req_fn =	elv_rb_latter_request,
-+		.elevator_init_icq_fn =		bfq_init_icq,
-+		.elevator_exit_icq_fn =		bfq_exit_icq,
-+		.elevator_set_req_fn =		bfq_set_request,
-+		.elevator_put_req_fn =		bfq_put_request,
-+		.elevator_may_queue_fn =	bfq_may_queue,
-+		.elevator_init_fn =		bfq_init_queue,
-+		.elevator_exit_fn =		bfq_exit_queue,
-+	},
-+	.icq_size =		sizeof(struct bfq_io_cq),
-+	.icq_align =		__alignof__(struct bfq_io_cq),
-+	.elevator_attrs =	bfq_attrs,
-+	.elevator_name =	"bfq",
-+	.elevator_owner =	THIS_MODULE,
-+};
-+
-+static int __init bfq_init(void)
-+{
-+	/*
-+	 * Can be 0 on HZ < 1000 setups.
-+	 */
-+	if (bfq_slice_idle == 0)
-+		bfq_slice_idle = 1;
-+
-+	if (bfq_timeout_async == 0)
-+		bfq_timeout_async = 1;
-+
-+	if (bfq_slab_setup())
-+		return -ENOMEM;
-+
-+	/*
-+	 * Times to load large popular applications for the typical systems
-+	 * installed on the reference devices (see the comments before the
-+	 * definitions of the two arrays).
-+	 */
-+	T_slow[0] = msecs_to_jiffies(2600);
-+	T_slow[1] = msecs_to_jiffies(1000);
-+	T_fast[0] = msecs_to_jiffies(5500);
-+	T_fast[1] = msecs_to_jiffies(2000);
-+
-+	/*
-+	 * Thresholds that determine the switch between speed classes (see
-+	 * the comments before the definition of the array).
-+	 */
-+	device_speed_thresh[0] = (R_fast[0] + R_slow[0]) / 2;
-+	device_speed_thresh[1] = (R_fast[1] + R_slow[1]) / 2;
-+
-+	elv_register(&iosched_bfq);
-+	pr_info("BFQ I/O-scheduler version: v7r5");
-+
-+	return 0;
-+}
-+
-+static void __exit bfq_exit(void)
-+{
-+	elv_unregister(&iosched_bfq);
-+	bfq_slab_kill();
-+}
-+
-+module_init(bfq_init);
-+module_exit(bfq_exit);
-+
-+MODULE_AUTHOR("Fabio Checconi, Paolo Valente");
-+MODULE_LICENSE("GPL");
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-new file mode 100644
-index 0000000..c4831b7
---- /dev/null
-+++ b/block/bfq-sched.c
-@@ -0,0 +1,1207 @@
-+/*
-+ * BFQ: Hierarchical B-WF2Q+ scheduler.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = entity->parent)
-+
-+#define for_each_entity_safe(entity, parent) \
-+	for (; entity && ({ parent = entity->parent; 1; }); entity = parent)
-+
-+static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
-+						 int extract,
-+						 struct bfq_data *bfqd);
-+
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
-+{
-+	struct bfq_entity *bfqg_entity;
-+	struct bfq_group *bfqg;
-+	struct bfq_sched_data *group_sd;
-+
-+	BUG_ON(next_in_service == NULL);
-+
-+	group_sd = next_in_service->sched_data;
-+
-+	bfqg = container_of(group_sd, struct bfq_group, sched_data);
-+	/*
-+	 * bfq_group's my_entity field is not NULL only if the group
-+	 * is not the root group. We must not touch the root entity
-+	 * as it must never become an in-service entity.
-+	 */
-+	bfqg_entity = bfqg->my_entity;
-+	if (bfqg_entity != NULL)
-+		bfqg_entity->budget = next_in_service->budget;
-+}
-+
-+static int bfq_update_next_in_service(struct bfq_sched_data *sd)
-+{
-+	struct bfq_entity *next_in_service;
-+
-+	if (sd->in_service_entity != NULL)
-+		/* will update/requeue at the end of service */
-+		return 0;
-+
-+	/*
-+	 * NOTE: this can be improved in many ways, such as returning
-+	 * 1 (and thus propagating upwards the update) only when the
-+	 * budget changes, or caching the bfqq that will be scheduled
-+	 * next from this subtree.  By now we worry more about
-+	 * correctness than about performance...
-+	 */
-+	next_in_service = bfq_lookup_next_entity(sd, 0, NULL);
-+	sd->next_in_service = next_in_service;
-+
-+	if (next_in_service != NULL)
-+		bfq_update_budget(next_in_service);
-+
-+	return 1;
-+}
-+
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
-+{
-+	BUG_ON(sd->next_in_service != entity);
-+}
-+#else
-+#define for_each_entity(entity)	\
-+	for (; entity != NULL; entity = NULL)
-+
-+#define for_each_entity_safe(entity, parent) \
-+	for (parent = NULL; entity != NULL; entity = parent)
-+
-+static inline int bfq_update_next_in_service(struct bfq_sched_data *sd)
-+{
-+	return 0;
-+}
-+
-+static inline void bfq_check_next_in_service(struct bfq_sched_data *sd,
-+					     struct bfq_entity *entity)
-+{
-+}
-+
-+static inline void bfq_update_budget(struct bfq_entity *next_in_service)
-+{
-+}
-+#endif
-+
-+/*
-+ * Shift for timestamp calculations.  This actually limits the maximum
-+ * service allowed in one timestamp delta (small shift values increase it),
-+ * the maximum total weight that can be used for the queues in the system
-+ * (big shift values increase it), and the period of virtual time
-+ * wraparounds.
-+ */
-+#define WFQ_SERVICE_SHIFT	22
-+
-+/**
-+ * bfq_gt - compare two timestamps.
-+ * @a: first ts.
-+ * @b: second ts.
-+ *
-+ * Return @a > @b, dealing with wrapping correctly.
-+ */
-+static inline int bfq_gt(u64 a, u64 b)
-+{
-+	return (s64)(a - b) > 0;
-+}
-+
-+static inline struct bfq_queue *bfq_entity_to_bfqq(struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = NULL;
-+
-+	BUG_ON(entity == NULL);
-+
-+	if (entity->my_sched_data == NULL)
-+		bfqq = container_of(entity, struct bfq_queue, entity);
-+
-+	return bfqq;
-+}
-+
-+
-+/**
-+ * bfq_delta - map service into the virtual time domain.
-+ * @service: amount of service.
-+ * @weight: scale factor (weight of an entity or weight sum).
-+ */
-+static inline u64 bfq_delta(unsigned long service,
-+					unsigned long weight)
-+{
-+	u64 d = (u64)service << WFQ_SERVICE_SHIFT;
-+
-+	do_div(d, weight);
-+	return d;
-+}
-+
-+/**
-+ * bfq_calc_finish - assign the finish time to an entity.
-+ * @entity: the entity to act upon.
-+ * @service: the service to be charged to the entity.
-+ */
-+static inline void bfq_calc_finish(struct bfq_entity *entity,
-+				   unsigned long service)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	BUG_ON(entity->weight == 0);
-+
-+	entity->finish = entity->start +
-+		bfq_delta(service, entity->weight);
-+
-+	if (bfqq != NULL) {
-+		bfq_log_bfqq(bfqq->bfqd, bfqq,
-+			"calc_finish: serv %lu, w %d",
-+			service, entity->weight);
-+		bfq_log_bfqq(bfqq->bfqd, bfqq,
-+			"calc_finish: start %llu, finish %llu, delta %llu",
-+			entity->start, entity->finish,
-+			bfq_delta(service, entity->weight));
-+	}
-+}
-+
-+/**
-+ * bfq_entity_of - get an entity from a node.
-+ * @node: the node field of the entity.
-+ *
-+ * Convert a node pointer to the relative entity.  This is used only
-+ * to simplify the logic of some functions and not as the generic
-+ * conversion mechanism because, e.g., in the tree walking functions,
-+ * the check for a %NULL value would be redundant.
-+ */
-+static inline struct bfq_entity *bfq_entity_of(struct rb_node *node)
-+{
-+	struct bfq_entity *entity = NULL;
-+
-+	if (node != NULL)
-+		entity = rb_entry(node, struct bfq_entity, rb_node);
-+
-+	return entity;
-+}
-+
-+/**
-+ * bfq_extract - remove an entity from a tree.
-+ * @root: the tree root.
-+ * @entity: the entity to remove.
-+ */
-+static inline void bfq_extract(struct rb_root *root,
-+			       struct bfq_entity *entity)
-+{
-+	BUG_ON(entity->tree != root);
-+
-+	entity->tree = NULL;
-+	rb_erase(&entity->rb_node, root);
-+}
-+
-+/**
-+ * bfq_idle_extract - extract an entity from the idle tree.
-+ * @st: the service tree of the owning @entity.
-+ * @entity: the entity being removed.
-+ */
-+static void bfq_idle_extract(struct bfq_service_tree *st,
-+			     struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *next;
-+
-+	BUG_ON(entity->tree != &st->idle);
-+
-+	if (entity == st->first_idle) {
-+		next = rb_next(&entity->rb_node);
-+		st->first_idle = bfq_entity_of(next);
-+	}
-+
-+	if (entity == st->last_idle) {
-+		next = rb_prev(&entity->rb_node);
-+		st->last_idle = bfq_entity_of(next);
-+	}
-+
-+	bfq_extract(&st->idle, entity);
-+
-+	if (bfqq != NULL)
-+		list_del(&bfqq->bfqq_list);
-+}
-+
-+/**
-+ * bfq_insert - generic tree insertion.
-+ * @root: tree root.
-+ * @entity: entity to insert.
-+ *
-+ * This is used for the idle and the active tree, since they are both
-+ * ordered by finish time.
-+ */
-+static void bfq_insert(struct rb_root *root, struct bfq_entity *entity)
-+{
-+	struct bfq_entity *entry;
-+	struct rb_node **node = &root->rb_node;
-+	struct rb_node *parent = NULL;
-+
-+	BUG_ON(entity->tree != NULL);
-+
-+	while (*node != NULL) {
-+		parent = *node;
-+		entry = rb_entry(parent, struct bfq_entity, rb_node);
-+
-+		if (bfq_gt(entry->finish, entity->finish))
-+			node = &parent->rb_left;
-+		else
-+			node = &parent->rb_right;
-+	}
-+
-+	rb_link_node(&entity->rb_node, parent, node);
-+	rb_insert_color(&entity->rb_node, root);
-+
-+	entity->tree = root;
-+}
-+
-+/**
-+ * bfq_update_min - update the min_start field of a entity.
-+ * @entity: the entity to update.
-+ * @node: one of its children.
-+ *
-+ * This function is called when @entity may store an invalid value for
-+ * min_start due to updates to the active tree.  The function  assumes
-+ * that the subtree rooted at @node (which may be its left or its right
-+ * child) has a valid min_start value.
-+ */
-+static inline void bfq_update_min(struct bfq_entity *entity,
-+				  struct rb_node *node)
-+{
-+	struct bfq_entity *child;
-+
-+	if (node != NULL) {
-+		child = rb_entry(node, struct bfq_entity, rb_node);
-+		if (bfq_gt(entity->min_start, child->min_start))
-+			entity->min_start = child->min_start;
-+	}
-+}
-+
-+/**
-+ * bfq_update_active_node - recalculate min_start.
-+ * @node: the node to update.
-+ *
-+ * @node may have changed position or one of its children may have moved,
-+ * this function updates its min_start value.  The left and right subtrees
-+ * are assumed to hold a correct min_start value.
-+ */
-+static inline void bfq_update_active_node(struct rb_node *node)
-+{
-+	struct bfq_entity *entity = rb_entry(node, struct bfq_entity, rb_node);
-+
-+	entity->min_start = entity->start;
-+	bfq_update_min(entity, node->rb_right);
-+	bfq_update_min(entity, node->rb_left);
-+}
-+
-+/**
-+ * bfq_update_active_tree - update min_start for the whole active tree.
-+ * @node: the starting node.
-+ *
-+ * @node must be the deepest modified node after an update.  This function
-+ * updates its min_start using the values held by its children, assuming
-+ * that they did not change, and then updates all the nodes that may have
-+ * changed in the path to the root.  The only nodes that may have changed
-+ * are the ones in the path or their siblings.
-+ */
-+static void bfq_update_active_tree(struct rb_node *node)
-+{
-+	struct rb_node *parent;
-+
-+up:
-+	bfq_update_active_node(node);
-+
-+	parent = rb_parent(node);
-+	if (parent == NULL)
-+		return;
-+
-+	if (node == parent->rb_left && parent->rb_right != NULL)
-+		bfq_update_active_node(parent->rb_right);
-+	else if (parent->rb_left != NULL)
-+		bfq_update_active_node(parent->rb_left);
-+
-+	node = parent;
-+	goto up;
-+}
-+
-+static void bfq_weights_tree_add(struct bfq_data *bfqd,
-+				 struct bfq_entity *entity,
-+				 struct rb_root *root);
-+
-+static void bfq_weights_tree_remove(struct bfq_data *bfqd,
-+				    struct bfq_entity *entity,
-+				    struct rb_root *root);
-+
-+
-+/**
-+ * bfq_active_insert - insert an entity in the active tree of its
-+ *                     group/device.
-+ * @st: the service tree of the entity.
-+ * @entity: the entity being inserted.
-+ *
-+ * The active tree is ordered by finish time, but an extra key is kept
-+ * per each node, containing the minimum value for the start times of
-+ * its children (and the node itself), so it's possible to search for
-+ * the eligible node with the lowest finish time in logarithmic time.
-+ */
-+static void bfq_active_insert(struct bfq_service_tree *st,
-+			      struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *node = &entity->rb_node;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	struct bfq_sched_data *sd = NULL;
-+	struct bfq_group *bfqg = NULL;
-+	struct bfq_data *bfqd = NULL;
-+#endif
-+
-+	bfq_insert(&st->active, entity);
-+
-+	if (node->rb_left != NULL)
-+		node = node->rb_left;
-+	else if (node->rb_right != NULL)
-+		node = node->rb_right;
-+
-+	bfq_update_active_tree(node);
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	sd = entity->sched_data;
-+	bfqg = container_of(sd, struct bfq_group, sched_data);
-+	BUG_ON(!bfqg);
-+	bfqd = (struct bfq_data *)bfqg->bfqd;
-+#endif
-+	if (bfqq != NULL)
-+		list_add(&bfqq->bfqq_list, &bfqq->bfqd->active_list);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	else { /* bfq_group */
-+		BUG_ON(!bfqd);
-+		bfq_weights_tree_add(bfqd, entity, &bfqd->group_weights_tree);
-+	}
-+	if (bfqg != bfqd->root_group) {
-+		BUG_ON(!bfqg);
-+		BUG_ON(!bfqd);
-+		bfqg->active_entities++;
-+		if (bfqg->active_entities == 2)
-+			bfqd->active_numerous_groups++;
-+	}
-+#endif
-+}
-+
-+/**
-+ * bfq_ioprio_to_weight - calc a weight from an ioprio.
-+ * @ioprio: the ioprio value to convert.
-+ */
-+static inline unsigned short bfq_ioprio_to_weight(int ioprio)
-+{
-+	BUG_ON(ioprio < 0 || ioprio >= IOPRIO_BE_NR);
-+	return IOPRIO_BE_NR - ioprio;
-+}
-+
-+/**
-+ * bfq_weight_to_ioprio - calc an ioprio from a weight.
-+ * @weight: the weight value to convert.
-+ *
-+ * To preserve as mush as possible the old only-ioprio user interface,
-+ * 0 is used as an escape ioprio value for weights (numerically) equal or
-+ * larger than IOPRIO_BE_NR
-+ */
-+static inline unsigned short bfq_weight_to_ioprio(int weight)
-+{
-+	BUG_ON(weight < BFQ_MIN_WEIGHT || weight > BFQ_MAX_WEIGHT);
-+	return IOPRIO_BE_NR - weight < 0 ? 0 : IOPRIO_BE_NR - weight;
-+}
-+
-+static inline void bfq_get_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+
-+	if (bfqq != NULL) {
-+		atomic_inc(&bfqq->ref);
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "get_entity: %p %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+	}
-+}
-+
-+/**
-+ * bfq_find_deepest - find the deepest node that an extraction can modify.
-+ * @node: the node being removed.
-+ *
-+ * Do the first step of an extraction in an rb tree, looking for the
-+ * node that will replace @node, and returning the deepest node that
-+ * the following modifications to the tree can touch.  If @node is the
-+ * last node in the tree return %NULL.
-+ */
-+static struct rb_node *bfq_find_deepest(struct rb_node *node)
-+{
-+	struct rb_node *deepest;
-+
-+	if (node->rb_right == NULL && node->rb_left == NULL)
-+		deepest = rb_parent(node);
-+	else if (node->rb_right == NULL)
-+		deepest = node->rb_left;
-+	else if (node->rb_left == NULL)
-+		deepest = node->rb_right;
-+	else {
-+		deepest = rb_next(node);
-+		if (deepest->rb_right != NULL)
-+			deepest = deepest->rb_right;
-+		else if (rb_parent(deepest) != node)
-+			deepest = rb_parent(deepest);
-+	}
-+
-+	return deepest;
-+}
-+
-+/**
-+ * bfq_active_extract - remove an entity from the active tree.
-+ * @st: the service_tree containing the tree.
-+ * @entity: the entity being removed.
-+ */
-+static void bfq_active_extract(struct bfq_service_tree *st,
-+			       struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct rb_node *node;
-+#ifdef CONFIG_CGROUP_BFQIO
-+	struct bfq_sched_data *sd = NULL;
-+	struct bfq_group *bfqg = NULL;
-+	struct bfq_data *bfqd = NULL;
-+#endif
-+
-+	node = bfq_find_deepest(&entity->rb_node);
-+	bfq_extract(&st->active, entity);
-+
-+	if (node != NULL)
-+		bfq_update_active_tree(node);
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	sd = entity->sched_data;
-+	bfqg = container_of(sd, struct bfq_group, sched_data);
-+	BUG_ON(!bfqg);
-+	bfqd = (struct bfq_data *)bfqg->bfqd;
-+#endif
-+	if (bfqq != NULL)
-+		list_del(&bfqq->bfqq_list);
-+#ifdef CONFIG_CGROUP_BFQIO
-+	else { /* bfq_group */
-+		BUG_ON(!bfqd);
-+		bfq_weights_tree_remove(bfqd, entity,
-+					&bfqd->group_weights_tree);
-+	}
-+	if (bfqg != bfqd->root_group) {
-+		BUG_ON(!bfqg);
-+		BUG_ON(!bfqd);
-+		BUG_ON(!bfqg->active_entities);
-+		bfqg->active_entities--;
-+		if (bfqg->active_entities == 1) {
-+			BUG_ON(!bfqd->active_numerous_groups);
-+			bfqd->active_numerous_groups--;
-+		}
-+	}
-+#endif
-+}
-+
-+/**
-+ * bfq_idle_insert - insert an entity into the idle tree.
-+ * @st: the service tree containing the tree.
-+ * @entity: the entity to insert.
-+ */
-+static void bfq_idle_insert(struct bfq_service_tree *st,
-+			    struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct bfq_entity *first_idle = st->first_idle;
-+	struct bfq_entity *last_idle = st->last_idle;
-+
-+	if (first_idle == NULL || bfq_gt(first_idle->finish, entity->finish))
-+		st->first_idle = entity;
-+	if (last_idle == NULL || bfq_gt(entity->finish, last_idle->finish))
-+		st->last_idle = entity;
-+
-+	bfq_insert(&st->idle, entity);
-+
-+	if (bfqq != NULL)
-+		list_add(&bfqq->bfqq_list, &bfqq->bfqd->idle_list);
-+}
-+
-+/**
-+ * bfq_forget_entity - remove an entity from the wfq trees.
-+ * @st: the service tree.
-+ * @entity: the entity being removed.
-+ *
-+ * Update the device status and forget everything about @entity, putting
-+ * the device reference to it, if it is a queue.  Entities belonging to
-+ * groups are not refcounted.
-+ */
-+static void bfq_forget_entity(struct bfq_service_tree *st,
-+			      struct bfq_entity *entity)
-+{
-+	struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(!entity->on_st);
-+
-+	entity->on_st = 0;
-+	st->wsum -= entity->weight;
-+	if (bfqq != NULL) {
-+		sd = entity->sched_data;
-+		bfq_log_bfqq(bfqq->bfqd, bfqq, "forget_entity: %p %d",
-+			     bfqq, atomic_read(&bfqq->ref));
-+		bfq_put_queue(bfqq);
-+	}
-+}
-+
-+/**
-+ * bfq_put_idle_entity - release the idle tree ref of an entity.
-+ * @st: service tree for the entity.
-+ * @entity: the entity being released.
-+ */
-+static void bfq_put_idle_entity(struct bfq_service_tree *st,
-+				struct bfq_entity *entity)
-+{
-+	bfq_idle_extract(st, entity);
-+	bfq_forget_entity(st, entity);
-+}
-+
-+/**
-+ * bfq_forget_idle - update the idle tree if necessary.
-+ * @st: the service tree to act upon.
-+ *
-+ * To preserve the global O(log N) complexity we only remove one entry here;
-+ * as the idle tree will not grow indefinitely this can be done safely.
-+ */
-+static void bfq_forget_idle(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *first_idle = st->first_idle;
-+	struct bfq_entity *last_idle = st->last_idle;
-+
-+	if (RB_EMPTY_ROOT(&st->active) && last_idle != NULL &&
-+	    !bfq_gt(last_idle->finish, st->vtime)) {
-+		/*
-+		 * Forget the whole idle tree, increasing the vtime past
-+		 * the last finish time of idle entities.
-+		 */
-+		st->vtime = last_idle->finish;
-+	}
-+
-+	if (first_idle != NULL && !bfq_gt(first_idle->finish, st->vtime))
-+		bfq_put_idle_entity(st, first_idle);
-+}
-+
-+static struct bfq_service_tree *
-+__bfq_entity_update_weight_prio(struct bfq_service_tree *old_st,
-+			 struct bfq_entity *entity)
-+{
-+	struct bfq_service_tree *new_st = old_st;
-+
-+	if (entity->ioprio_changed) {
-+		struct bfq_queue *bfqq = bfq_entity_to_bfqq(entity);
-+		unsigned short prev_weight, new_weight;
-+		struct bfq_data *bfqd = NULL;
-+		struct rb_root *root;
-+#ifdef CONFIG_CGROUP_BFQIO
-+		struct bfq_sched_data *sd;
-+		struct bfq_group *bfqg;
-+#endif
-+
-+		if (bfqq != NULL)
-+			bfqd = bfqq->bfqd;
-+#ifdef CONFIG_CGROUP_BFQIO
-+		else {
-+			sd = entity->my_sched_data;
-+			bfqg = container_of(sd, struct bfq_group, sched_data);
-+			BUG_ON(!bfqg);
-+			bfqd = (struct bfq_data *)bfqg->bfqd;
-+			BUG_ON(!bfqd);
-+		}
-+#endif
-+
-+		BUG_ON(old_st->wsum < entity->weight);
-+		old_st->wsum -= entity->weight;
-+
-+		if (entity->new_weight != entity->orig_weight) {
-+			entity->orig_weight = entity->new_weight;
-+			entity->ioprio =
-+				bfq_weight_to_ioprio(entity->orig_weight);
-+		} else if (entity->new_ioprio != entity->ioprio) {
-+			entity->ioprio = entity->new_ioprio;
-+			entity->orig_weight =
-+					bfq_ioprio_to_weight(entity->ioprio);
-+		} else
-+			entity->new_weight = entity->orig_weight =
-+				bfq_ioprio_to_weight(entity->ioprio);
-+
-+		entity->ioprio_class = entity->new_ioprio_class;
-+		entity->ioprio_changed = 0;
-+
-+		/*
-+		 * NOTE: here we may be changing the weight too early,
-+		 * this will cause unfairness.  The correct approach
-+		 * would have required additional complexity to defer
-+		 * weight changes to the proper time instants (i.e.,
-+		 * when entity->finish <= old_st->vtime).
-+		 */
-+		new_st = bfq_entity_service_tree(entity);
-+
-+		prev_weight = entity->weight;
-+		new_weight = entity->orig_weight *
-+			     (bfqq != NULL ? bfqq->wr_coeff : 1);
-+		/*
-+		 * If the weight of the entity changes, remove the entity
-+		 * from its old weight counter (if there is a counter
-+		 * associated with the entity), and add it to the counter
-+		 * associated with its new weight.
-+		 */
-+		if (prev_weight != new_weight) {
-+			root = bfqq ? &bfqd->queue_weights_tree :
-+				      &bfqd->group_weights_tree;
-+			bfq_weights_tree_remove(bfqd, entity, root);
-+		}
-+		entity->weight = new_weight;
-+		/*
-+		 * Add the entity to its weights tree only if it is
-+		 * not associated with a weight-raised queue.
-+		 */
-+		if (prev_weight != new_weight &&
-+		    (bfqq ? bfqq->wr_coeff == 1 : 1))
-+			/* If we get here, root has been initialized. */
-+			bfq_weights_tree_add(bfqd, entity, root);
-+
-+		new_st->wsum += entity->weight;
-+
-+		if (new_st != old_st)
-+			entity->start = new_st->vtime;
-+	}
-+
-+	return new_st;
-+}
-+
-+/**
-+ * bfq_bfqq_served - update the scheduler status after selection for
-+ *                   service.
-+ * @bfqq: the queue being served.
-+ * @served: bytes to transfer.
-+ *
-+ * NOTE: this can be optimized, as the timestamps of upper level entities
-+ * are synchronized every time a new bfqq is selected for service.  By now,
-+ * we keep it to better check consistency.
-+ */
-+static void bfq_bfqq_served(struct bfq_queue *bfqq, unsigned long served)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+	struct bfq_service_tree *st;
-+
-+	for_each_entity(entity) {
-+		st = bfq_entity_service_tree(entity);
-+
-+		entity->service += served;
-+		BUG_ON(entity->service > entity->budget);
-+		BUG_ON(st->wsum == 0);
-+
-+		st->vtime += bfq_delta(served, st->wsum);
-+		bfq_forget_idle(st);
-+	}
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "bfqq_served %lu secs", served);
-+}
-+
-+/**
-+ * bfq_bfqq_charge_full_budget - set the service to the entity budget.
-+ * @bfqq: the queue that needs a service update.
-+ *
-+ * When it's not possible to be fair in the service domain, because
-+ * a queue is not consuming its budget fast enough (the meaning of
-+ * fast depends on the timeout parameter), we charge it a full
-+ * budget.  In this way we should obtain a sort of time-domain
-+ * fairness among all the seeky/slow queues.
-+ */
-+static inline void bfq_bfqq_charge_full_budget(struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "charge_full_budget");
-+
-+	bfq_bfqq_served(bfqq, entity->budget - entity->service);
-+}
-+
-+/**
-+ * __bfq_activate_entity - activate an entity.
-+ * @entity: the entity being activated.
-+ *
-+ * Called whenever an entity is activated, i.e., it is not active and one
-+ * of its children receives a new request, or has to be reactivated due to
-+ * budget exhaustion.  It uses the current budget of the entity (and the
-+ * service received if @entity is active) of the queue to calculate its
-+ * timestamps.
-+ */
-+static void __bfq_activate_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+
-+	if (entity == sd->in_service_entity) {
-+		BUG_ON(entity->tree != NULL);
-+		/*
-+		 * If we are requeueing the current entity we have
-+		 * to take care of not charging to it service it has
-+		 * not received.
-+		 */
-+		bfq_calc_finish(entity, entity->service);
-+		entity->start = entity->finish;
-+		sd->in_service_entity = NULL;
-+	} else if (entity->tree == &st->active) {
-+		/*
-+		 * Requeueing an entity due to a change of some
-+		 * next_in_service entity below it.  We reuse the
-+		 * old start time.
-+		 */
-+		bfq_active_extract(st, entity);
-+	} else if (entity->tree == &st->idle) {
-+		/*
-+		 * Must be on the idle tree, bfq_idle_extract() will
-+		 * check for that.
-+		 */
-+		bfq_idle_extract(st, entity);
-+		entity->start = bfq_gt(st->vtime, entity->finish) ?
-+				       st->vtime : entity->finish;
-+	} else {
-+		/*
-+		 * The finish time of the entity may be invalid, and
-+		 * it is in the past for sure, otherwise the queue
-+		 * would have been on the idle tree.
-+		 */
-+		entity->start = st->vtime;
-+		st->wsum += entity->weight;
-+		bfq_get_entity(entity);
-+
-+		BUG_ON(entity->on_st);
-+		entity->on_st = 1;
-+	}
-+
-+	st = __bfq_entity_update_weight_prio(st, entity);
-+	bfq_calc_finish(entity, entity->budget);
-+	bfq_active_insert(st, entity);
-+}
-+
-+/**
-+ * bfq_activate_entity - activate an entity and its ancestors if necessary.
-+ * @entity: the entity to activate.
-+ *
-+ * Activate @entity and all the entities on the path from it to the root.
-+ */
-+static void bfq_activate_entity(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sd;
-+
-+	for_each_entity(entity) {
-+		__bfq_activate_entity(entity);
-+
-+		sd = entity->sched_data;
-+		if (!bfq_update_next_in_service(sd))
-+			/*
-+			 * No need to propagate the activation to the
-+			 * upper entities, as they will be updated when
-+			 * the in-service entity is rescheduled.
-+			 */
-+			break;
-+	}
-+}
-+
-+/**
-+ * __bfq_deactivate_entity - deactivate an entity from its service tree.
-+ * @entity: the entity to deactivate.
-+ * @requeue: if false, the entity will not be put into the idle tree.
-+ *
-+ * Deactivate an entity, independently from its previous state.  If the
-+ * entity was not on a service tree just return, otherwise if it is on
-+ * any scheduler tree, extract it from that tree, and if necessary
-+ * and if the caller did not specify @requeue, put it on the idle tree.
-+ *
-+ * Return %1 if the caller should update the entity hierarchy, i.e.,
-+ * if the entity was in service or if it was the next_in_service for
-+ * its sched_data; return %0 otherwise.
-+ */
-+static int __bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
-+{
-+	struct bfq_sched_data *sd = entity->sched_data;
-+	struct bfq_service_tree *st = bfq_entity_service_tree(entity);
-+	int was_in_service = entity == sd->in_service_entity;
-+	int ret = 0;
-+
-+	if (!entity->on_st)
-+		return 0;
-+
-+	BUG_ON(was_in_service && entity->tree != NULL);
-+
-+	if (was_in_service) {
-+		bfq_calc_finish(entity, entity->service);
-+		sd->in_service_entity = NULL;
-+	} else if (entity->tree == &st->active)
-+		bfq_active_extract(st, entity);
-+	else if (entity->tree == &st->idle)
-+		bfq_idle_extract(st, entity);
-+	else if (entity->tree != NULL)
-+		BUG();
-+
-+	if (was_in_service || sd->next_in_service == entity)
-+		ret = bfq_update_next_in_service(sd);
-+
-+	if (!requeue || !bfq_gt(entity->finish, st->vtime))
-+		bfq_forget_entity(st, entity);
-+	else
-+		bfq_idle_insert(st, entity);
-+
-+	BUG_ON(sd->in_service_entity == entity);
-+	BUG_ON(sd->next_in_service == entity);
-+
-+	return ret;
-+}
-+
-+/**
-+ * bfq_deactivate_entity - deactivate an entity.
-+ * @entity: the entity to deactivate.
-+ * @requeue: true if the entity can be put on the idle tree
-+ */
-+static void bfq_deactivate_entity(struct bfq_entity *entity, int requeue)
-+{
-+	struct bfq_sched_data *sd;
-+	struct bfq_entity *parent;
-+
-+	for_each_entity_safe(entity, parent) {
-+		sd = entity->sched_data;
-+
-+		if (!__bfq_deactivate_entity(entity, requeue))
-+			/*
-+			 * The parent entity is still backlogged, and
-+			 * we don't need to update it as it is still
-+			 * in service.
-+			 */
-+			break;
-+
-+		if (sd->next_in_service != NULL)
-+			/*
-+			 * The parent entity is still backlogged and
-+			 * the budgets on the path towards the root
-+			 * need to be updated.
-+			 */
-+			goto update;
-+
-+		/*
-+		 * If we reach there the parent is no more backlogged and
-+		 * we want to propagate the dequeue upwards.
-+		 */
-+		requeue = 1;
-+	}
-+
-+	return;
-+
-+update:
-+	entity = parent;
-+	for_each_entity(entity) {
-+		__bfq_activate_entity(entity);
-+
-+		sd = entity->sched_data;
-+		if (!bfq_update_next_in_service(sd))
-+			break;
-+	}
-+}
-+
-+/**
-+ * bfq_update_vtime - update vtime if necessary.
-+ * @st: the service tree to act upon.
-+ *
-+ * If necessary update the service tree vtime to have at least one
-+ * eligible entity, skipping to its start time.  Assumes that the
-+ * active tree of the device is not empty.
-+ *
-+ * NOTE: this hierarchical implementation updates vtimes quite often,
-+ * we may end up with reactivated processes getting timestamps after a
-+ * vtime skip done because we needed a ->first_active entity on some
-+ * intermediate node.
-+ */
-+static void bfq_update_vtime(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entry;
-+	struct rb_node *node = st->active.rb_node;
-+
-+	entry = rb_entry(node, struct bfq_entity, rb_node);
-+	if (bfq_gt(entry->min_start, st->vtime)) {
-+		st->vtime = entry->min_start;
-+		bfq_forget_idle(st);
-+	}
-+}
-+
-+/**
-+ * bfq_first_active_entity - find the eligible entity with
-+ *                           the smallest finish time
-+ * @st: the service tree to select from.
-+ *
-+ * This function searches the first schedulable entity, starting from the
-+ * root of the tree and going on the left every time on this side there is
-+ * a subtree with at least one eligible (start >= vtime) entity. The path on
-+ * the right is followed only if a) the left subtree contains no eligible
-+ * entities and b) no eligible entity has been found yet.
-+ */
-+static struct bfq_entity *bfq_first_active_entity(struct bfq_service_tree *st)
-+{
-+	struct bfq_entity *entry, *first = NULL;
-+	struct rb_node *node = st->active.rb_node;
-+
-+	while (node != NULL) {
-+		entry = rb_entry(node, struct bfq_entity, rb_node);
-+left:
-+		if (!bfq_gt(entry->start, st->vtime))
-+			first = entry;
-+
-+		BUG_ON(bfq_gt(entry->min_start, st->vtime));
-+
-+		if (node->rb_left != NULL) {
-+			entry = rb_entry(node->rb_left,
-+					 struct bfq_entity, rb_node);
-+			if (!bfq_gt(entry->min_start, st->vtime)) {
-+				node = node->rb_left;
-+				goto left;
-+			}
-+		}
-+		if (first != NULL)
-+			break;
-+		node = node->rb_right;
-+	}
-+
-+	BUG_ON(first == NULL && !RB_EMPTY_ROOT(&st->active));
-+	return first;
-+}
-+
-+/**
-+ * __bfq_lookup_next_entity - return the first eligible entity in @st.
-+ * @st: the service tree.
-+ *
-+ * Update the virtual time in @st and return the first eligible entity
-+ * it contains.
-+ */
-+static struct bfq_entity *__bfq_lookup_next_entity(struct bfq_service_tree *st,
-+						   bool force)
-+{
-+	struct bfq_entity *entity, *new_next_in_service = NULL;
-+
-+	if (RB_EMPTY_ROOT(&st->active))
-+		return NULL;
-+
-+	bfq_update_vtime(st);
-+	entity = bfq_first_active_entity(st);
-+	BUG_ON(bfq_gt(entity->start, st->vtime));
-+
-+	/*
-+	 * If the chosen entity does not match with the sched_data's
-+	 * next_in_service and we are forcedly serving the IDLE priority
-+	 * class tree, bubble up budget update.
-+	 */
-+	if (unlikely(force && entity != entity->sched_data->next_in_service)) {
-+		new_next_in_service = entity;
-+		for_each_entity(new_next_in_service)
-+			bfq_update_budget(new_next_in_service);
-+	}
-+
-+	return entity;
-+}
-+
-+/**
-+ * bfq_lookup_next_entity - return the first eligible entity in @sd.
-+ * @sd: the sched_data.
-+ * @extract: if true the returned entity will be also extracted from @sd.
-+ *
-+ * NOTE: since we cache the next_in_service entity at each level of the
-+ * hierarchy, the complexity of the lookup can be decreased with
-+ * absolutely no effort just returning the cached next_in_service value;
-+ * we prefer to do full lookups to test the consistency of * the data
-+ * structures.
-+ */
-+static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
-+						 int extract,
-+						 struct bfq_data *bfqd)
-+{
-+	struct bfq_service_tree *st = sd->service_tree;
-+	struct bfq_entity *entity;
-+	int i = 0;
-+
-+	BUG_ON(sd->in_service_entity != NULL);
-+
-+	if (bfqd != NULL &&
-+	    jiffies - bfqd->bfq_class_idle_last_service > BFQ_CL_IDLE_TIMEOUT) {
-+		entity = __bfq_lookup_next_entity(st + BFQ_IOPRIO_CLASSES - 1,
-+						  true);
-+		if (entity != NULL) {
-+			i = BFQ_IOPRIO_CLASSES - 1;
-+			bfqd->bfq_class_idle_last_service = jiffies;
-+			sd->next_in_service = entity;
-+		}
-+	}
-+	for (; i < BFQ_IOPRIO_CLASSES; i++) {
-+		entity = __bfq_lookup_next_entity(st + i, false);
-+		if (entity != NULL) {
-+			if (extract) {
-+				bfq_check_next_in_service(sd, entity);
-+				bfq_active_extract(st + i, entity);
-+				sd->in_service_entity = entity;
-+				sd->next_in_service = NULL;
-+			}
-+			break;
-+		}
-+	}
-+
-+	return entity;
-+}
-+
-+/*
-+ * Get next queue for service.
-+ */
-+static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_entity *entity = NULL;
-+	struct bfq_sched_data *sd;
-+	struct bfq_queue *bfqq;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	if (bfqd->busy_queues == 0)
-+		return NULL;
-+
-+	sd = &bfqd->root_group->sched_data;
-+	for (; sd != NULL; sd = entity->my_sched_data) {
-+		entity = bfq_lookup_next_entity(sd, 1, bfqd);
-+		BUG_ON(entity == NULL);
-+		entity->service = 0;
-+	}
-+
-+	bfqq = bfq_entity_to_bfqq(entity);
-+	BUG_ON(bfqq == NULL);
-+
-+	return bfqq;
-+}
-+
-+/*
-+ * Forced extraction of the given queue.
-+ */
-+static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
-+				      struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity;
-+	struct bfq_sched_data *sd;
-+
-+	BUG_ON(bfqd->in_service_queue != NULL);
-+
-+	entity = &bfqq->entity;
-+	/*
-+	 * Bubble up extraction/update from the leaf to the root.
-+	*/
-+	for_each_entity(entity) {
-+		sd = entity->sched_data;
-+		bfq_update_budget(entity);
-+		bfq_update_vtime(bfq_entity_service_tree(entity));
-+		bfq_active_extract(bfq_entity_service_tree(entity), entity);
-+		sd->in_service_entity = entity;
-+		sd->next_in_service = NULL;
-+		entity->service = 0;
-+	}
-+
-+	return;
-+}
-+
-+static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
-+{
-+	if (bfqd->in_service_bic != NULL) {
-+		put_io_context(bfqd->in_service_bic->icq.ioc);
-+		bfqd->in_service_bic = NULL;
-+	}
-+
-+	bfqd->in_service_queue = NULL;
-+	del_timer(&bfqd->idle_slice_timer);
-+}
-+
-+static void bfq_deactivate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+				int requeue)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	if (bfqq == bfqd->in_service_queue)
-+		__bfq_bfqd_reset_in_service(bfqd);
-+
-+	bfq_deactivate_entity(entity, requeue);
-+}
-+
-+static void bfq_activate_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	struct bfq_entity *entity = &bfqq->entity;
-+
-+	bfq_activate_entity(entity);
-+}
-+
-+/*
-+ * Called when the bfqq no longer has requests pending, remove it from
-+ * the service tree.
-+ */
-+static void bfq_del_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+			      int requeue)
-+{
-+	BUG_ON(!bfq_bfqq_busy(bfqq));
-+	BUG_ON(!RB_EMPTY_ROOT(&bfqq->sort_list));
-+
-+	bfq_log_bfqq(bfqd, bfqq, "del from busy");
-+
-+	bfq_clear_bfqq_busy(bfqq);
-+
-+	BUG_ON(bfqd->busy_queues == 0);
-+	bfqd->busy_queues--;
-+
-+	if (!bfqq->dispatched) {
-+		bfq_weights_tree_remove(bfqd, &bfqq->entity,
-+					&bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			BUG_ON(!bfqd->busy_in_flight_queues);
-+			bfqd->busy_in_flight_queues--;
-+			if (bfq_bfqq_constantly_seeky(bfqq)) {
-+				BUG_ON(!bfqd->
-+					const_seeky_busy_in_flight_queues);
-+				bfqd->const_seeky_busy_in_flight_queues--;
-+			}
-+		}
-+	}
-+	if (bfqq->wr_coeff > 1)
-+		bfqd->wr_busy_queues--;
-+
-+	bfq_deactivate_bfqq(bfqd, bfqq, requeue);
-+}
-+
-+/*
-+ * Called when an inactive queue receives a new request.
-+ */
-+static void bfq_add_bfqq_busy(struct bfq_data *bfqd, struct bfq_queue *bfqq)
-+{
-+	BUG_ON(bfq_bfqq_busy(bfqq));
-+	BUG_ON(bfqq == bfqd->in_service_queue);
-+
-+	bfq_log_bfqq(bfqd, bfqq, "add to busy");
-+
-+	bfq_activate_bfqq(bfqd, bfqq);
-+
-+	bfq_mark_bfqq_busy(bfqq);
-+	bfqd->busy_queues++;
-+
-+	if (!bfqq->dispatched) {
-+		if (bfqq->wr_coeff == 1)
-+			bfq_weights_tree_add(bfqd, &bfqq->entity,
-+					     &bfqd->queue_weights_tree);
-+		if (!blk_queue_nonrot(bfqd->queue)) {
-+			bfqd->busy_in_flight_queues++;
-+			if (bfq_bfqq_constantly_seeky(bfqq))
-+				bfqd->const_seeky_busy_in_flight_queues++;
-+		}
-+	}
-+	if (bfqq->wr_coeff > 1)
-+		bfqd->wr_busy_queues++;
-+}
-diff --git a/block/bfq.h b/block/bfq.h
-new file mode 100644
-index 0000000..a503cb4
---- /dev/null
-+++ b/block/bfq.h
-@@ -0,0 +1,742 @@
-+/*
-+ * BFQ-v7r5 for 3.13.0: data structures and common functions prototypes.
-+ *
-+ * Based on ideas and code from CFQ:
-+ * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk>
-+ *
-+ * Copyright (C) 2008 Fabio Checconi <fabio@gandalf.sssup.it>
-+ *		      Paolo Valente <paolo.valente@unimore.it>
-+ *
-+ * Copyright (C) 2010 Paolo Valente <paolo.valente@unimore.it>
-+ */
-+
-+#ifndef _BFQ_H
-+#define _BFQ_H
-+
-+#include <linux/blktrace_api.h>
-+#include <linux/hrtimer.h>
-+#include <linux/ioprio.h>
-+#include <linux/rbtree.h>
-+
-+#define BFQ_IOPRIO_CLASSES	3
-+#define BFQ_CL_IDLE_TIMEOUT	(HZ/5)
-+
-+#define BFQ_MIN_WEIGHT	1
-+#define BFQ_MAX_WEIGHT	1000
-+
-+#define BFQ_DEFAULT_GRP_WEIGHT	10
-+#define BFQ_DEFAULT_GRP_IOPRIO	0
-+#define BFQ_DEFAULT_GRP_CLASS	IOPRIO_CLASS_BE
-+
-+struct bfq_entity;
-+
-+/**
-+ * struct bfq_service_tree - per ioprio_class service tree.
-+ * @active: tree for active entities (i.e., those backlogged).
-+ * @idle: tree for idle entities (i.e., those not backlogged, with V <= F_i).
-+ * @first_idle: idle entity with minimum F_i.
-+ * @last_idle: idle entity with maximum F_i.
-+ * @vtime: scheduler virtual time.
-+ * @wsum: scheduler weight sum; active and idle entities contribute to it.
-+ *
-+ * Each service tree represents a B-WF2Q+ scheduler on its own.  Each
-+ * ioprio_class has its own independent scheduler, and so its own
-+ * bfq_service_tree.  All the fields are protected by the queue lock
-+ * of the containing bfqd.
-+ */
-+struct bfq_service_tree {
-+	struct rb_root active;
-+	struct rb_root idle;
-+
-+	struct bfq_entity *first_idle;
-+	struct bfq_entity *last_idle;
-+
-+	u64 vtime;
-+	unsigned long wsum;
-+};
-+
-+/**
-+ * struct bfq_sched_data - multi-class scheduler.
-+ * @in_service_entity: entity in service.
-+ * @next_in_service: head-of-the-line entity in the scheduler.
-+ * @service_tree: array of service trees, one per ioprio_class.
-+ *
-+ * bfq_sched_data is the basic scheduler queue.  It supports three
-+ * ioprio_classes, and can be used either as a toplevel queue or as
-+ * an intermediate queue on a hierarchical setup.
-+ * @next_in_service points to the active entity of the sched_data
-+ * service trees that will be scheduled next.
-+ *
-+ * The supported ioprio_classes are the same as in CFQ, in descending
-+ * priority order, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE.
-+ * Requests from higher priority queues are served before all the
-+ * requests from lower priority queues; among requests of the same
-+ * queue requests are served according to B-WF2Q+.
-+ * All the fields are protected by the queue lock of the containing bfqd.
-+ */
-+struct bfq_sched_data {
-+	struct bfq_entity *in_service_entity;
-+	struct bfq_entity *next_in_service;
-+	struct bfq_service_tree service_tree[BFQ_IOPRIO_CLASSES];
-+};
-+
-+/**
-+ * struct bfq_weight_counter - counter of the number of all active entities
-+ *                             with a given weight.
-+ * @weight: weight of the entities that this counter refers to.
-+ * @num_active: number of active entities with this weight.
-+ * @weights_node: weights tree member (see bfq_data's @queue_weights_tree
-+ *                and @group_weights_tree).
-+ */
-+struct bfq_weight_counter {
-+	short int weight;
-+	unsigned int num_active;
-+	struct rb_node weights_node;
-+};
-+
-+/**
-+ * struct bfq_entity - schedulable entity.
-+ * @rb_node: service_tree member.
-+ * @weight_counter: pointer to the weight counter associated with this entity.
-+ * @on_st: flag, true if the entity is on a tree (either the active or
-+ *         the idle one of its service_tree).
-+ * @finish: B-WF2Q+ finish timestamp (aka F_i).
-+ * @start: B-WF2Q+ start timestamp (aka S_i).
-+ * @tree: tree the entity is enqueued into; %NULL if not on a tree.
-+ * @min_start: minimum start time of the (active) subtree rooted at
-+ *             this entity; used for O(log N) lookups into active trees.
-+ * @service: service received during the last round of service.
-+ * @budget: budget used to calculate F_i; F_i = S_i + @budget / @weight.
-+ * @weight: weight of the queue
-+ * @parent: parent entity, for hierarchical scheduling.
-+ * @my_sched_data: for non-leaf nodes in the cgroup hierarchy, the
-+ *                 associated scheduler queue, %NULL on leaf nodes.
-+ * @sched_data: the scheduler queue this entity belongs to.
-+ * @ioprio: the ioprio in use.
-+ * @new_weight: when a weight change is requested, the new weight value.
-+ * @orig_weight: original weight, used to implement weight boosting
-+ * @new_ioprio: when an ioprio change is requested, the new ioprio value.
-+ * @ioprio_class: the ioprio_class in use.
-+ * @new_ioprio_class: when an ioprio_class change is requested, the new
-+ *                    ioprio_class value.
-+ * @ioprio_changed: flag, true when the user requested a weight, ioprio or
-+ *                  ioprio_class change.
-+ *
-+ * A bfq_entity is used to represent either a bfq_queue (leaf node in the
-+ * cgroup hierarchy) or a bfq_group into the upper level scheduler.  Each
-+ * entity belongs to the sched_data of the parent group in the cgroup
-+ * hierarchy.  Non-leaf entities have also their own sched_data, stored
-+ * in @my_sched_data.
-+ *
-+ * Each entity stores independently its priority values; this would
-+ * allow different weights on different devices, but this
-+ * functionality is not exported to userspace by now.  Priorities and
-+ * weights are updated lazily, first storing the new values into the
-+ * new_* fields, then setting the @ioprio_changed flag.  As soon as
-+ * there is a transition in the entity state that allows the priority
-+ * update to take place the effective and the requested priority
-+ * values are synchronized.
-+ *
-+ * Unless cgroups are used, the weight value is calculated from the
-+ * ioprio to export the same interface as CFQ.  When dealing with
-+ * ``well-behaved'' queues (i.e., queues that do not spend too much
-+ * time to consume their budget and have true sequential behavior, and
-+ * when there are no external factors breaking anticipation) the
-+ * relative weights at each level of the cgroups hierarchy should be
-+ * guaranteed.  All the fields are protected by the queue lock of the
-+ * containing bfqd.
-+ */
-+struct bfq_entity {
-+	struct rb_node rb_node;
-+	struct bfq_weight_counter *weight_counter;
-+
-+	int on_st;
-+
-+	u64 finish;
-+	u64 start;
-+
-+	struct rb_root *tree;
-+
-+	u64 min_start;
-+
-+	unsigned long service, budget;
-+	unsigned short weight, new_weight;
-+	unsigned short orig_weight;
-+
-+	struct bfq_entity *parent;
-+
-+	struct bfq_sched_data *my_sched_data;
-+	struct bfq_sched_data *sched_data;
-+
-+	unsigned short ioprio, new_ioprio;
-+	unsigned short ioprio_class, new_ioprio_class;
-+
-+	int ioprio_changed;
-+};
-+
-+struct bfq_group;
-+
-+/**
-+ * struct bfq_queue - leaf schedulable entity.
-+ * @ref: reference counter.
-+ * @bfqd: parent bfq_data.
-+ * @new_bfqq: shared bfq_queue if queue is cooperating with
-+ *           one or more other queues.
-+ * @pos_node: request-position tree member (see bfq_data's @rq_pos_tree).
-+ * @pos_root: request-position tree root (see bfq_data's @rq_pos_tree).
-+ * @sort_list: sorted list of pending requests.
-+ * @next_rq: if fifo isn't expired, next request to serve.
-+ * @queued: nr of requests queued in @sort_list.
-+ * @allocated: currently allocated requests.
-+ * @meta_pending: pending metadata requests.
-+ * @fifo: fifo list of requests in sort_list.
-+ * @entity: entity representing this queue in the scheduler.
-+ * @max_budget: maximum budget allowed from the feedback mechanism.
-+ * @budget_timeout: budget expiration (in jiffies).
-+ * @dispatched: number of requests on the dispatch list or inside driver.
-+ * @flags: status flags.
-+ * @bfqq_list: node for active/idle bfqq list inside our bfqd.
-+ * @seek_samples: number of seeks sampled
-+ * @seek_total: sum of the distances of the seeks sampled
-+ * @seek_mean: mean seek distance
-+ * @last_request_pos: position of the last request enqueued
-+ * @requests_within_timer: number of consecutive pairs of request completion
-+ *                         and arrival, such that the queue becomes idle
-+ *                         after the completion, but the next request arrives
-+ *                         within an idle time slice; used only if the queue's
-+ *                         IO_bound has been cleared.
-+ * @pid: pid of the process owning the queue, used for logging purposes.
-+ * @last_wr_start_finish: start time of the current weight-raising period if
-+ *                        the @bfq-queue is being weight-raised, otherwise
-+ *                        finish time of the last weight-raising period
-+ * @wr_cur_max_time: current max raising time for this queue
-+ * @soft_rt_next_start: minimum time instant such that, only if a new
-+ *                      request is enqueued after this time instant in an
-+ *                      idle @bfq_queue with no outstanding requests, then
-+ *                      the task associated with the queue it is deemed as
-+ *                      soft real-time (see the comments to the function
-+ *                      bfq_bfqq_softrt_next_start()).
-+ * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-+ *                      idle to backlogged
-+ * @service_from_backlogged: cumulative service received from the @bfq_queue
-+ *                           since the last transition from idle to
-+ *                           backlogged
-+ *
-+ * A bfq_queue is a leaf request queue; it can be associated with an io_context
-+ * or more, if it is async or shared between cooperating processes. @cgroup
-+ * holds a reference to the cgroup, to be sure that it does not disappear while
-+ * a bfqq still references it (mostly to avoid races between request issuing and
-+ * task migration followed by cgroup destruction).
-+ * All the fields are protected by the queue lock of the containing bfqd.
-+ */
-+struct bfq_queue {
-+	atomic_t ref;
-+	struct bfq_data *bfqd;
-+
-+	/* fields for cooperating queues handling */
-+	struct bfq_queue *new_bfqq;
-+	struct rb_node pos_node;
-+	struct rb_root *pos_root;
-+
-+	struct rb_root sort_list;
-+	struct request *next_rq;
-+	int queued[2];
-+	int allocated[2];
-+	int meta_pending;
-+	struct list_head fifo;
-+
-+	struct bfq_entity entity;
-+
-+	unsigned long max_budget;
-+	unsigned long budget_timeout;
-+
-+	int dispatched;
-+
-+	unsigned int flags;
-+
-+	struct list_head bfqq_list;
-+
-+	unsigned int seek_samples;
-+	u64 seek_total;
-+	sector_t seek_mean;
-+	sector_t last_request_pos;
-+
-+	unsigned int requests_within_timer;
-+
-+	pid_t pid;
-+
-+	/* weight-raising fields */
-+	unsigned long wr_cur_max_time;
-+	unsigned long soft_rt_next_start;
-+	unsigned long last_wr_start_finish;
-+	unsigned int wr_coeff;
-+	unsigned long last_idle_bklogged;
-+	unsigned long service_from_backlogged;
-+};
-+
-+/**
-+ * struct bfq_ttime - per process thinktime stats.
-+ * @ttime_total: total process thinktime
-+ * @ttime_samples: number of thinktime samples
-+ * @ttime_mean: average process thinktime
-+ */
-+struct bfq_ttime {
-+	unsigned long last_end_request;
-+
-+	unsigned long ttime_total;
-+	unsigned long ttime_samples;
-+	unsigned long ttime_mean;
-+};
-+
-+/**
-+ * struct bfq_io_cq - per (request_queue, io_context) structure.
-+ * @icq: associated io_cq structure
-+ * @bfqq: array of two process queues, the sync and the async
-+ * @ttime: associated @bfq_ttime struct
-+ */
-+struct bfq_io_cq {
-+	struct io_cq icq; /* must be the first member */
-+	struct bfq_queue *bfqq[2];
-+	struct bfq_ttime ttime;
-+	int ioprio;
-+};
-+
-+enum bfq_device_speed {
-+	BFQ_BFQD_FAST,
-+	BFQ_BFQD_SLOW,
-+};
-+
-+/**
-+ * struct bfq_data - per device data structure.
-+ * @queue: request queue for the managed device.
-+ * @root_group: root bfq_group for the device.
-+ * @rq_pos_tree: rbtree sorted by next_request position, used when
-+ *               determining if two or more queues have interleaving
-+ *               requests (see bfq_close_cooperator()).
-+ * @active_numerous_groups: number of bfq_groups containing more than one
-+ *                          active @bfq_entity.
-+ * @queue_weights_tree: rbtree of weight counters of @bfq_queues, sorted by
-+ *                      weight. Used to keep track of whether all @bfq_queues
-+ *                     have the same weight. The tree contains one counter
-+ *                     for each distinct weight associated to some active
-+ *                     and not weight-raised @bfq_queue (see the comments to
-+ *                      the functions bfq_weights_tree_[add|remove] for
-+ *                     further details).
-+ * @group_weights_tree: rbtree of non-queue @bfq_entity weight counters, sorted
-+ *                      by weight. Used to keep track of whether all
-+ *                     @bfq_groups have the same weight. The tree contains
-+ *                     one counter for each distinct weight associated to
-+ *                     some active @bfq_group (see the comments to the
-+ *                     functions bfq_weights_tree_[add|remove] for further
-+ *                     details).
-+ * @busy_queues: number of bfq_queues containing requests (including the
-+ *		 queue in service, even if it is idling).
-+ * @busy_in_flight_queues: number of @bfq_queues containing pending or
-+ *                         in-flight requests, plus the @bfq_queue in
-+ *                         service, even if idle but waiting for the
-+ *                         possible arrival of its next sync request. This
-+ *                         field is updated only if the device is rotational,
-+ *                         but used only if the device is also NCQ-capable.
-+ *                         The reason why the field is updated also for non-
-+ *                         NCQ-capable rotational devices is related to the
-+ *                         fact that the value of @hw_tag may be set also
-+ *                         later than when busy_in_flight_queues may need to
-+ *                         be incremented for the first time(s). Taking also
-+ *                         this possibility into account, to avoid unbalanced
-+ *                         increments/decrements, would imply more overhead
-+ *                         than just updating busy_in_flight_queues
-+ *                         regardless of the value of @hw_tag.
-+ * @const_seeky_busy_in_flight_queues: number of constantly-seeky @bfq_queues
-+ *                                     (that is, seeky queues that expired
-+ *                                     for budget timeout at least once)
-+ *                                     containing pending or in-flight
-+ *                                     requests, including the in-service
-+ *                                     @bfq_queue if constantly seeky. This
-+ *                                     field is updated only if the device
-+ *                                     is rotational, but used only if the
-+ *                                     device is also NCQ-capable (see the
-+ *                                     comments to @busy_in_flight_queues).
-+ * @wr_busy_queues: number of weight-raised busy @bfq_queues.
-+ * @queued: number of queued requests.
-+ * @rq_in_driver: number of requests dispatched and waiting for completion.
-+ * @sync_flight: number of sync requests in the driver.
-+ * @max_rq_in_driver: max number of reqs in driver in the last
-+ *                    @hw_tag_samples completed requests.
-+ * @hw_tag_samples: nr of samples used to calculate hw_tag.
-+ * @hw_tag: flag set to one if the driver is showing a queueing behavior.
-+ * @budgets_assigned: number of budgets assigned.
-+ * @idle_slice_timer: timer set when idling for the next sequential request
-+ *                    from the queue in service.
-+ * @unplug_work: delayed work to restart dispatching on the request queue.
-+ * @in_service_queue: bfq_queue in service.
-+ * @in_service_bic: bfq_io_cq (bic) associated with the @in_service_queue.
-+ * @last_position: on-disk position of the last served request.
-+ * @last_budget_start: beginning of the last budget.
-+ * @last_idling_start: beginning of the last idle slice.
-+ * @peak_rate: peak transfer rate observed for a budget.
-+ * @peak_rate_samples: number of samples used to calculate @peak_rate.
-+ * @bfq_max_budget: maximum budget allotted to a bfq_queue before
-+ *                  rescheduling.
-+ * @group_list: list of all the bfq_groups active on the device.
-+ * @active_list: list of all the bfq_queues active on the device.
-+ * @idle_list: list of all the bfq_queues idle on the device.
-+ * @bfq_quantum: max number of requests dispatched per dispatch round.
-+ * @bfq_fifo_expire: timeout for async/sync requests; when it expires
-+ *                   requests are served in fifo order.
-+ * @bfq_back_penalty: weight of backward seeks wrt forward ones.
-+ * @bfq_back_max: maximum allowed backward seek.
-+ * @bfq_slice_idle: maximum idling time.
-+ * @bfq_user_max_budget: user-configured max budget value
-+ *                       (0 for auto-tuning).
-+ * @bfq_max_budget_async_rq: maximum budget (in nr of requests) allotted to
-+ *                           async queues.
-+ * @bfq_timeout: timeout for bfq_queues to consume their budget; used to
-+ *               to prevent seeky queues to impose long latencies to well
-+ *               behaved ones (this also implies that seeky queues cannot
-+ *               receive guarantees in the service domain; after a timeout
-+ *               they are charged for the whole allocated budget, to try
-+ *               to preserve a behavior reasonably fair among them, but
-+ *               without service-domain guarantees).
-+ * @bfq_coop_thresh: number of queue merges after which a @bfq_queue is
-+ *                   no more granted any weight-raising.
-+ * @bfq_failed_cooperations: number of consecutive failed cooperation
-+ *                           chances after which weight-raising is restored
-+ *                           to a queue subject to more than bfq_coop_thresh
-+ *                           queue merges.
-+ * @bfq_requests_within_timer: number of consecutive requests that must be
-+ *                             issued within the idle time slice to set
-+ *                             again idling to a queue which was marked as
-+ *                             non-I/O-bound (see the definition of the
-+ *                             IO_bound flag for further details).
-+ * @bfq_wr_coeff: Maximum factor by which the weight of a weight-raised
-+ *                queue is multiplied
-+ * @bfq_wr_max_time: maximum duration of a weight-raising period (jiffies)
-+ * @bfq_wr_rt_max_time: maximum duration for soft real-time processes
-+ * @bfq_wr_min_idle_time: minimum idle period after which weight-raising
-+ *			  may be reactivated for a queue (in jiffies)
-+ * @bfq_wr_min_inter_arr_async: minimum period between request arrivals
-+ *				after which weight-raising may be
-+ *				reactivated for an already busy queue
-+ *				(in jiffies)
-+ * @bfq_wr_max_softrt_rate: max service-rate for a soft real-time queue,
-+ *			    sectors per seconds
-+ * @RT_prod: cached value of the product R*T used for computing the maximum
-+ *	     duration of the weight raising automatically
-+ * @device_speed: device-speed class for the low-latency heuristic
-+ * @oom_bfqq: fallback dummy bfqq for extreme OOM conditions
-+ *
-+ * All the fields are protected by the @queue lock.
-+ */
-+struct bfq_data {
-+	struct request_queue *queue;
-+
-+	struct bfq_group *root_group;
-+	struct rb_root rq_pos_tree;
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+	int active_numerous_groups;
-+#endif
-+
-+	struct rb_root queue_weights_tree;
-+	struct rb_root group_weights_tree;
-+
-+	int busy_queues;
-+	int busy_in_flight_queues;
-+	int const_seeky_busy_in_flight_queues;
-+	int wr_busy_queues;
-+	int queued;
-+	int rq_in_driver;
-+	int sync_flight;
-+
-+	int max_rq_in_driver;
-+	int hw_tag_samples;
-+	int hw_tag;
-+
-+	int budgets_assigned;
-+
-+	struct timer_list idle_slice_timer;
-+	struct work_struct unplug_work;
-+
-+	struct bfq_queue *in_service_queue;
-+	struct bfq_io_cq *in_service_bic;
-+
-+	sector_t last_position;
-+
-+	ktime_t last_budget_start;
-+	ktime_t last_idling_start;
-+	int peak_rate_samples;
-+	u64 peak_rate;
-+	unsigned long bfq_max_budget;
-+
-+	struct hlist_head group_list;
-+	struct list_head active_list;
-+	struct list_head idle_list;
-+
-+	unsigned int bfq_quantum;
-+	unsigned int bfq_fifo_expire[2];
-+	unsigned int bfq_back_penalty;
-+	unsigned int bfq_back_max;
-+	unsigned int bfq_slice_idle;
-+	u64 bfq_class_idle_last_service;
-+
-+	unsigned int bfq_user_max_budget;
-+	unsigned int bfq_max_budget_async_rq;
-+	unsigned int bfq_timeout[2];
-+
-+	unsigned int bfq_coop_thresh;
-+	unsigned int bfq_failed_cooperations;
-+	unsigned int bfq_requests_within_timer;
-+
-+	bool low_latency;
-+
-+	/* parameters of the low_latency heuristics */
-+	unsigned int bfq_wr_coeff;
-+	unsigned int bfq_wr_max_time;
-+	unsigned int bfq_wr_rt_max_time;
-+	unsigned int bfq_wr_min_idle_time;
-+	unsigned long bfq_wr_min_inter_arr_async;
-+	unsigned int bfq_wr_max_softrt_rate;
-+	u64 RT_prod;
-+	enum bfq_device_speed device_speed;
-+
-+	struct bfq_queue oom_bfqq;
-+};
-+
-+enum bfqq_state_flags {
-+	BFQ_BFQQ_FLAG_busy = 0,		/* has requests or is in service */
-+	BFQ_BFQQ_FLAG_wait_request,	/* waiting for a request */
-+	BFQ_BFQQ_FLAG_must_alloc,	/* must be allowed rq alloc */
-+	BFQ_BFQQ_FLAG_fifo_expire,	/* FIFO checked in this slice */
-+	BFQ_BFQQ_FLAG_idle_window,	/* slice idling enabled */
-+	BFQ_BFQQ_FLAG_prio_changed,	/* task priority has changed */
-+	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
-+	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
-+	BFQ_BFQQ_FLAG_IO_bound,         /*
-+					 * bfqq has timed-out at least once
-+					 * having consumed at most 2/10 of
-+					 * its budget
-+					 */
-+	BFQ_BFQQ_FLAG_constantly_seeky,	/*
-+					 * bfqq has proved to be slow and
-+					 * seeky until budget timeout
-+					 */
-+	BFQ_BFQQ_FLAG_softrt_update,    /*
-+					 * may need softrt-next-start
-+					 * update
-+					 */
-+	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+};
-+
-+#define BFQ_BFQQ_FNS(name)						\
-+static inline void bfq_mark_bfqq_##name(struct bfq_queue *bfqq)		\
-+{									\
-+	(bfqq)->flags |= (1 << BFQ_BFQQ_FLAG_##name);			\
-+}									\
-+static inline void bfq_clear_bfqq_##name(struct bfq_queue *bfqq)	\
-+{									\
-+	(bfqq)->flags &= ~(1 << BFQ_BFQQ_FLAG_##name);			\
-+}									\
-+static inline int bfq_bfqq_##name(const struct bfq_queue *bfqq)		\
-+{									\
-+	return ((bfqq)->flags & (1 << BFQ_BFQQ_FLAG_##name)) != 0;	\
-+}
-+
-+BFQ_BFQQ_FNS(busy);
-+BFQ_BFQQ_FNS(wait_request);
-+BFQ_BFQQ_FNS(must_alloc);
-+BFQ_BFQQ_FNS(fifo_expire);
-+BFQ_BFQQ_FNS(idle_window);
-+BFQ_BFQQ_FNS(prio_changed);
-+BFQ_BFQQ_FNS(sync);
-+BFQ_BFQQ_FNS(budget_new);
-+BFQ_BFQQ_FNS(IO_bound);
-+BFQ_BFQQ_FNS(constantly_seeky);
-+BFQ_BFQQ_FNS(coop);
-+BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(softrt_update);
-+#undef BFQ_BFQQ_FNS
-+
-+/* Logging facilities. */
-+#define bfq_log_bfqq(bfqd, bfqq, fmt, args...) \
-+	blk_add_trace_msg((bfqd)->queue, "bfq%d " fmt, (bfqq)->pid, ##args)
-+
-+#define bfq_log(bfqd, fmt, args...) \
-+	blk_add_trace_msg((bfqd)->queue, "bfq " fmt, ##args)
-+
-+/* Expiration reasons. */
-+enum bfqq_expiration {
-+	BFQ_BFQQ_TOO_IDLE = 0,		/*
-+					 * queue has been idling for
-+					 * too long
-+					 */
-+	BFQ_BFQQ_BUDGET_TIMEOUT,	/* budget took too long to be used */
-+	BFQ_BFQQ_BUDGET_EXHAUSTED,	/* budget consumed */
-+	BFQ_BFQQ_NO_MORE_REQUESTS,	/* the queue has no more requests */
-+};
-+
-+#ifdef CONFIG_CGROUP_BFQIO
-+/**
-+ * struct bfq_group - per (device, cgroup) data structure.
-+ * @entity: schedulable entity to insert into the parent group sched_data.
-+ * @sched_data: own sched_data, to contain child entities (they may be
-+ *              both bfq_queues and bfq_groups).
-+ * @group_node: node to be inserted into the bfqio_cgroup->group_data
-+ *              list of the containing cgroup's bfqio_cgroup.
-+ * @bfqd_node: node to be inserted into the @bfqd->group_list list
-+ *             of the groups active on the same device; used for cleanup.
-+ * @bfqd: the bfq_data for the device this group acts upon.
-+ * @async_bfqq: array of async queues for all the tasks belonging to
-+ *              the group, one queue per ioprio value per ioprio_class,
-+ *              except for the idle class that has only one queue.
-+ * @async_idle_bfqq: async queue for the idle class (ioprio is ignored).
-+ * @my_entity: pointer to @entity, %NULL for the toplevel group; used
-+ *             to avoid too many special cases during group creation/
-+ *             migration.
-+ * @active_entities: number of active entities belonging to the group;
-+ *                   unused for the root group. Used to know whether there
-+ *                   are groups with more than one active @bfq_entity
-+ *                   (see the comments to the function
-+ *                   bfq_bfqq_must_not_expire()).
-+ *
-+ * Each (device, cgroup) pair has its own bfq_group, i.e., for each cgroup
-+ * there is a set of bfq_groups, each one collecting the lower-level
-+ * entities belonging to the group that are acting on the same device.
-+ *
-+ * Locking works as follows:
-+ *    o @group_node is protected by the bfqio_cgroup lock, and is accessed
-+ *      via RCU from its readers.
-+ *    o @bfqd is protected by the queue lock, RCU is used to access it
-+ *      from the readers.
-+ *    o All the other fields are protected by the @bfqd queue lock.
-+ */
-+struct bfq_group {
-+	struct bfq_entity entity;
-+	struct bfq_sched_data sched_data;
-+
-+	struct hlist_node group_node;
-+	struct hlist_node bfqd_node;
-+
-+	void *bfqd;
-+
-+	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
-+	struct bfq_queue *async_idle_bfqq;
-+
-+	struct bfq_entity *my_entity;
-+
-+	int active_entities;
-+};
-+
-+/**
-+ * struct bfqio_cgroup - bfq cgroup data structure.
-+ * @css: subsystem state for bfq in the containing cgroup.
-+ * @online: flag marked when the subsystem is inserted.
-+ * @weight: cgroup weight.
-+ * @ioprio: cgroup ioprio.
-+ * @ioprio_class: cgroup ioprio_class.
-+ * @lock: spinlock that protects @ioprio, @ioprio_class and @group_data.
-+ * @group_data: list containing the bfq_group belonging to this cgroup.
-+ *
-+ * @group_data is accessed using RCU, with @lock protecting the updates,
-+ * @ioprio and @ioprio_class are protected by @lock.
-+ */
-+struct bfqio_cgroup {
-+	struct cgroup_subsys_state css;
-+	bool online;
-+
-+	unsigned short weight, ioprio, ioprio_class;
-+
-+	spinlock_t lock;
-+	struct hlist_head group_data;
-+};
-+#else
-+struct bfq_group {
-+	struct bfq_sched_data sched_data;
-+
-+	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
-+	struct bfq_queue *async_idle_bfqq;
-+};
-+#endif
-+
-+static inline struct bfq_service_tree *
-+bfq_entity_service_tree(struct bfq_entity *entity)
-+{
-+	struct bfq_sched_data *sched_data = entity->sched_data;
-+	unsigned int idx = entity->ioprio_class - 1;
-+
-+	BUG_ON(idx >= BFQ_IOPRIO_CLASSES);
-+	BUG_ON(sched_data == NULL);
-+
-+	return sched_data->service_tree + idx;
-+}
-+
-+static inline struct bfq_queue *bic_to_bfqq(struct bfq_io_cq *bic,
-+					    int is_sync)
-+{
-+	return bic->bfqq[!!is_sync];
-+}
-+
-+static inline void bic_set_bfqq(struct bfq_io_cq *bic,
-+				struct bfq_queue *bfqq, int is_sync)
-+{
-+	bic->bfqq[!!is_sync] = bfqq;
-+}
-+
-+static inline struct bfq_data *bic_to_bfqd(struct bfq_io_cq *bic)
-+{
-+	return bic->icq.q->elevator->elevator_data;
-+}
-+
-+/**
-+ * bfq_get_bfqd_locked - get a lock to a bfqd using a RCU protected pointer.
-+ * @ptr: a pointer to a bfqd.
-+ * @flags: storage for the flags to be saved.
-+ *
-+ * This function allows bfqg->bfqd to be protected by the
-+ * queue lock of the bfqd they reference; the pointer is dereferenced
-+ * under RCU, so the storage for bfqd is assured to be safe as long
-+ * as the RCU read side critical section does not end.  After the
-+ * bfqd->queue->queue_lock is taken the pointer is rechecked, to be
-+ * sure that no other writer accessed it.  If we raced with a writer,
-+ * the function returns NULL, with the queue unlocked, otherwise it
-+ * returns the dereferenced pointer, with the queue locked.
-+ */
-+static inline struct bfq_data *bfq_get_bfqd_locked(void **ptr,
-+						   unsigned long *flags)
-+{
-+	struct bfq_data *bfqd;
-+
-+	rcu_read_lock();
-+	bfqd = rcu_dereference(*(struct bfq_data **)ptr);
-+
-+	if (bfqd != NULL) {
-+		spin_lock_irqsave(bfqd->queue->queue_lock, *flags);
-+		if (*ptr == bfqd)
-+			goto out;
-+		spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
-+	}
-+
-+	bfqd = NULL;
-+out:
-+	rcu_read_unlock();
-+	return bfqd;
-+}
-+
-+static inline void bfq_put_bfqd_unlock(struct bfq_data *bfqd,
-+				       unsigned long *flags)
-+{
-+	spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
-+}
-+
-+static void bfq_changed_ioprio(struct bfq_io_cq *bic);
-+static void bfq_put_queue(struct bfq_queue *bfqq);
-+static void bfq_dispatch_insert(struct request_queue *q, struct request *rq);
-+static struct bfq_queue *bfq_get_queue(struct bfq_data *bfqd,
-+				       struct bfq_group *bfqg, int is_sync,
-+				       struct bfq_io_cq *bic, gfp_t gfp_mask);
-+static void bfq_end_wr_async_queues(struct bfq_data *bfqd,
-+				    struct bfq_group *bfqg);
-+static void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg);
-+static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq);
-+
-+#endif /* _BFQ_H */
--- 
-1.9.3
-
diff --git a/helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch b/helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch
new file mode 100644
index 000000000..a49c43013
--- /dev/null
+++ b/helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch
@@ -0,0 +1,1101 @@
+From d3deade9dc903f58c2bf79e316b785f6eaf2441f Mon Sep 17 00:00:00 2001
+From: Mauro Andreolini <mauro.andreolini@unimore.it>
+Date: Sun, 6 Sep 2015 16:09:05 +0200
+Subject: [PATCH 3/3] block, bfq: add Early Queue Merge (EQM) to BFQ-v7r11 for
+ 4.4.0
+
+A set of processes may happen  to  perform interleaved reads, i.e.,requests
+whose union would give rise to a  sequential read  pattern.  There are two
+typical  cases: in the first  case,   processes  read  fixed-size chunks of
+data at a fixed distance from each other, while in the second case processes
+may read variable-size chunks at  variable distances. The latter case occurs
+for  example with  QEMU, which  splits the  I/O generated  by the  guest into
+multiple chunks,  and lets these chunks  be served by a  pool of cooperating
+processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
+available  process. CFQ  uses actual  queue merging  for the  first type of
+rocesses, whereas it  uses preemption to get a sequential  read pattern out
+of the read requests  performed by the second type of  processes. In the end
+it uses  two different  mechanisms to  achieve the  same goal: boosting the
+throughput with interleaved I/O.
+
+This patch introduces  Early Queue Merge (EQM), a unified mechanism to get a
+sequential  read pattern  with both  types of  processes. The  main idea is
+checking newly arrived requests against the next request of the active queue
+both in case of actual request insert and in case of request merge. By doing
+so, both the types of processes can be handled by just merging their queues.
+EQM is  then simpler and  more compact than the  pair of mechanisms used in
+CFQ.
+
+Finally, EQM  also preserves the  typical low-latency properties of BFQ, by
+properly restoring the weight-raising state of a queue when it gets back to
+a non-merged state.
+
+Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
+Signed-off-by: Arianna Avanzini <avanzini@google.com>
+Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+---
+ block/bfq-cgroup.c  |   4 +
+ block/bfq-iosched.c | 687 ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ block/bfq.h         |  66 +++++
+ 3 files changed, 743 insertions(+), 14 deletions(-)
+
+diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
+index 8610cd6..5ee99ec 100644
+--- a/block/bfq-cgroup.c
++++ b/block/bfq-cgroup.c
+@@ -437,6 +437,7 @@ static void bfq_pd_init(struct blkg_policy_data *pd)
+ 				   */
+ 	bfqg->bfqd = bfqd;
+ 	bfqg->active_entities = 0;
++	bfqg->rq_pos_tree = RB_ROOT;
+ }
+ 
+ static void bfq_pd_free(struct blkg_policy_data *pd)
+@@ -530,6 +531,8 @@ static struct bfq_group *bfq_find_alloc_group(struct bfq_data *bfqd,
+ 	return bfqg;
+ }
+ 
++static void bfq_pos_tree_add_move(struct bfq_data *bfqd, struct bfq_queue *bfqq);
++
+ /**
+  * bfq_bfqq_move - migrate @bfqq to @bfqg.
+  * @bfqd: queue descriptor.
+@@ -577,6 +580,7 @@ static void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
+ 	bfqg_get(bfqg);
+ 
+ 	if (busy) {
++		bfq_pos_tree_add_move(bfqd, bfqq);
+ 		if (resume)
+ 			bfq_activate_bfqq(bfqd, bfqq);
+ 	}
+diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
+index f9787a6..d1f648d 100644
+--- a/block/bfq-iosched.c
++++ b/block/bfq-iosched.c
+@@ -296,6 +296,72 @@ static struct request *bfq_choose_req(struct bfq_data *bfqd,
+ 	}
+ }
+ 
++static struct bfq_queue *
++bfq_rq_pos_tree_lookup(struct bfq_data *bfqd, struct rb_root *root,
++		     sector_t sector, struct rb_node **ret_parent,
++		     struct rb_node ***rb_link)
++{
++	struct rb_node **p, *parent;
++	struct bfq_queue *bfqq = NULL;
++
++	parent = NULL;
++	p = &root->rb_node;
++	while (*p) {
++		struct rb_node **n;
++
++		parent = *p;
++		bfqq = rb_entry(parent, struct bfq_queue, pos_node);
++
++		/*
++		 * Sort strictly based on sector. Smallest to the left,
++		 * largest to the right.
++		 */
++		if (sector > blk_rq_pos(bfqq->next_rq))
++			n = &(*p)->rb_right;
++		else if (sector < blk_rq_pos(bfqq->next_rq))
++			n = &(*p)->rb_left;
++		else
++			break;
++		p = n;
++		bfqq = NULL;
++	}
++
++	*ret_parent = parent;
++	if (rb_link)
++		*rb_link = p;
++
++	bfq_log(bfqd, "rq_pos_tree_lookup %llu: returning %d",
++		(long long unsigned)sector,
++		bfqq ? bfqq->pid : 0);
++
++	return bfqq;
++}
++
++static void bfq_pos_tree_add_move(struct bfq_data *bfqd, struct bfq_queue *bfqq)
++{
++	struct rb_node **p, *parent;
++	struct bfq_queue *__bfqq;
++
++	if (bfqq->pos_root) {
++		rb_erase(&bfqq->pos_node, bfqq->pos_root);
++		bfqq->pos_root = NULL;
++	}
++
++	if (bfq_class_idle(bfqq))
++		return;
++	if (!bfqq->next_rq)
++		return;
++
++	bfqq->pos_root = &bfq_bfqq_to_bfqg(bfqq)->rq_pos_tree;
++	__bfqq = bfq_rq_pos_tree_lookup(bfqd, bfqq->pos_root,
++			blk_rq_pos(bfqq->next_rq), &parent, &p);
++	if (!__bfqq) {
++		rb_link_node(&bfqq->pos_node, parent, p);
++		rb_insert_color(&bfqq->pos_node, bfqq->pos_root);
++	} else
++		bfqq->pos_root = NULL;
++}
++
+ /*
+  * Tell whether there are active queues or groups with differentiated weights.
+  */
+@@ -528,6 +594,57 @@ static unsigned int bfq_wr_duration(struct bfq_data *bfqd)
+ 	return dur;
+ }
+ 
++static unsigned bfq_bfqq_cooperations(struct bfq_queue *bfqq)
++{
++	return bfqq->bic ? bfqq->bic->cooperations : 0;
++}
++
++static void
++bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
++{
++	if (bic->saved_idle_window)
++		bfq_mark_bfqq_idle_window(bfqq);
++	else
++		bfq_clear_bfqq_idle_window(bfqq);
++	if (bic->saved_IO_bound)
++		bfq_mark_bfqq_IO_bound(bfqq);
++	else
++		bfq_clear_bfqq_IO_bound(bfqq);
++	/* Assuming that the flag in_large_burst is already correctly set */
++	if (bic->wr_time_left && bfqq->bfqd->low_latency &&
++	    !bfq_bfqq_in_large_burst(bfqq) &&
++	    bic->cooperations < bfqq->bfqd->bfq_coop_thresh) {
++		/*
++		 * Start a weight raising period with the duration given by
++		 * the raising_time_left snapshot.
++		 */
++		if (bfq_bfqq_busy(bfqq))
++			bfqq->bfqd->wr_busy_queues++;
++		bfqq->wr_coeff = bfqq->bfqd->bfq_wr_coeff;
++		bfqq->wr_cur_max_time = bic->wr_time_left;
++		bfqq->last_wr_start_finish = jiffies;
++		bfqq->entity.prio_changed = 1;
++	}
++	/*
++	 * Clear wr_time_left to prevent bfq_bfqq_save_state() from
++	 * getting confused about the queue's need of a weight-raising
++	 * period.
++	 */
++	bic->wr_time_left = 0;
++}
++
++static int bfqq_process_refs(struct bfq_queue *bfqq)
++{
++	int process_refs, io_refs;
++
++	lockdep_assert_held(bfqq->bfqd->queue->queue_lock);
++
++	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
++	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
++	BUG_ON(process_refs < 0);
++	return process_refs;
++}
++
+ /* Empty burst list and add just bfqq (see comments to bfq_handle_burst) */
+ static void bfq_reset_burst_list(struct bfq_data *bfqd, struct bfq_queue *bfqq)
+ {
+@@ -764,8 +881,14 @@ static void bfq_add_request(struct request *rq)
+ 	BUG_ON(!next_rq);
+ 	bfqq->next_rq = next_rq;
+ 
++	/*
++	 * Adjust priority tree position, if next_rq changes.
++	 */
++	if (prev != bfqq->next_rq)
++		bfq_pos_tree_add_move(bfqd, bfqq);
++
+ 	if (!bfq_bfqq_busy(bfqq)) {
+-		bool soft_rt, in_burst,
++		bool soft_rt, coop_or_in_burst,
+ 		     idle_for_long_time = time_is_before_jiffies(
+ 						bfqq->budget_timeout +
+ 						bfqd->bfq_wr_min_idle_time);
+@@ -793,11 +916,12 @@ static void bfq_add_request(struct request *rq)
+ 				bfqd->last_ins_in_burst = jiffies;
+ 		}
+ 
+-		in_burst = bfq_bfqq_in_large_burst(bfqq);
++		coop_or_in_burst = bfq_bfqq_in_large_burst(bfqq) ||
++			bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh;
+ 		soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
+-			!in_burst &&
++			!coop_or_in_burst &&
+ 			time_is_before_jiffies(bfqq->soft_rt_next_start);
+-		interactive = !in_burst && idle_for_long_time;
++		interactive = !coop_or_in_burst && idle_for_long_time;
+ 		entity->budget = max_t(unsigned long, bfqq->max_budget,
+ 				       bfq_serv_to_charge(next_rq, bfqq));
+ 
+@@ -816,6 +940,9 @@ static void bfq_add_request(struct request *rq)
+ 		if (!bfqd->low_latency)
+ 			goto add_bfqq_busy;
+ 
++		if (bfq_bfqq_just_split(bfqq))
++			goto set_prio_changed;
++
+ 		/*
+ 		 * If the queue:
+ 		 * - is not being boosted,
+@@ -840,7 +967,7 @@ static void bfq_add_request(struct request *rq)
+ 		} else if (old_wr_coeff > 1) {
+ 			if (interactive)
+ 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
+-			else if (in_burst ||
++			else if (coop_or_in_burst ||
+ 				 (bfqq->wr_cur_max_time ==
+ 				  bfqd->bfq_wr_rt_max_time &&
+ 				  !soft_rt)) {
+@@ -905,6 +1032,7 @@ static void bfq_add_request(struct request *rq)
+ 					bfqd->bfq_wr_rt_max_time;
+ 			}
+ 		}
++set_prio_changed:
+ 		if (old_wr_coeff != bfqq->wr_coeff)
+ 			entity->prio_changed = 1;
+ add_bfqq_busy:
+@@ -1047,6 +1175,15 @@ static void bfq_merged_request(struct request_queue *q, struct request *req,
+ 					 bfqd->last_position);
+ 		BUG_ON(!next_rq);
+ 		bfqq->next_rq = next_rq;
++		/*
++		 * If next_rq changes, update both the queue's budget to
++		 * fit the new request and the queue's position in its
++		 * rq_pos_tree.
++		 */
++		if (prev != bfqq->next_rq) {
++			bfq_updated_next_req(bfqd, bfqq);
++			bfq_pos_tree_add_move(bfqd, bfqq);
++		}
+ 	}
+ }
+ 
+@@ -1129,11 +1266,346 @@ static void bfq_end_wr(struct bfq_data *bfqd)
+ 	spin_unlock_irq(bfqd->queue->queue_lock);
+ }
+ 
++static sector_t bfq_io_struct_pos(void *io_struct, bool request)
++{
++	if (request)
++		return blk_rq_pos(io_struct);
++	else
++		return ((struct bio *)io_struct)->bi_iter.bi_sector;
++}
++
++static int bfq_rq_close_to_sector(void *io_struct, bool request,
++				  sector_t sector)
++{
++	return abs(bfq_io_struct_pos(io_struct, request) - sector) <=
++	       BFQQ_SEEK_THR;
++}
++
++static struct bfq_queue *bfqq_find_close(struct bfq_data *bfqd,
++					 struct bfq_queue *bfqq,
++					 sector_t sector)
++{
++	struct rb_root *root = &bfq_bfqq_to_bfqg(bfqq)->rq_pos_tree;
++	struct rb_node *parent, *node;
++	struct bfq_queue *__bfqq;
++
++	if (RB_EMPTY_ROOT(root))
++		return NULL;
++
++	/*
++	 * First, if we find a request starting at the end of the last
++	 * request, choose it.
++	 */
++	__bfqq = bfq_rq_pos_tree_lookup(bfqd, root, sector, &parent, NULL);
++	if (__bfqq)
++		return __bfqq;
++
++	/*
++	 * If the exact sector wasn't found, the parent of the NULL leaf
++	 * will contain the closest sector (rq_pos_tree sorted by
++	 * next_request position).
++	 */
++	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
++	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
++		return __bfqq;
++
++	if (blk_rq_pos(__bfqq->next_rq) < sector)
++		node = rb_next(&__bfqq->pos_node);
++	else
++		node = rb_prev(&__bfqq->pos_node);
++	if (!node)
++		return NULL;
++
++	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
++	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
++		return __bfqq;
++
++	return NULL;
++}
++
++static struct bfq_queue *bfq_find_close_cooperator(struct bfq_data *bfqd,
++						   struct bfq_queue *cur_bfqq,
++						   sector_t sector)
++{
++	struct bfq_queue *bfqq;
++
++	/*
++	 * We shall notice if some of the queues are cooperating,
++	 * e.g., working closely on the same area of the device. In
++	 * that case, we can group them together and: 1) don't waste
++	 * time idling, and 2) serve the union of their requests in
++	 * the best possible order for throughput.
++	 */
++	bfqq = bfqq_find_close(bfqd, cur_bfqq, sector);
++	if (!bfqq || bfqq == cur_bfqq)
++		return NULL;
++
++	return bfqq;
++}
++
++static struct bfq_queue *
++bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
++{
++	int process_refs, new_process_refs;
++	struct bfq_queue *__bfqq;
++
++	/*
++	 * If there are no process references on the new_bfqq, then it is
++	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
++	 * may have dropped their last reference (not just their last process
++	 * reference).
++	 */
++	if (!bfqq_process_refs(new_bfqq))
++		return NULL;
++
++	/* Avoid a circular list and skip interim queue merges. */
++	while ((__bfqq = new_bfqq->new_bfqq)) {
++		if (__bfqq == bfqq)
++			return NULL;
++		new_bfqq = __bfqq;
++	}
++
++	process_refs = bfqq_process_refs(bfqq);
++	new_process_refs = bfqq_process_refs(new_bfqq);
++	/*
++	 * If the process for the bfqq has gone away, there is no
++	 * sense in merging the queues.
++	 */
++	if (process_refs == 0 || new_process_refs == 0)
++		return NULL;
++
++	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
++		new_bfqq->pid);
++
++	/*
++	 * Merging is just a redirection: the requests of the process
++	 * owning one of the two queues are redirected to the other queue.
++	 * The latter queue, in its turn, is set as shared if this is the
++	 * first time that the requests of some process are redirected to
++	 * it.
++	 *
++	 * We redirect bfqq to new_bfqq and not the opposite, because we
++	 * are in the context of the process owning bfqq, hence we have
++	 * the io_cq of this process. So we can immediately configure this
++	 * io_cq to redirect the requests of the process to new_bfqq.
++	 *
++	 * NOTE, even if new_bfqq coincides with the in-service queue, the
++	 * io_cq of new_bfqq is not available, because, if the in-service
++	 * queue is shared, bfqd->in_service_bic may not point to the
++	 * io_cq of the in-service queue.
++	 * Redirecting the requests of the process owning bfqq to the
++	 * currently in-service queue is in any case the best option, as
++	 * we feed the in-service queue with new requests close to the
++	 * last request served and, by doing so, hopefully increase the
++	 * throughput.
++	 */
++	bfqq->new_bfqq = new_bfqq;
++	atomic_add(process_refs, &new_bfqq->ref);
++	return new_bfqq;
++}
++
++static bool bfq_may_be_close_cooperator(struct bfq_queue *bfqq,
++					struct bfq_queue *new_bfqq)
++{
++	if (bfq_class_idle(bfqq) || bfq_class_idle(new_bfqq) ||
++	    (bfqq->ioprio_class != new_bfqq->ioprio_class))
++		return false;
++
++	/*
++	 * If either of the queues has already been detected as seeky,
++	 * then merging it with the other queue is unlikely to lead to
++	 * sequential I/O.
++	 */
++	if (BFQQ_SEEKY(bfqq) || BFQQ_SEEKY(new_bfqq))
++		return false;
++
++	/*
++	 * Interleaved I/O is known to be done by (some) applications
++	 * only for reads, so it does not make sense to merge async
++	 * queues.
++	 */
++	if (!bfq_bfqq_sync(bfqq) || !bfq_bfqq_sync(new_bfqq))
++		return false;
++
++	return true;
++}
++
++/*
++ * Attempt to schedule a merge of bfqq with the currently in-service queue
++ * or with a close queue among the scheduled queues.
++ * Return NULL if no merge was scheduled, a pointer to the shared bfq_queue
++ * structure otherwise.
++ *
++ * The OOM queue is not allowed to participate to cooperation: in fact, since
++ * the requests temporarily redirected to the OOM queue could be redirected
++ * again to dedicated queues at any time, the state needed to correctly
++ * handle merging with the OOM queue would be quite complex and expensive
++ * to maintain. Besides, in such a critical condition as an out of memory,
++ * the benefits of queue merging may be little relevant, or even negligible.
++ */
++static struct bfq_queue *
++bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
++		     void *io_struct, bool request)
++{
++	struct bfq_queue *in_service_bfqq, *new_bfqq;
++
++	if (bfqq->new_bfqq)
++		return bfqq->new_bfqq;
++	if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
++		return NULL;
++	/* If device has only one backlogged bfq_queue, don't search. */
++	if (bfqd->busy_queues == 1)
++		return NULL;
++
++	in_service_bfqq = bfqd->in_service_queue;
++
++	if (!in_service_bfqq || in_service_bfqq == bfqq ||
++	    !bfqd->in_service_bic ||
++	    unlikely(in_service_bfqq == &bfqd->oom_bfqq))
++		goto check_scheduled;
++
++	if (bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
++	    bfqq->entity.parent == in_service_bfqq->entity.parent &&
++	    bfq_may_be_close_cooperator(bfqq, in_service_bfqq)) {
++		new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
++		if (new_bfqq)
++			return new_bfqq;
++	}
++	/*
++	 * Check whether there is a cooperator among currently scheduled
++	 * queues. The only thing we need is that the bio/request is not
++	 * NULL, as we need it to establish whether a cooperator exists.
++	 */
++check_scheduled:
++	new_bfqq = bfq_find_close_cooperator(bfqd, bfqq,
++			bfq_io_struct_pos(io_struct, request));
++
++	BUG_ON(new_bfqq && bfqq->entity.parent != new_bfqq->entity.parent);
++
++	if (new_bfqq && likely(new_bfqq != &bfqd->oom_bfqq) &&
++	    bfq_may_be_close_cooperator(bfqq, new_bfqq))
++		return bfq_setup_merge(bfqq, new_bfqq);
++
++	return NULL;
++}
++
++static void bfq_bfqq_save_state(struct bfq_queue *bfqq)
++{
++	/*
++	 * If !bfqq->bic, the queue is already shared or its requests
++	 * have already been redirected to a shared queue; both idle window
++	 * and weight raising state have already been saved. Do nothing.
++	 */
++	if (!bfqq->bic)
++		return;
++	if (bfqq->bic->wr_time_left)
++		/*
++		 * This is the queue of a just-started process, and would
++		 * deserve weight raising: we set wr_time_left to the full
++		 * weight-raising duration to trigger weight-raising when
++		 * and if the queue is split and the first request of the
++		 * queue is enqueued.
++		 */
++		bfqq->bic->wr_time_left = bfq_wr_duration(bfqq->bfqd);
++	else if (bfqq->wr_coeff > 1) {
++		unsigned long wr_duration =
++			jiffies - bfqq->last_wr_start_finish;
++		/*
++		 * It may happen that a queue's weight raising period lasts
++		 * longer than its wr_cur_max_time, as weight raising is
++		 * handled only when a request is enqueued or dispatched (it
++		 * does not use any timer). If the weight raising period is
++		 * about to end, don't save it.
++		 */
++		if (bfqq->wr_cur_max_time <= wr_duration)
++			bfqq->bic->wr_time_left = 0;
++		else
++			bfqq->bic->wr_time_left =
++				bfqq->wr_cur_max_time - wr_duration;
++		/*
++		 * The bfq_queue is becoming shared or the requests of the
++		 * process owning the queue are being redirected to a shared
++		 * queue. Stop the weight raising period of the queue, as in
++		 * both cases it should not be owned by an interactive or
++		 * soft real-time application.
++		 */
++		bfq_bfqq_end_wr(bfqq);
++	} else
++		bfqq->bic->wr_time_left = 0;
++	bfqq->bic->saved_idle_window = bfq_bfqq_idle_window(bfqq);
++	bfqq->bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq);
++	bfqq->bic->saved_in_large_burst = bfq_bfqq_in_large_burst(bfqq);
++	bfqq->bic->was_in_burst_list = !hlist_unhashed(&bfqq->burst_list_node);
++	bfqq->bic->cooperations++;
++	bfqq->bic->failed_cooperations = 0;
++}
++
++static void bfq_get_bic_reference(struct bfq_queue *bfqq)
++{
++	/*
++	 * If bfqq->bic has a non-NULL value, the bic to which it belongs
++	 * is about to begin using a shared bfq_queue.
++	 */
++	if (bfqq->bic)
++		atomic_long_inc(&bfqq->bic->icq.ioc->refcount);
++}
++
++static void
++bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
++		struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
++{
++	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
++		(long unsigned)new_bfqq->pid);
++	/* Save weight raising and idle window of the merged queues */
++	bfq_bfqq_save_state(bfqq);
++	bfq_bfqq_save_state(new_bfqq);
++	if (bfq_bfqq_IO_bound(bfqq))
++		bfq_mark_bfqq_IO_bound(new_bfqq);
++	bfq_clear_bfqq_IO_bound(bfqq);
++	/*
++	 * Grab a reference to the bic, to prevent it from being destroyed
++	 * before being possibly touched by a bfq_split_bfqq().
++	 */
++	bfq_get_bic_reference(bfqq);
++	bfq_get_bic_reference(new_bfqq);
++	/*
++	 * Merge queues (that is, let bic redirect its requests to new_bfqq)
++	 */
++	bic_set_bfqq(bic, new_bfqq, 1);
++	bfq_mark_bfqq_coop(new_bfqq);
++	/*
++	 * new_bfqq now belongs to at least two bics (it is a shared queue):
++	 * set new_bfqq->bic to NULL. bfqq either:
++	 * - does not belong to any bic any more, and hence bfqq->bic must
++	 *   be set to NULL, or
++	 * - is a queue whose owning bics have already been redirected to a
++	 *   different queue, hence the queue is destined to not belong to
++	 *   any bic soon and bfqq->bic is already NULL (therefore the next
++	 *   assignment causes no harm).
++	 */
++	new_bfqq->bic = NULL;
++	bfqq->bic = NULL;
++	bfq_put_queue(bfqq);
++}
++
++static void bfq_bfqq_increase_failed_cooperations(struct bfq_queue *bfqq)
++{
++	struct bfq_io_cq *bic = bfqq->bic;
++	struct bfq_data *bfqd = bfqq->bfqd;
++
++	if (bic && bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh) {
++		bic->failed_cooperations++;
++		if (bic->failed_cooperations >= bfqd->bfq_failed_cooperations)
++			bic->cooperations = 0;
++	}
++}
++
+ static int bfq_allow_merge(struct request_queue *q, struct request *rq,
+ 			   struct bio *bio)
+ {
+ 	struct bfq_data *bfqd = q->elevator->elevator_data;
+ 	struct bfq_io_cq *bic;
++	struct bfq_queue *bfqq, *new_bfqq;
+ 
+ 	/*
+ 	 * Disallow merge of a sync bio into an async request.
+@@ -1150,7 +1622,26 @@ static int bfq_allow_merge(struct request_queue *q, struct request *rq,
+ 	if (!bic)
+ 		return 0;
+ 
+-	return bic_to_bfqq(bic, bfq_bio_sync(bio)) == RQ_BFQQ(rq);
++	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
++	/*
++	 * We take advantage of this function to perform an early merge
++	 * of the queues of possible cooperating processes.
++	 */
++	if (bfqq) {
++		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, bio, false);
++		if (new_bfqq) {
++			bfq_merge_bfqqs(bfqd, bic, bfqq, new_bfqq);
++			/*
++			 * If we get here, the bio will be queued in the
++			 * shared queue, i.e., new_bfqq, so use new_bfqq
++			 * to decide whether bio and rq can be merged.
++			 */
++			bfqq = new_bfqq;
++		} else
++			bfq_bfqq_increase_failed_cooperations(bfqq);
++	}
++
++	return bfqq == RQ_BFQQ(rq);
+ }
+ 
+ static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
+@@ -1349,6 +1840,15 @@ static void __bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq)
+ 
+ 	__bfq_bfqd_reset_in_service(bfqd);
+ 
++	/*
++	 * If this bfqq is shared between multiple processes, check
++	 * to make sure that those processes are still issuing I/Os
++	 * within the mean seek distance. If not, it may be time to
++	 * break the queues apart again.
++	 */
++	if (bfq_bfqq_coop(bfqq) && BFQQ_SEEKY(bfqq))
++		bfq_mark_bfqq_split_coop(bfqq);
++
+ 	if (RB_EMPTY_ROOT(&bfqq->sort_list)) {
+ 		/*
+ 		 * Overloading budget_timeout field to store the time
+@@ -1357,8 +1857,13 @@ static void __bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq)
+ 		 */
+ 		bfqq->budget_timeout = jiffies;
+ 		bfq_del_bfqq_busy(bfqd, bfqq, 1);
+-	} else
++	} else {
+ 		bfq_activate_bfqq(bfqd, bfqq);
++		/*
++		 * Resort priority tree of potential close cooperators.
++		 */
++		bfq_pos_tree_add_move(bfqd, bfqq);
++	}
+ }
+ 
+ /**
+@@ -2242,10 +2747,12 @@ static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
+ 		/*
+ 		 * If the queue was activated in a burst, or
+ 		 * too much time has elapsed from the beginning
+-		 * of this weight-raising period, then end weight
+-		 * raising.
++		 * of this weight-raising period, or the queue has
++		 * exceeded the acceptable number of cooperations,
++		 * then end weight raising.
+ 		 */
+ 		if (bfq_bfqq_in_large_burst(bfqq) ||
++		    bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh ||
+ 		    time_is_before_jiffies(bfqq->last_wr_start_finish +
+ 					   bfqq->wr_cur_max_time)) {
+ 			bfqq->last_wr_start_finish = jiffies;
+@@ -2474,6 +2981,25 @@ static void bfq_put_queue(struct bfq_queue *bfqq)
+ #endif
+ }
+ 
++static void bfq_put_cooperator(struct bfq_queue *bfqq)
++{
++	struct bfq_queue *__bfqq, *next;
++
++	/*
++	 * If this queue was scheduled to merge with another queue, be
++	 * sure to drop the reference taken on that queue (and others in
++	 * the merge chain). See bfq_setup_merge and bfq_merge_bfqqs.
++	 */
++	__bfqq = bfqq->new_bfqq;
++	while (__bfqq) {
++		if (__bfqq == bfqq)
++			break;
++		next = __bfqq->new_bfqq;
++		bfq_put_queue(__bfqq);
++		__bfqq = next;
++	}
++}
++
+ static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
+ {
+ 	if (bfqq == bfqd->in_service_queue) {
+@@ -2484,6 +3010,8 @@ static void bfq_exit_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq)
+ 	bfq_log_bfqq(bfqd, bfqq, "exit_bfqq: %p, %d", bfqq,
+ 		     atomic_read(&bfqq->ref));
+ 
++	bfq_put_cooperator(bfqq);
++
+ 	bfq_put_queue(bfqq);
+ }
+ 
+@@ -2492,6 +3020,25 @@ static void bfq_init_icq(struct io_cq *icq)
+ 	struct bfq_io_cq *bic = icq_to_bic(icq);
+ 
+ 	bic->ttime.last_end_request = jiffies;
++	/*
++	 * A newly created bic indicates that the process has just
++	 * started doing I/O, and is probably mapping into memory its
++	 * executable and libraries: it definitely needs weight raising.
++	 * There is however the possibility that the process performs,
++	 * for a while, I/O close to some other process. EQM intercepts
++	 * this behavior and may merge the queue corresponding to the
++	 * process  with some other queue, BEFORE the weight of the queue
++	 * is raised. Merged queues are not weight-raised (they are assumed
++	 * to belong to processes that benefit only from high throughput).
++	 * If the merge is basically the consequence of an accident, then
++	 * the queue will be split soon and will get back its old weight.
++	 * It is then important to write down somewhere that this queue
++	 * does need weight raising, even if it did not make it to get its
++	 * weight raised before being merged. To this purpose, we overload
++	 * the field raising_time_left and assign 1 to it, to mark the queue
++	 * as needing weight raising.
++	 */
++	bic->wr_time_left = 1;
+ }
+ 
+ static void bfq_exit_icq(struct io_cq *icq)
+@@ -2505,6 +3052,13 @@ static void bfq_exit_icq(struct io_cq *icq)
+ 	}
+ 
+ 	if (bic->bfqq[BLK_RW_SYNC]) {
++		/*
++		 * If the bic is using a shared queue, put the reference
++		 * taken on the io_context when the bic started using a
++		 * shared bfq_queue.
++		 */
++		if (bfq_bfqq_coop(bic->bfqq[BLK_RW_SYNC]))
++			put_io_context(icq->ioc);
+ 		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
+ 		bic->bfqq[BLK_RW_SYNC] = NULL;
+ 	}
+@@ -2809,6 +3363,10 @@ static void bfq_update_idle_window(struct bfq_data *bfqd,
+ 	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
+ 		return;
+ 
++	/* Idle window just restored, statistics are meaningless. */
++	if (bfq_bfqq_just_split(bfqq))
++		return;
++
+ 	enable_idle = bfq_bfqq_idle_window(bfqq);
+ 
+ 	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
+@@ -2856,6 +3414,7 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
+ 	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
+ 	    !BFQQ_SEEKY(bfqq))
+ 		bfq_update_idle_window(bfqd, bfqq, bic);
++	bfq_clear_bfqq_just_split(bfqq);
+ 
+ 	bfq_log_bfqq(bfqd, bfqq,
+ 		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
+@@ -2920,12 +3479,47 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
+ static void bfq_insert_request(struct request_queue *q, struct request *rq)
+ {
+ 	struct bfq_data *bfqd = q->elevator->elevator_data;
+-	struct bfq_queue *bfqq = RQ_BFQQ(rq);
++	struct bfq_queue *bfqq = RQ_BFQQ(rq), *new_bfqq;
+ 
+ 	assert_spin_locked(bfqd->queue->queue_lock);
+ 
++	/*
++	 * An unplug may trigger a requeue of a request from the device
++	 * driver: make sure we are in process context while trying to
++	 * merge two bfq_queues.
++	 */
++	if (!in_interrupt()) {
++		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
++		if (new_bfqq) {
++			if (bic_to_bfqq(RQ_BIC(rq), 1) != bfqq)
++				new_bfqq = bic_to_bfqq(RQ_BIC(rq), 1);
++			/*
++			 * Release the request's reference to the old bfqq
++			 * and make sure one is taken to the shared queue.
++			 */
++			new_bfqq->allocated[rq_data_dir(rq)]++;
++			bfqq->allocated[rq_data_dir(rq)]--;
++			atomic_inc(&new_bfqq->ref);
++			bfq_put_queue(bfqq);
++			if (bic_to_bfqq(RQ_BIC(rq), 1) == bfqq)
++				bfq_merge_bfqqs(bfqd, RQ_BIC(rq),
++						bfqq, new_bfqq);
++			rq->elv.priv[1] = new_bfqq;
++			bfqq = new_bfqq;
++		} else
++			bfq_bfqq_increase_failed_cooperations(bfqq);
++	}
++
+ 	bfq_add_request(rq);
+ 
++	/*
++	 * Here a newly-created bfq_queue has already started a weight-raising
++	 * period: clear raising_time_left to prevent bfq_bfqq_save_state()
++	 * from assigning it a full weight-raising period. See the detailed
++	 * comments about this field in bfq_init_icq().
++	 */
++	if (bfqq->bic)
++		bfqq->bic->wr_time_left = 0;
+ 	rq->fifo_time = jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)];
+ 	list_add_tail(&rq->queuelist, &bfqq->fifo);
+ 
+@@ -3094,6 +3688,32 @@ static void bfq_put_request(struct request *rq)
+ }
+ 
+ /*
++ * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
++ * was the last process referring to said bfqq.
++ */
++static struct bfq_queue *
++bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
++{
++	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
++
++	put_io_context(bic->icq.ioc);
++
++	if (bfqq_process_refs(bfqq) == 1) {
++		bfqq->pid = current->pid;
++		bfq_clear_bfqq_coop(bfqq);
++		bfq_clear_bfqq_split_coop(bfqq);
++		return bfqq;
++	}
++
++	bic_set_bfqq(bic, NULL, 1);
++
++	bfq_put_cooperator(bfqq);
++
++	bfq_put_queue(bfqq);
++	return NULL;
++}
++
++/*
+  * Allocate bfq data structures associated with this request.
+  */
+ static int bfq_set_request(struct request_queue *q, struct request *rq,
+@@ -3105,6 +3725,7 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
+ 	const int is_sync = rq_is_sync(rq);
+ 	struct bfq_queue *bfqq;
+ 	unsigned long flags;
++	bool split = false;
+ 
+ 	might_sleep_if(gfpflags_allow_blocking(gfp_mask));
+ 
+@@ -3117,15 +3738,30 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
+ 
+ 	bfq_bic_update_cgroup(bic, bio);
+ 
++new_queue:
+ 	bfqq = bic_to_bfqq(bic, is_sync);
+ 	if (!bfqq || bfqq == &bfqd->oom_bfqq) {
+ 		bfqq = bfq_get_queue(bfqd, bio, is_sync, bic, gfp_mask);
+ 		bic_set_bfqq(bic, bfqq, is_sync);
+-		if (is_sync) {
+-			if (bfqd->large_burst)
++		if (split && is_sync) {
++			if ((bic->was_in_burst_list && bfqd->large_burst) ||
++			    bic->saved_in_large_burst)
+ 				bfq_mark_bfqq_in_large_burst(bfqq);
+-			else
+-				bfq_clear_bfqq_in_large_burst(bfqq);
++			else {
++			    bfq_clear_bfqq_in_large_burst(bfqq);
++			    if (bic->was_in_burst_list)
++			       hlist_add_head(&bfqq->burst_list_node,
++				              &bfqd->burst_list);
++			}
++		}
++	} else {
++		/* If the queue was seeky for too long, break it apart. */
++		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
++			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
++			bfqq = bfq_split_bfqq(bic, bfqq);
++			split = true;
++			if (!bfqq)
++				goto new_queue;
+ 		}
+ 	}
+ 
+@@ -3137,6 +3773,26 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
+ 	rq->elv.priv[0] = bic;
+ 	rq->elv.priv[1] = bfqq;
+ 
++	/*
++	 * If a bfq_queue has only one process reference, it is owned
++	 * by only one bfq_io_cq: we can set the bic field of the
++	 * bfq_queue to the address of that structure. Also, if the
++	 * queue has just been split, mark a flag so that the
++	 * information is available to the other scheduler hooks.
++	 */
++	if (likely(bfqq != &bfqd->oom_bfqq) && bfqq_process_refs(bfqq) == 1) {
++		bfqq->bic = bic;
++		if (split) {
++			bfq_mark_bfqq_just_split(bfqq);
++			/*
++			 * If the queue has just been split from a shared
++			 * queue, restore the idle window and the possible
++			 * weight raising period.
++			 */
++			bfq_bfqq_resume_state(bfqq, bic);
++		}
++	}
++
+ 	spin_unlock_irqrestore(q->queue_lock, flags);
+ 
+ 	return 0;
+@@ -3290,6 +3946,7 @@ static void bfq_init_root_group(struct bfq_group *root_group,
+ 	root_group->my_entity = NULL;
+ 	root_group->bfqd = bfqd;
+ #endif
++	root_group->rq_pos_tree = RB_ROOT;
+ 	for (i = 0; i < BFQ_IOPRIO_CLASSES; i++)
+ 		root_group->sched_data.service_tree[i] = BFQ_SERVICE_TREE_INIT;
+ }
+@@ -3370,6 +4027,8 @@ static int bfq_init_queue(struct request_queue *q, struct elevator_type *e)
+ 	bfqd->bfq_timeout[BLK_RW_ASYNC] = bfq_timeout_async;
+ 	bfqd->bfq_timeout[BLK_RW_SYNC] = bfq_timeout_sync;
+ 
++	bfqd->bfq_coop_thresh = 2;
++	bfqd->bfq_failed_cooperations = 7000;
+ 	bfqd->bfq_requests_within_timer = 120;
+ 
+ 	bfqd->bfq_large_burst_thresh = 11;
+diff --git a/block/bfq.h b/block/bfq.h
+index 3bb7df2..32dfcee 100644
+--- a/block/bfq.h
++++ b/block/bfq.h
+@@ -183,6 +183,8 @@ struct bfq_group;
+  *                    ioprio_class value.
+  * @new_bfqq: shared bfq_queue if queue is cooperating with
+  *           one or more other queues.
++ * @pos_node: request-position tree member (see bfq_group's @rq_pos_tree).
++ * @pos_root: request-position tree root (see bfq_group's @rq_pos_tree).
+  * @sort_list: sorted list of pending requests.
+  * @next_rq: if fifo isn't expired, next request to serve.
+  * @queued: nr of requests queued in @sort_list.
+@@ -304,6 +306,26 @@ struct bfq_ttime {
+  * @ttime: associated @bfq_ttime struct
+  * @ioprio: per (request_queue, blkcg) ioprio.
+  * @blkcg_id: id of the blkcg the related io_cq belongs to.
++ * @wr_time_left: snapshot of the time left before weight raising ends
++ *                for the sync queue associated to this process; this
++ *		  snapshot is taken to remember this value while the weight
++ *		  raising is suspended because the queue is merged with a
++ *		  shared queue, and is used to set @raising_cur_max_time
++ *		  when the queue is split from the shared queue and its
++ *		  weight is raised again
++ * @saved_idle_window: same purpose as the previous field for the idle
++ *                     window
++ * @saved_IO_bound: same purpose as the previous two fields for the I/O
++ *                  bound classification of a queue
++ * @saved_in_large_burst: same purpose as the previous fields for the
++ *                        value of the field keeping the queue's belonging
++ *                        to a large burst
++ * @was_in_burst_list: true if the queue belonged to a burst list
++ *                     before its merge with another cooperating queue
++ * @cooperations: counter of consecutive successful queue merges underwent
++ *                by any of the process' @bfq_queues
++ * @failed_cooperations: counter of consecutive failed queue merges of any
++ *                       of the process' @bfq_queues
+  */
+ struct bfq_io_cq {
+ 	struct io_cq icq; /* must be the first member */
+@@ -314,6 +336,16 @@ struct bfq_io_cq {
+ #ifdef CONFIG_BFQ_GROUP_IOSCHED
+ 	uint64_t blkcg_id; /* the current blkcg ID */
+ #endif
++
++	unsigned int wr_time_left;
++	bool saved_idle_window;
++	bool saved_IO_bound;
++
++	bool saved_in_large_burst;
++	bool was_in_burst_list;
++
++	unsigned int cooperations;
++	unsigned int failed_cooperations;
+ };
+ 
+ enum bfq_device_speed {
+@@ -557,6 +589,9 @@ enum bfqq_state_flags {
+ 					 * may need softrt-next-start
+ 					 * update
+ 					 */
++	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
++	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be split */
++	BFQ_BFQQ_FLAG_just_split,	/* queue has just been split */
+ };
+ 
+ #define BFQ_BFQQ_FNS(name)						\
+@@ -583,6 +618,9 @@ BFQ_BFQQ_FNS(budget_new);
+ BFQ_BFQQ_FNS(IO_bound);
+ BFQ_BFQQ_FNS(in_large_burst);
+ BFQ_BFQQ_FNS(constantly_seeky);
++BFQ_BFQQ_FNS(coop);
++BFQ_BFQQ_FNS(split_coop);
++BFQ_BFQQ_FNS(just_split);
+ BFQ_BFQQ_FNS(softrt_update);
+ #undef BFQ_BFQQ_FNS
+ 
+@@ -675,6 +713,9 @@ struct bfq_group_data {
+  *                   are groups with more than one active @bfq_entity
+  *                   (see the comments to the function
+  *                   bfq_bfqq_must_not_expire()).
++ * @rq_pos_tree: rbtree sorted by next_request position, used when
++ *               determining if two or more queues have interleaving
++ *               requests (see bfq_find_close_cooperator()).
+  *
+  * Each (device, cgroup) pair has its own bfq_group, i.e., for each cgroup
+  * there is a set of bfq_groups, each one collecting the lower-level
+@@ -701,6 +742,8 @@ struct bfq_group {
+ 
+ 	int active_entities;
+ 
++	struct rb_root rq_pos_tree;
++
+ 	struct bfqg_stats stats;
+ 	struct bfqg_stats dead_stats;	/* stats pushed from dead children */
+ };
+@@ -711,6 +754,8 @@ struct bfq_group {
+ 
+ 	struct bfq_queue *async_bfqq[2][IOPRIO_BE_NR];
+ 	struct bfq_queue *async_idle_bfqq;
++
++	struct rb_root rq_pos_tree;
+ };
+ #endif
+ 
+@@ -787,6 +832,27 @@ static void bfq_put_bfqd_unlock(struct bfq_data *bfqd, unsigned long *flags)
+ 	spin_unlock_irqrestore(bfqd->queue->queue_lock, *flags);
+ }
+ 
++#ifdef CONFIG_BFQ_GROUP_IOSCHED
++
++static struct bfq_group *bfq_bfqq_to_bfqg(struct bfq_queue *bfqq)
++{
++	struct bfq_entity *group_entity = bfqq->entity.parent;
++
++	if (!group_entity)
++		group_entity = &bfqq->bfqd->root_group->entity;
++
++	return container_of(group_entity, struct bfq_group, entity);
++}
++
++#else
++
++static struct bfq_group *bfq_bfqq_to_bfqg(struct bfq_queue *bfqq)
++{
++	return bfqq->bfqd->root_group;
++}
++
++#endif
++
+ static void bfq_check_ioprio_change(struct bfq_io_cq *bic, struct bio *bio);
+ static void bfq_put_queue(struct bfq_queue *bfqq);
+ static void bfq_dispatch_insert(struct request_queue *q, struct request *rq);
+-- 
+1.9.1
+
diff --git a/helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r5-for-3.13.0.patch b/helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r5-for-3.13.0.patch
deleted file mode 100644
index 5eedd4cf3..000000000
--- a/helpers/DATA/linux/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r5-for-3.13.0.patch
+++ /dev/null
@@ -1,1188 +0,0 @@
-From a3cae97251b46ad62189d7708639362249d053f1 Mon Sep 17 00:00:00 2001
-From: Mauro Andreolini <mauro.andreolini@unimore.it>
-Date: Wed, 18 Jun 2014 18:02:49 +0200
-Subject: [PATCH 3/3] block, bfq: add Early Queue Merge (EQM) to BFQ-v7r5 for
- 3.13.0
-
-A set of processes may happen  to  perform interleaved reads, i.e.,requests
-whose union would give rise to a  sequential read  pattern.  There are two
-typical  cases: in the first  case,   processes  read  fixed-size chunks of
-data at a fixed distance from each other, while in the second case processes
-may read variable-size chunks at  variable distances. The latter case occurs
-for  example with  QEMU, which  splits the  I/O generated  by the  guest into
-multiple chunks,  and lets these chunks  be served by a  pool of cooperating
-processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
-available  process. CFQ  uses actual  queue merging  for the  first type of
-rocesses, whereas it  uses preemption to get a sequential  read pattern out
-of the read requests  performed by the second type of  processes. In the end
-it uses  two different  mechanisms to  achieve the  same goal: boosting the
-throughput with interleaved I/O.
-
-This patch introduces  Early Queue Merge (EQM), a unified mechanism to get a
-sequential  read pattern  with both  types of  processes. The  main idea is
-checking newly arrived requests against the next request of the active queue
-both in case of actual request insert and in case of request merge. By doing
-so, both the types of processes can be handled by just merging their queues.
-EQM is  then simpler and  more compact than the  pair of mechanisms used in
-CFQ.
-
-Finally, EQM  also preserves the  typical low-latency properties of BFQ, by
-properly restoring the weight-raising state of  a queue when it gets back to
-a non-merged state.
-
-Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
-Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
-Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
----
- block/bfq-iosched.c | 736 ++++++++++++++++++++++++++++++++++++----------------
- block/bfq-sched.c   |  28 --
- block/bfq.h         |  46 +++-
- 3 files changed, 556 insertions(+), 254 deletions(-)
-
-diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
-index 0cbb182..e5300f4 100644
---- a/block/bfq-iosched.c
-+++ b/block/bfq-iosched.c
-@@ -571,6 +571,57 @@ static inline unsigned int bfq_wr_duration(struct bfq_data *bfqd)
- 	return dur;
- }
- 
-+static inline unsigned
-+bfq_bfqq_cooperations(struct bfq_queue *bfqq)
-+{
-+	return bfqq->bic ? bfqq->bic->cooperations : 0;
-+}
-+
-+static inline void
-+bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_io_cq *bic)
-+{
-+	if (bic->saved_idle_window)
-+		bfq_mark_bfqq_idle_window(bfqq);
-+	else
-+		bfq_clear_bfqq_idle_window(bfqq);
-+	if (bic->saved_IO_bound)
-+		bfq_mark_bfqq_IO_bound(bfqq);
-+	else
-+		bfq_clear_bfqq_IO_bound(bfqq);
-+	if (bic->wr_time_left && bfqq->bfqd->low_latency &&
-+	    bic->cooperations < bfqq->bfqd->bfq_coop_thresh) {
-+		/*
-+		 * Start a weight raising period with the duration given by
-+		 * the raising_time_left snapshot.
-+		 */
-+		if (bfq_bfqq_busy(bfqq))
-+			bfqq->bfqd->wr_busy_queues++;
-+		bfqq->wr_coeff = bfqq->bfqd->bfq_wr_coeff;
-+		bfqq->wr_cur_max_time = bic->wr_time_left;
-+		bfqq->last_wr_start_finish = jiffies;
-+		bfqq->entity.ioprio_changed = 1;
-+	}
-+	/*
-+	 * Clear wr_time_left to prevent bfq_bfqq_save_state() from
-+	 * getting confused about the queue's need of a weight-raising
-+	 * period.
-+	 */
-+	bic->wr_time_left = 0;
-+}
-+
-+/*
-+ * Must be called with the queue_lock held.
-+ */
-+static int bfqq_process_refs(struct bfq_queue *bfqq)
-+{
-+	int process_refs, io_refs;
-+
-+	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
-+	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
-+	BUG_ON(process_refs < 0);
-+	return process_refs;
-+}
-+
- static void bfq_add_request(struct request *rq)
- {
- 	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-@@ -602,8 +653,11 @@ static void bfq_add_request(struct request *rq)
- 
- 	if (!bfq_bfqq_busy(bfqq)) {
- 		int soft_rt = bfqd->bfq_wr_max_softrt_rate > 0 &&
-+			bfq_bfqq_cooperations(bfqq) < bfqd->bfq_coop_thresh &&
- 			time_is_before_jiffies(bfqq->soft_rt_next_start);
--		idle_for_long_time = time_is_before_jiffies(
-+		idle_for_long_time = bfq_bfqq_cooperations(bfqq) <
-+				     bfqd->bfq_coop_thresh &&
-+			time_is_before_jiffies(
- 			bfqq->budget_timeout +
- 			bfqd->bfq_wr_min_idle_time);
- 		entity->budget = max_t(unsigned long, bfqq->max_budget,
-@@ -624,11 +678,20 @@ static void bfq_add_request(struct request *rq)
- 		if (!bfqd->low_latency)
- 			goto add_bfqq_busy;
- 
-+		if (bfq_bfqq_just_split(bfqq))
-+			goto set_ioprio_changed;
-+
- 		/*
--		 * If the queue is not being boosted and has been idle
--		 * for enough time, start a weight-raising period
-+		 * If the queue:
-+		 * - is not being boosted,
-+		 * - has been idle for enough time,
-+		 * - is not a sync queue or is linked to a bfq_io_cq (it is
-+		 *   shared "for its nature" or it is not shared and its
-+		 *   requests have not been redirected to a shared queue)
-+		 * start a weight-raising period.
- 		 */
--		if (old_wr_coeff == 1 && (idle_for_long_time || soft_rt)) {
-+		if (old_wr_coeff == 1 && (idle_for_long_time || soft_rt) &&
-+		    (!bfq_bfqq_sync(bfqq) || bfqq->bic != NULL)) {
- 			bfqq->wr_coeff = bfqd->bfq_wr_coeff;
- 			if (idle_for_long_time)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
-@@ -642,9 +705,11 @@ static void bfq_add_request(struct request *rq)
- 		} else if (old_wr_coeff > 1) {
- 			if (idle_for_long_time)
- 				bfqq->wr_cur_max_time = bfq_wr_duration(bfqd);
--			else if (bfqq->wr_cur_max_time ==
--				 bfqd->bfq_wr_rt_max_time &&
--				 !soft_rt) {
-+			else if (bfq_bfqq_cooperations(bfqq) >=
-+					bfqd->bfq_coop_thresh ||
-+				 (bfqq->wr_cur_max_time ==
-+				  bfqd->bfq_wr_rt_max_time &&
-+				  !soft_rt)) {
- 				bfqq->wr_coeff = 1;
- 				bfq_log_bfqq(bfqd, bfqq,
- 					"wrais ending at %lu, rais_max_time %u",
-@@ -660,18 +725,18 @@ static void bfq_add_request(struct request *rq)
- 				/*
- 				 *
- 				 * The remaining weight-raising time is lower
--				 * than bfqd->bfq_wr_rt_max_time, which
--				 * means that the application is enjoying
--				 * weight raising either because deemed soft-
--				 * rt in the near past, or because deemed
--				 * interactive a long ago. In both cases,
--				 * resetting now the current remaining weight-
--				 * raising time for the application to the
--				 * weight-raising duration for soft rt
--				 * applications would not cause any latency
--				 * increase for the application (as the new
--				 * duration would be higher than the remaining
--				 * time).
-+				 * than bfqd->bfq_wr_rt_max_time, which means
-+				 * that the application is enjoying weight
-+				 * raising either because deemed soft-rt in
-+				 * the near past, or because deemed interactive
-+				 * a long ago.
-+				 * In both cases, resetting now the current
-+				 * remaining weight-raising time for the
-+				 * application to the weight-raising duration
-+				 * for soft rt applications would not cause any
-+				 * latency increase for the application (as the
-+				 * new duration would be higher than the
-+				 * remaining time).
- 				 *
- 				 * In addition, the application is now meeting
- 				 * the requirements for being deemed soft rt.
-@@ -706,6 +771,7 @@ static void bfq_add_request(struct request *rq)
- 					bfqd->bfq_wr_rt_max_time;
- 			}
- 		}
-+set_ioprio_changed:
- 		if (old_wr_coeff != bfqq->wr_coeff)
- 			entity->ioprio_changed = 1;
- add_bfqq_busy:
-@@ -918,90 +984,35 @@ static void bfq_end_wr(struct bfq_data *bfqd)
- 	spin_unlock_irq(bfqd->queue->queue_lock);
- }
- 
--static int bfq_allow_merge(struct request_queue *q, struct request *rq,
--			   struct bio *bio)
-+static inline sector_t bfq_io_struct_pos(void *io_struct, bool request)
- {
--	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_io_cq *bic;
--	struct bfq_queue *bfqq;
--
--	/*
--	 * Disallow merge of a sync bio into an async request.
--	 */
--	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
--		return 0;
--
--	/*
--	 * Lookup the bfqq that this bio will be queued with. Allow
--	 * merge only if rq is queued there.
--	 * Queue lock is held here.
--	 */
--	bic = bfq_bic_lookup(bfqd, current->io_context);
--	if (bic == NULL)
--		return 0;
--
--	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
--	return bfqq == RQ_BFQQ(rq);
--}
--
--static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
--				       struct bfq_queue *bfqq)
--{
--	if (bfqq != NULL) {
--		bfq_mark_bfqq_must_alloc(bfqq);
--		bfq_mark_bfqq_budget_new(bfqq);
--		bfq_clear_bfqq_fifo_expire(bfqq);
--
--		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
--
--		bfq_log_bfqq(bfqd, bfqq,
--			     "set_in_service_queue, cur-budget = %lu",
--			     bfqq->entity.budget);
--	}
--
--	bfqd->in_service_queue = bfqq;
--}
--
--/*
-- * Get and set a new queue for service.
-- */
--static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd,
--						  struct bfq_queue *bfqq)
--{
--	if (!bfqq)
--		bfqq = bfq_get_next_queue(bfqd);
-+	if (request)
-+		return blk_rq_pos(io_struct);
- 	else
--		bfq_get_next_queue_forced(bfqd, bfqq);
--
--	__bfq_set_in_service_queue(bfqd, bfqq);
--	return bfqq;
-+		return ((struct bio *)io_struct)->bi_sector;
- }
- 
--static inline sector_t bfq_dist_from_last(struct bfq_data *bfqd,
--					  struct request *rq)
-+static inline sector_t bfq_dist_from(sector_t pos1,
-+				     sector_t pos2)
- {
--	if (blk_rq_pos(rq) >= bfqd->last_position)
--		return blk_rq_pos(rq) - bfqd->last_position;
-+	if (pos1 >= pos2)
-+		return pos1 - pos2;
- 	else
--		return bfqd->last_position - blk_rq_pos(rq);
-+		return pos2 - pos1;
- }
- 
--/*
-- * Return true if bfqq has no request pending and rq is close enough to
-- * bfqd->last_position, or if rq is closer to bfqd->last_position than
-- * bfqq->next_rq
-- */
--static inline int bfq_rq_close(struct bfq_data *bfqd, struct request *rq)
-+static inline int bfq_rq_close_to_sector(void *io_struct, bool request,
-+					 sector_t sector)
- {
--	return bfq_dist_from_last(bfqd, rq) <= BFQQ_SEEK_THR;
-+	return bfq_dist_from(bfq_io_struct_pos(io_struct, request), sector) <=
-+	       BFQQ_SEEK_THR;
- }
- 
--static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
-+static struct bfq_queue *bfqq_close(struct bfq_data *bfqd, sector_t sector)
- {
- 	struct rb_root *root = &bfqd->rq_pos_tree;
- 	struct rb_node *parent, *node;
- 	struct bfq_queue *__bfqq;
--	sector_t sector = bfqd->last_position;
- 
- 	if (RB_EMPTY_ROOT(root))
- 		return NULL;
-@@ -1020,7 +1031,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 	 * next_request position).
- 	 */
- 	__bfqq = rb_entry(parent, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	if (blk_rq_pos(__bfqq->next_rq) < sector)
-@@ -1031,7 +1042,7 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- 		return NULL;
- 
- 	__bfqq = rb_entry(node, struct bfq_queue, pos_node);
--	if (bfq_rq_close(bfqd, __bfqq->next_rq))
-+	if (bfq_rq_close_to_sector(__bfqq->next_rq, true, sector))
- 		return __bfqq;
- 
- 	return NULL;
-@@ -1040,14 +1051,12 @@ static struct bfq_queue *bfqq_close(struct bfq_data *bfqd)
- /*
-  * bfqd - obvious
-  * cur_bfqq - passed in so that we don't decide that the current queue
-- *            is closely cooperating with itself.
-- *
-- * We are assuming that cur_bfqq has dispatched at least one request,
-- * and that bfqd->last_position reflects a position on the disk associated
-- * with the I/O issued by cur_bfqq.
-+ *            is closely cooperating with itself
-+ * sector - used as a reference point to search for a close queue
-  */
- static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
--					      struct bfq_queue *cur_bfqq)
-+					      struct bfq_queue *cur_bfqq,
-+					      sector_t sector)
- {
- 	struct bfq_queue *bfqq;
- 
-@@ -1067,7 +1076,7 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	 * working closely on the same area of the disk. In that case,
- 	 * we can group them together and don't waste time idling.
- 	 */
--	bfqq = bfqq_close(bfqd);
-+	bfqq = bfqq_close(bfqd, sector);
- 	if (bfqq == NULL || bfqq == cur_bfqq)
- 		return NULL;
- 
-@@ -1094,6 +1103,305 @@ static struct bfq_queue *bfq_close_cooperator(struct bfq_data *bfqd,
- 	return bfqq;
- }
- 
-+static struct bfq_queue *
-+bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	int process_refs, new_process_refs;
-+	struct bfq_queue *__bfqq;
-+
-+	/*
-+	 * If there are no process references on the new_bfqq, then it is
-+	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
-+	 * may have dropped their last reference (not just their last process
-+	 * reference).
-+	 */
-+	if (!bfqq_process_refs(new_bfqq))
-+		return NULL;
-+
-+	/* Avoid a circular list and skip interim queue merges. */
-+	while ((__bfqq = new_bfqq->new_bfqq)) {
-+		if (__bfqq == bfqq)
-+			return NULL;
-+		new_bfqq = __bfqq;
-+	}
-+
-+	process_refs = bfqq_process_refs(bfqq);
-+	new_process_refs = bfqq_process_refs(new_bfqq);
-+	/*
-+	 * If the process for the bfqq has gone away, there is no
-+	 * sense in merging the queues.
-+	 */
-+	if (process_refs == 0 || new_process_refs == 0)
-+		return NULL;
-+
-+	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
-+		new_bfqq->pid);
-+
-+	/*
-+	 * Merging is just a redirection: the requests of the process
-+	 * owning one of the two queues are redirected to the other queue.
-+	 * The latter queue, in its turn, is set as shared if this is the
-+	 * first time that the requests of some process are redirected to
-+	 * it.
-+	 *
-+	 * We redirect bfqq to new_bfqq and not the opposite, because we
-+	 * are in the context of the process owning bfqq, hence we have
-+	 * the io_cq of this process. So we can immediately configure this
-+	 * io_cq to redirect the requests of the process to new_bfqq.
-+	 *
-+	 * NOTE, even if new_bfqq coincides with the in-service queue, the
-+	 * io_cq of new_bfqq is not available, because, if the in-service
-+	 * queue is shared, bfqd->in_service_bic may not point to the
-+	 * io_cq of the in-service queue.
-+	 * Redirecting the requests of the process owning bfqq to the
-+	 * currently in-service queue is in any case the best option, as
-+	 * we feed the in-service queue with new requests close to the
-+	 * last request served and, by doing so, hopefully increase the
-+	 * throughput.
-+	 */
-+	bfqq->new_bfqq = new_bfqq;
-+	atomic_add(process_refs, &new_bfqq->ref);
-+	return new_bfqq;
-+}
-+
-+/*
-+ * Attempt to schedule a merge of bfqq with the currently in-service queue
-+ * or with a close queue among the scheduled queues.
-+ * Return NULL if no merge was scheduled, a pointer to the shared bfq_queue
-+ * structure otherwise.
-+ */
-+static struct bfq_queue *
-+bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
-+		     void *io_struct, bool request)
-+{
-+	struct bfq_queue *in_service_bfqq, *new_bfqq;
-+
-+	if (bfqq->new_bfqq)
-+		return bfqq->new_bfqq;
-+
-+	if (!io_struct)
-+		return NULL;
-+
-+	in_service_bfqq = bfqd->in_service_queue;
-+
-+	if (in_service_bfqq == NULL || in_service_bfqq == bfqq ||
-+	    !bfqd->in_service_bic)
-+		goto check_scheduled;
-+
-+	if (bfq_class_idle(in_service_bfqq) || bfq_class_idle(bfqq))
-+		goto check_scheduled;
-+
-+	if (bfq_class_rt(in_service_bfqq) != bfq_class_rt(bfqq))
-+		goto check_scheduled;
-+
-+	if (in_service_bfqq->entity.parent != bfqq->entity.parent)
-+		goto check_scheduled;
-+
-+	if (bfq_rq_close_to_sector(io_struct, request, bfqd->last_position) &&
-+	    bfq_bfqq_sync(in_service_bfqq) && bfq_bfqq_sync(bfqq)) {
-+		new_bfqq = bfq_setup_merge(bfqq, in_service_bfqq);
-+		if (new_bfqq != NULL)
-+			return new_bfqq; /* Merge with in-service queue */
-+	}
-+
-+	/*
-+	 * Check whether there is a cooperator among currently scheduled
-+	 * queues. The only thing we need is that the bio/request is not
-+	 * NULL, as we need it to establish whether a cooperator exists.
-+	 */
-+check_scheduled:
-+	new_bfqq = bfq_close_cooperator(bfqd, bfqq,
-+					bfq_io_struct_pos(io_struct, request));
-+	if (new_bfqq)
-+		return bfq_setup_merge(bfqq, new_bfqq);
-+
-+	return NULL;
-+}
-+
-+static inline void
-+bfq_bfqq_save_state(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic == NULL, the queue is already shared or its requests
-+	 * have already been redirected to a shared queue; both idle window
-+	 * and weight raising state have already been saved. Do nothing.
-+	 */
-+	if (bfqq->bic == NULL)
-+		return;
-+	if (bfqq->bic->wr_time_left)
-+		/*
-+		 * This is the queue of a just-started process, and would
-+		 * deserve weight raising: we set wr_time_left to the full
-+		 * weight-raising duration to trigger weight-raising when
-+		 * and if the queue is split and the first request of the
-+		 * queue is enqueued.
-+		 */
-+		bfqq->bic->wr_time_left = bfq_wr_duration(bfqq->bfqd);
-+	else if (bfqq->wr_coeff > 1) {
-+		unsigned long wr_duration =
-+			jiffies - bfqq->last_wr_start_finish;
-+		/*
-+		 * It may happen that a queue's weight raising period lasts
-+		 * longer than its wr_cur_max_time, as weight raising is
-+		 * handled only when a request is enqueued or dispatched (it
-+		 * does not use any timer). If the weight raising period is
-+		 * about to end, don't save it.
-+		 */
-+		if (bfqq->wr_cur_max_time <= wr_duration)
-+			bfqq->bic->wr_time_left = 0;
-+		else
-+			bfqq->bic->wr_time_left =
-+				bfqq->wr_cur_max_time - wr_duration;
-+		/*
-+		 * The bfq_queue is becoming shared or the requests of the
-+		 * process owning the queue are being redirected to a shared
-+		 * queue. Stop the weight raising period of the queue, as in
-+		 * both cases it should not be owned by an interactive or
-+		 * soft real-time application.
-+		 */
-+		bfq_bfqq_end_wr(bfqq);
-+	} else
-+		bfqq->bic->wr_time_left = 0;
-+	bfqq->bic->saved_idle_window = bfq_bfqq_idle_window(bfqq);
-+	bfqq->bic->saved_IO_bound = bfq_bfqq_IO_bound(bfqq);
-+	bfqq->bic->cooperations++;
-+	bfqq->bic->failed_cooperations = 0;
-+}
-+
-+static inline void
-+bfq_get_bic_reference(struct bfq_queue *bfqq)
-+{
-+	/*
-+	 * If bfqq->bic has a non-NULL value, the bic to which it belongs
-+	 * is about to begin using a shared bfq_queue.
-+	 */
-+	if (bfqq->bic)
-+		atomic_long_inc(&bfqq->bic->icq.ioc->refcount);
-+}
-+
-+static void
-+bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
-+		struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
-+{
-+	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
-+		(long unsigned)new_bfqq->pid);
-+	/* Save weight raising and idle window of the merged queues */
-+	bfq_bfqq_save_state(bfqq);
-+	bfq_bfqq_save_state(new_bfqq);
-+	if (bfq_bfqq_IO_bound(bfqq))
-+		bfq_mark_bfqq_IO_bound(new_bfqq);
-+	bfq_clear_bfqq_IO_bound(bfqq);
-+	/*
-+	 * Grab a reference to the bic, to prevent it from being destroyed
-+	 * before being possibly touched by a bfq_split_bfqq().
-+	 */
-+	bfq_get_bic_reference(bfqq);
-+	bfq_get_bic_reference(new_bfqq);
-+	/*
-+	 * Merge queues (that is, let bic redirect its requests to new_bfqq)
-+	 */
-+	bic_set_bfqq(bic, new_bfqq, 1);
-+	bfq_mark_bfqq_coop(new_bfqq);
-+	/*
-+	 * new_bfqq now belongs to at least two bics (it is a shared queue):
-+	 * set new_bfqq->bic to NULL. bfqq either:
-+	 * - does not belong to any bic any more, and hence bfqq->bic must
-+	 *   be set to NULL, or
-+	 * - is a queue whose owning bics have already been redirected to a
-+	 *   different queue, hence the queue is destined to not belong to
-+	 *   any bic soon and bfqq->bic is already NULL (therefore the next
-+	 *   assignment causes no harm).
-+	 */
-+	new_bfqq->bic = NULL;
-+	bfqq->bic = NULL;
-+	bfq_put_queue(bfqq);
-+}
-+
-+static inline void bfq_bfqq_increase_failed_cooperations(struct bfq_queue *bfqq)
-+{
-+	struct bfq_io_cq *bic = bfqq->bic;
-+	struct bfq_data *bfqd = bfqq->bfqd;
-+
-+	if (bic && bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh) {
-+		bic->failed_cooperations++;
-+		if (bic->failed_cooperations >= bfqd->bfq_failed_cooperations)
-+			bic->cooperations = 0;
-+	}
-+}
-+
-+static int bfq_allow_merge(struct request_queue *q, struct request *rq,
-+			   struct bio *bio)
-+{
-+	struct bfq_data *bfqd = q->elevator->elevator_data;
-+	struct bfq_io_cq *bic;
-+	struct bfq_queue *bfqq, *new_bfqq;
-+
-+	/*
-+	 * Disallow merge of a sync bio into an async request.
-+	 */
-+	if (bfq_bio_sync(bio) && !rq_is_sync(rq))
-+		return 0;
-+
-+	/*
-+	 * Lookup the bfqq that this bio will be queued with. Allow
-+	 * merge only if rq is queued there.
-+	 * Queue lock is held here.
-+	 */
-+	bic = bfq_bic_lookup(bfqd, current->io_context);
-+	if (bic == NULL)
-+		return 0;
-+
-+	bfqq = bic_to_bfqq(bic, bfq_bio_sync(bio));
-+	/*
-+	 * We take advantage of this function to perform an early merge
-+	 * of the queues of possible cooperating processes.
-+	 */
-+	if (bfqq != NULL) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, bio, false);
-+		if (new_bfqq != NULL) {
-+			bfq_merge_bfqqs(bfqd, bic, bfqq, new_bfqq);
-+			/*
-+			 * If we get here, the bio will be queued in the
-+			 * shared queue, i.e., new_bfqq, so use new_bfqq
-+			 * to decide whether bio and rq can be merged.
-+			 */
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
-+	return bfqq == RQ_BFQQ(rq);
-+}
-+
-+static void __bfq_set_in_service_queue(struct bfq_data *bfqd,
-+				       struct bfq_queue *bfqq)
-+{
-+	if (bfqq != NULL) {
-+		bfq_mark_bfqq_must_alloc(bfqq);
-+		bfq_mark_bfqq_budget_new(bfqq);
-+		bfq_clear_bfqq_fifo_expire(bfqq);
-+
-+		bfqd->budgets_assigned = (bfqd->budgets_assigned*7 + 256) / 8;
-+
-+		bfq_log_bfqq(bfqd, bfqq,
-+			     "set_in_service_queue, cur-budget = %lu",
-+			     bfqq->entity.budget);
-+	}
-+
-+	bfqd->in_service_queue = bfqq;
-+}
-+
-+/*
-+ * Get and set a new queue for service.
-+ */
-+static struct bfq_queue *bfq_set_in_service_queue(struct bfq_data *bfqd)
-+{
-+	struct bfq_queue *bfqq = bfq_get_next_queue(bfqd);
-+
-+	__bfq_set_in_service_queue(bfqd, bfqq);
-+	return bfqq;
-+}
-+
- /*
-  * If enough samples have been computed, return the current max budget
-  * stored in bfqd, which is dynamically updated according to the
-@@ -1237,63 +1545,6 @@ static struct request *bfq_check_fifo(struct bfq_queue *bfqq)
- 	return rq;
- }
- 
--/*
-- * Must be called with the queue_lock held.
-- */
--static int bfqq_process_refs(struct bfq_queue *bfqq)
--{
--	int process_refs, io_refs;
--
--	io_refs = bfqq->allocated[READ] + bfqq->allocated[WRITE];
--	process_refs = atomic_read(&bfqq->ref) - io_refs - bfqq->entity.on_st;
--	BUG_ON(process_refs < 0);
--	return process_refs;
--}
--
--static void bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
--{
--	int process_refs, new_process_refs;
--	struct bfq_queue *__bfqq;
--
--	/*
--	 * If there are no process references on the new_bfqq, then it is
--	 * unsafe to follow the ->new_bfqq chain as other bfqq's in the chain
--	 * may have dropped their last reference (not just their last process
--	 * reference).
--	 */
--	if (!bfqq_process_refs(new_bfqq))
--		return;
--
--	/* Avoid a circular list and skip interim queue merges. */
--	while ((__bfqq = new_bfqq->new_bfqq)) {
--		if (__bfqq == bfqq)
--			return;
--		new_bfqq = __bfqq;
--	}
--
--	process_refs = bfqq_process_refs(bfqq);
--	new_process_refs = bfqq_process_refs(new_bfqq);
--	/*
--	 * If the process for the bfqq has gone away, there is no
--	 * sense in merging the queues.
--	 */
--	if (process_refs == 0 || new_process_refs == 0)
--		return;
--
--	/*
--	 * Merge in the direction of the lesser amount of work.
--	 */
--	if (new_process_refs >= process_refs) {
--		bfqq->new_bfqq = new_bfqq;
--		atomic_add(process_refs, &new_bfqq->ref);
--	} else {
--		new_bfqq->new_bfqq = bfqq;
--		atomic_add(new_process_refs, &bfqq->ref);
--	}
--	bfq_log_bfqq(bfqq->bfqd, bfqq, "scheduling merge with queue %d",
--		new_bfqq->pid);
--}
--
- static inline unsigned long bfq_bfqq_budget_left(struct bfq_queue *bfqq)
- {
- 	struct bfq_entity *entity = &bfqq->entity;
-@@ -2011,7 +2262,7 @@ static inline bool bfq_bfqq_must_idle(struct bfq_queue *bfqq)
-  */
- static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- {
--	struct bfq_queue *bfqq, *new_bfqq = NULL;
-+	struct bfq_queue *bfqq;
- 	struct request *next_rq;
- 	enum bfqq_expiration reason = BFQ_BFQQ_BUDGET_TIMEOUT;
- 
-@@ -2021,17 +2272,6 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 
- 	bfq_log_bfqq(bfqd, bfqq, "select_queue: already in-service queue");
- 
--	/*
--         * If another queue has a request waiting within our mean seek
--         * distance, let it run. The expire code will check for close
--         * cooperators and put the close queue at the front of the
--         * service tree. If possible, merge the expiring queue with the
--         * new bfqq.
--         */
--        new_bfqq = bfq_close_cooperator(bfqd, bfqq);
--        if (new_bfqq != NULL && bfqq->new_bfqq == NULL)
--                bfq_setup_merge(bfqq, new_bfqq);
--
- 	if (bfq_may_expire_for_budg_timeout(bfqq) &&
- 	    !timer_pending(&bfqd->idle_slice_timer) &&
- 	    !bfq_bfqq_must_idle(bfqq))
-@@ -2070,10 +2310,7 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 				bfq_clear_bfqq_wait_request(bfqq);
- 				del_timer(&bfqd->idle_slice_timer);
- 			}
--			if (new_bfqq == NULL)
--				goto keep_queue;
--			else
--				goto expire;
-+			goto keep_queue;
- 		}
- 	}
- 
-@@ -2082,40 +2319,30 @@ static struct bfq_queue *bfq_select_queue(struct bfq_data *bfqd)
- 	 * in flight (possibly waiting for a completion) or is idling for a
- 	 * new request, then keep it.
- 	 */
--	if (new_bfqq == NULL && (timer_pending(&bfqd->idle_slice_timer) ||
--	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq)))) {
-+	if (timer_pending(&bfqd->idle_slice_timer) ||
-+	    (bfqq->dispatched != 0 && bfq_bfqq_must_not_expire(bfqq))) {
- 		bfqq = NULL;
- 		goto keep_queue;
--	} else if (new_bfqq != NULL && timer_pending(&bfqd->idle_slice_timer)) {
--		/*
--		 * Expiring the queue because there is a close cooperator,
--		 * cancel timer.
--		 */
--		bfq_clear_bfqq_wait_request(bfqq);
--		del_timer(&bfqd->idle_slice_timer);
- 	}
- 
- 	reason = BFQ_BFQQ_NO_MORE_REQUESTS;
- expire:
- 	bfq_bfqq_expire(bfqd, bfqq, 0, reason);
- new_queue:
--	bfqq = bfq_set_in_service_queue(bfqd, new_bfqq);
-+	bfqq = bfq_set_in_service_queue(bfqd);
- 	bfq_log(bfqd, "select_queue: new queue %d returned",
- 		bfqq != NULL ? bfqq->pid : 0);
- keep_queue:
- 	return bfqq;
- }
- 
--static void bfq_update_wr_data(struct bfq_data *bfqd,
--			       struct bfq_queue *bfqq)
-+static void bfq_update_wr_data(struct bfq_data *bfqd, struct bfq_queue *bfqq)
- {
--	if (bfqq->wr_coeff > 1) { /* queue is being boosted */
--		struct bfq_entity *entity = &bfqq->entity;
--
-+	struct bfq_entity *entity = &bfqq->entity;
-+	if (bfqq->wr_coeff > 1) { /* queue is being weight-raised */
- 		bfq_log_bfqq(bfqd, bfqq,
- 			"raising period dur %u/%u msec, old coeff %u, w %d(%d)",
--			jiffies_to_msecs(jiffies -
--				bfqq->last_wr_start_finish),
-+			jiffies_to_msecs(jiffies - bfqq->last_wr_start_finish),
- 			jiffies_to_msecs(bfqq->wr_cur_max_time),
- 			bfqq->wr_coeff,
- 			bfqq->entity.weight, bfqq->entity.orig_weight);
-@@ -2124,11 +2351,15 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 		       entity->orig_weight * bfqq->wr_coeff);
- 		if (entity->ioprio_changed)
- 			bfq_log_bfqq(bfqd, bfqq, "WARN: pending prio change");
-+
- 		/*
- 		 * If too much time has elapsed from the beginning
--		 * of this weight-raising, stop it.
-+		 * of this weight-raising period, or the queue has
-+		 * exceeded the acceptable number of cooperations,
-+		 * stop it.
- 		 */
--		if (time_is_before_jiffies(bfqq->last_wr_start_finish +
-+		if (bfq_bfqq_cooperations(bfqq) >= bfqd->bfq_coop_thresh ||
-+		    time_is_before_jiffies(bfqq->last_wr_start_finish +
- 					   bfqq->wr_cur_max_time)) {
- 			bfqq->last_wr_start_finish = jiffies;
- 			bfq_log_bfqq(bfqd, bfqq,
-@@ -2136,11 +2367,13 @@ static void bfq_update_wr_data(struct bfq_data *bfqd,
- 				     bfqq->last_wr_start_finish,
- 				     jiffies_to_msecs(bfqq->wr_cur_max_time));
- 			bfq_bfqq_end_wr(bfqq);
--			__bfq_entity_update_weight_prio(
--				bfq_entity_service_tree(entity),
--				entity);
- 		}
- 	}
-+	/* Update weight both if it must be raised and if it must be lowered */
-+	if ((entity->weight > entity->orig_weight) != (bfqq->wr_coeff > 1))
-+		__bfq_entity_update_weight_prio(
-+			bfq_entity_service_tree(entity),
-+			entity);
- }
- 
- /*
-@@ -2377,6 +2610,25 @@ static inline void bfq_init_icq(struct io_cq *icq)
- 	struct bfq_io_cq *bic = icq_to_bic(icq);
- 
- 	bic->ttime.last_end_request = jiffies;
-+	/*
-+	 * A newly created bic indicates that the process has just
-+	 * started doing I/O, and is probably mapping into memory its
-+	 * executable and libraries: it definitely needs weight raising.
-+	 * There is however the possibility that the process performs,
-+	 * for a while, I/O close to some other process. EQM intercepts
-+	 * this behavior and may merge the queue corresponding to the
-+	 * process  with some other queue, BEFORE the weight of the queue
-+	 * is raised. Merged queues are not weight-raised (they are assumed
-+	 * to belong to processes that benefit only from high throughput).
-+	 * If the merge is basically the consequence of an accident, then
-+	 * the queue will be split soon and will get back its old weight.
-+	 * It is then important to write down somewhere that this queue
-+	 * does need weight raising, even if it did not make it to get its
-+	 * weight raised before being merged. To this purpose, we overload
-+	 * the field raising_time_left and assign 1 to it, to mark the queue
-+	 * as needing weight raising.
-+	 */
-+	bic->wr_time_left = 1;
- }
- 
- static void bfq_exit_icq(struct io_cq *icq)
-@@ -2390,6 +2642,13 @@ static void bfq_exit_icq(struct io_cq *icq)
- 	}
- 
- 	if (bic->bfqq[BLK_RW_SYNC]) {
-+		/*
-+		 * If the bic is using a shared queue, put the reference
-+		 * taken on the io_context when the bic started using a
-+		 * shared bfq_queue.
-+		 */
-+		if (bfq_bfqq_coop(bic->bfqq[BLK_RW_SYNC]))
-+			put_io_context(icq->ioc);
- 		bfq_exit_bfqq(bfqd, bic->bfqq[BLK_RW_SYNC]);
- 		bic->bfqq[BLK_RW_SYNC] = NULL;
- 	}
-@@ -2678,6 +2937,10 @@ static void bfq_update_idle_window(struct bfq_data *bfqd,
- 	if (!bfq_bfqq_sync(bfqq) || bfq_class_idle(bfqq))
- 		return;
- 
-+	/* Idle window just restored, statistics are meaningless. */
-+	if (bfq_bfqq_just_split(bfqq))
-+		return;
-+
- 	enable_idle = bfq_bfqq_idle_window(bfqq);
- 
- 	if (atomic_read(&bic->icq.ioc->active_ref) == 0 ||
-@@ -2725,6 +2988,7 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- 	if (bfqq->entity.service > bfq_max_budget(bfqd) / 8 ||
- 	    !BFQQ_SEEKY(bfqq))
- 		bfq_update_idle_window(bfqd, bfqq, bic);
-+	bfq_clear_bfqq_just_split(bfqq);
- 
- 	bfq_log_bfqq(bfqd, bfqq,
- 		     "rq_enqueued: idle_window=%d (seeky %d, mean %llu)",
-@@ -2785,13 +3049,49 @@ static void bfq_rq_enqueued(struct bfq_data *bfqd, struct bfq_queue *bfqq,
- static void bfq_insert_request(struct request_queue *q, struct request *rq)
- {
- 	struct bfq_data *bfqd = q->elevator->elevator_data;
--	struct bfq_queue *bfqq = RQ_BFQQ(rq);
-+	struct bfq_queue *bfqq = RQ_BFQQ(rq), *new_bfqq;
- 
- 	assert_spin_locked(bfqd->queue->queue_lock);
-+
-+	/*
-+	 * An unplug may trigger a requeue of a request from the device
-+	 * driver: make sure we are in process context while trying to
-+	 * merge two bfq_queues.
-+	 */
-+	if (!in_interrupt()) {
-+		new_bfqq = bfq_setup_cooperator(bfqd, bfqq, rq, true);
-+		if (new_bfqq != NULL) {
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) != bfqq)
-+				new_bfqq = bic_to_bfqq(RQ_BIC(rq), 1);
-+			/*
-+			 * Release the request's reference to the old bfqq
-+			 * and make sure one is taken to the shared queue.
-+			 */
-+			new_bfqq->allocated[rq_data_dir(rq)]++;
-+			bfqq->allocated[rq_data_dir(rq)]--;
-+			atomic_inc(&new_bfqq->ref);
-+			bfq_put_queue(bfqq);
-+			if (bic_to_bfqq(RQ_BIC(rq), 1) == bfqq)
-+				bfq_merge_bfqqs(bfqd, RQ_BIC(rq),
-+						bfqq, new_bfqq);
-+			rq->elv.priv[1] = new_bfqq;
-+			bfqq = new_bfqq;
-+		} else
-+			bfq_bfqq_increase_failed_cooperations(bfqq);
-+	}
-+
- 	bfq_init_prio_data(bfqq, RQ_BIC(rq));
- 
- 	bfq_add_request(rq);
- 
-+	/*
-+	 * Here a newly-created bfq_queue has already started a weight-raising
-+	 * period: clear raising_time_left to prevent bfq_bfqq_save_state()
-+	 * from assigning it a full weight-raising period. See the detailed
-+	 * comments about this field in bfq_init_icq().
-+	 */
-+	if (bfqq->bic != NULL)
-+		bfqq->bic->wr_time_left = 0;
- 	rq_set_fifo_time(rq, jiffies + bfqd->bfq_fifo_expire[rq_is_sync(rq)]);
- 	list_add_tail(&rq->queuelist, &bfqq->fifo);
- 
-@@ -2956,18 +3256,6 @@ static void bfq_put_request(struct request *rq)
- 	}
- }
- 
--static struct bfq_queue *
--bfq_merge_bfqqs(struct bfq_data *bfqd, struct bfq_io_cq *bic,
--		struct bfq_queue *bfqq)
--{
--	bfq_log_bfqq(bfqd, bfqq, "merging with queue %lu",
--		(long unsigned)bfqq->new_bfqq->pid);
--	bic_set_bfqq(bic, bfqq->new_bfqq, 1);
--	bfq_mark_bfqq_coop(bfqq->new_bfqq);
--	bfq_put_queue(bfqq);
--	return bic_to_bfqq(bic, 1);
--}
--
- /*
-  * Returns NULL if a new bfqq should be allocated, or the old bfqq if this
-  * was the last process referring to said bfqq.
-@@ -2976,6 +3264,9 @@ static struct bfq_queue *
- bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq)
- {
- 	bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue");
-+
-+	put_io_context(bic->icq.ioc);
-+
- 	if (bfqq_process_refs(bfqq) == 1) {
- 		bfqq->pid = current->pid;
- 		bfq_clear_bfqq_coop(bfqq);
-@@ -3004,6 +3295,7 @@ static int bfq_set_request(struct request_queue *q, struct request *rq,
- 	struct bfq_queue *bfqq;
- 	struct bfq_group *bfqg;
- 	unsigned long flags;
-+	bool split = false;
- 
- 	might_sleep_if(gfp_mask & __GFP_WAIT);
- 
-@@ -3022,24 +3314,14 @@ new_queue:
- 		bfqq = bfq_get_queue(bfqd, bfqg, is_sync, bic, gfp_mask);
- 		bic_set_bfqq(bic, bfqq, is_sync);
- 	} else {
--		/*
--		 * If the queue was seeky for too long, break it apart.
--		 */
-+		/* If the queue was seeky for too long, break it apart. */
- 		if (bfq_bfqq_coop(bfqq) && bfq_bfqq_split_coop(bfqq)) {
- 			bfq_log_bfqq(bfqd, bfqq, "breaking apart bfqq");
- 			bfqq = bfq_split_bfqq(bic, bfqq);
-+			split = true;
- 			if (!bfqq)
- 				goto new_queue;
- 		}
--
--		/*
--		 * Check to see if this queue is scheduled to merge with
--		 * another closely cooperating queue. The merging of queues
--		 * happens here as it must be done in process context.
--		 * The reference on new_bfqq was taken in merge_bfqqs.
--		 */
--		if (bfqq->new_bfqq != NULL)
--			bfqq = bfq_merge_bfqqs(bfqd, bic, bfqq);
- 	}
- 
- 	bfqq->allocated[rw]++;
-@@ -3050,6 +3332,26 @@ new_queue:
- 	rq->elv.priv[0] = bic;
- 	rq->elv.priv[1] = bfqq;
- 
-+	/*
-+	 * If a bfq_queue has only one process reference, it is owned
-+	 * by only one bfq_io_cq: we can set the bic field of the
-+	 * bfq_queue to the address of that structure. Also, if the
-+	 * queue has just been split, mark a flag so that the
-+	 * information is available to the other scheduler hooks.
-+	 */
-+	if (bfqq_process_refs(bfqq) == 1) {
-+		bfqq->bic = bic;
-+		if (split) {
-+			bfq_mark_bfqq_just_split(bfqq);
-+			/*
-+			 * If the queue has just been split from a shared
-+			 * queue, restore the idle window and the possible
-+			 * weight raising period.
-+			 */
-+			bfq_bfqq_resume_state(bfqq, bic);
-+		}
-+	}
-+
- 	spin_unlock_irqrestore(q->queue_lock, flags);
- 
- 	return 0;
-diff --git a/block/bfq-sched.c b/block/bfq-sched.c
-index c4831b7..546a254 100644
---- a/block/bfq-sched.c
-+++ b/block/bfq-sched.c
-@@ -1084,34 +1084,6 @@ static struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
- 	return bfqq;
- }
- 
--/*
-- * Forced extraction of the given queue.
-- */
--static void bfq_get_next_queue_forced(struct bfq_data *bfqd,
--				      struct bfq_queue *bfqq)
--{
--	struct bfq_entity *entity;
--	struct bfq_sched_data *sd;
--
--	BUG_ON(bfqd->in_service_queue != NULL);
--
--	entity = &bfqq->entity;
--	/*
--	 * Bubble up extraction/update from the leaf to the root.
--	*/
--	for_each_entity(entity) {
--		sd = entity->sched_data;
--		bfq_update_budget(entity);
--		bfq_update_vtime(bfq_entity_service_tree(entity));
--		bfq_active_extract(bfq_entity_service_tree(entity), entity);
--		sd->in_service_entity = entity;
--		sd->next_in_service = NULL;
--		entity->service = 0;
--	}
--
--	return;
--}
--
- static void __bfq_bfqd_reset_in_service(struct bfq_data *bfqd)
- {
- 	if (bfqd->in_service_bic != NULL) {
-diff --git a/block/bfq.h b/block/bfq.h
-index a503cb4..61194b8 100644
---- a/block/bfq.h
-+++ b/block/bfq.h
-@@ -215,18 +215,21 @@ struct bfq_group;
-  *                      idle @bfq_queue with no outstanding requests, then
-  *                      the task associated with the queue it is deemed as
-  *                      soft real-time (see the comments to the function
-- *                      bfq_bfqq_softrt_next_start()).
-+ *                      bfq_bfqq_softrt_next_start())
-  * @last_idle_bklogged: time of the last transition of the @bfq_queue from
-  *                      idle to backlogged
-  * @service_from_backlogged: cumulative service received from the @bfq_queue
-  *                           since the last transition from idle to
-  *                           backlogged
-+ * @bic: pointer to the bfq_io_cq owning the bfq_queue, set to %NULL if the
-+ *	 queue is shared
-  *
-- * A bfq_queue is a leaf request queue; it can be associated with an io_context
-- * or more, if it is async or shared between cooperating processes. @cgroup
-- * holds a reference to the cgroup, to be sure that it does not disappear while
-- * a bfqq still references it (mostly to avoid races between request issuing and
-- * task migration followed by cgroup destruction).
-+ * A bfq_queue is a leaf request queue; it can be associated with an
-+ * io_context or more, if it  is  async or shared  between  cooperating
-+ * processes. @cgroup holds a reference to the cgroup, to be sure that it
-+ * does not disappear while a bfqq still references it (mostly to avoid
-+ * races between request issuing and task migration followed by cgroup
-+ * destruction).
-  * All the fields are protected by the queue lock of the containing bfqd.
-  */
- struct bfq_queue {
-@@ -264,6 +267,7 @@ struct bfq_queue {
- 	unsigned int requests_within_timer;
- 
- 	pid_t pid;
-+	struct bfq_io_cq *bic;
- 
- 	/* weight-raising fields */
- 	unsigned long wr_cur_max_time;
-@@ -293,12 +297,34 @@ struct bfq_ttime {
-  * @icq: associated io_cq structure
-  * @bfqq: array of two process queues, the sync and the async
-  * @ttime: associated @bfq_ttime struct
-+ * @wr_time_left: snapshot of the time left before weight raising ends
-+ *                for the sync queue associated to this process; this
-+ *		  snapshot is taken to remember this value while the weight
-+ *		  raising is suspended because the queue is merged with a
-+ *		  shared queue, and is used to set @raising_cur_max_time
-+ *		  when the queue is split from the shared queue and its
-+ *		  weight is raised again
-+ * @saved_idle_window: same purpose as the previous field for the idle
-+ *                     window
-+ * @saved_IO_bound: same purpose as the previous two fields for the I/O
-+ *                  bound classification of a queue
-+ * @cooperations: counter of consecutive successful queue merges underwent
-+ *                by any of the process' @bfq_queues
-+ * @failed_cooperations: counter of consecutive failed queue merges of any
-+ *                       of the process' @bfq_queues
-  */
- struct bfq_io_cq {
- 	struct io_cq icq; /* must be the first member */
- 	struct bfq_queue *bfqq[2];
- 	struct bfq_ttime ttime;
- 	int ioprio;
-+
-+	unsigned int wr_time_left;
-+	unsigned int saved_idle_window;
-+	unsigned int saved_IO_bound;
-+
-+	unsigned int cooperations;
-+	unsigned int failed_cooperations;
- };
- 
- enum bfq_device_speed {
-@@ -511,7 +537,7 @@ enum bfqq_state_flags {
- 	BFQ_BFQQ_FLAG_prio_changed,	/* task priority has changed */
- 	BFQ_BFQQ_FLAG_sync,		/* synchronous queue */
- 	BFQ_BFQQ_FLAG_budget_new,	/* no completion with this budget */
--	BFQ_BFQQ_FLAG_IO_bound,         /*
-+	BFQ_BFQQ_FLAG_IO_bound,		/*
- 					 * bfqq has timed-out at least once
- 					 * having consumed at most 2/10 of
- 					 * its budget
-@@ -520,12 +546,13 @@ enum bfqq_state_flags {
- 					 * bfqq has proved to be slow and
- 					 * seeky until budget timeout
- 					 */
--	BFQ_BFQQ_FLAG_softrt_update,    /*
-+	BFQ_BFQQ_FLAG_softrt_update,	/*
- 					 * may need softrt-next-start
- 					 * update
- 					 */
- 	BFQ_BFQQ_FLAG_coop,		/* bfqq is shared */
--	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be splitted */
-+	BFQ_BFQQ_FLAG_split_coop,	/* shared bfqq will be split */
-+	BFQ_BFQQ_FLAG_just_split,	/* queue has just been split */
- };
- 
- #define BFQ_BFQQ_FNS(name)						\
-@@ -554,6 +581,7 @@ BFQ_BFQQ_FNS(IO_bound);
- BFQ_BFQQ_FNS(constantly_seeky);
- BFQ_BFQQ_FNS(coop);
- BFQ_BFQQ_FNS(split_coop);
-+BFQ_BFQQ_FNS(just_split);
- BFQ_BFQQ_FNS(softrt_update);
- #undef BFQ_BFQQ_FNS
- 
--- 
-1.9.3
-
diff --git a/helpers/DATA/linux/c720-touchpad.patch b/helpers/DATA/linux/c720-touchpad.patch
deleted file mode 100644
index 50e06bf9c..000000000
--- a/helpers/DATA/linux/c720-touchpad.patch
+++ /dev/null
@@ -1,567 +0,0 @@
-diff -ru linux-3.13.0.orig/drivers/i2c/busses/i2c-designware-pcidrv.c linux-3.13.0/drivers/i2c/busses/i2c-designware-pcidrv.c
---- linux-3.13.0.orig/drivers/i2c/busses/i2c-designware-pcidrv.c	2014-01-20 02:40:07.000000000 +0000
-+++ linux-3.13.0/drivers/i2c/busses/i2c-designware-pcidrv.c	2014-07-16 03:06:14.000000000 +0000
-@@ -54,6 +54,9 @@
- 	medfield_3,
- 	medfield_4,
- 	medfield_5,
-+
-+	haswell_0,
-+	haswell_1,
- };
- 
- struct dw_pci_controller {
-@@ -132,6 +135,20 @@
- 		.rx_fifo_depth = 32,
- 		.clk_khz      = 25000,
- 	},
-+	[haswell_0] = {
-+		.bus_num     = -1,
-+		.bus_cfg   = INTEL_MID_STD_CFG | DW_IC_CON_SPEED_STD,
-+		.tx_fifo_depth = 32,
-+		.rx_fifo_depth = 32,
-+		.clk_khz      = 100000,
-+	},
-+	[haswell_1] = {
-+		.bus_num     = -1,
-+		.bus_cfg   = INTEL_MID_STD_CFG | DW_IC_CON_SPEED_STD,
-+		.tx_fifo_depth = 32,
-+		.rx_fifo_depth = 32,
-+		.clk_khz      = 100000,
-+	},
- };
- static struct i2c_algorithm i2c_dw_algo = {
- 	.master_xfer	= i2c_dw_xfer,
-@@ -212,7 +229,7 @@
- {
- 	struct dw_i2c_dev *dev;
- 	struct i2c_adapter *adap;
--	int r;
-+	int r, adapter_num;
- 	struct  dw_pci_controller *controller;
- 
- 	if (id->driver_data >= ARRAY_SIZE(dw_pci_controllers)) {
-@@ -270,8 +287,18 @@
- 	adap->algo = &i2c_dw_algo;
- 	adap->dev.parent = &pdev->dev;
- 	adap->nr = controller->bus_num;
-+
-+	switch (id->driver_data) {
-+	case haswell_0:
-+	case haswell_1:
-+		adapter_num = id->driver_data - haswell_0;
-+		break;
-+	default:
-+		adapter_num = adap->nr;
-+		break;
-+	}
- 	snprintf(adap->name, sizeof(adap->name), "i2c-designware-pci-%d",
--		adap->nr);
-+		 adapter_num);
- 
- 	r = devm_request_irq(&pdev->dev, pdev->irq, i2c_dw_isr, IRQF_SHARED,
- 			adap->name, dev);
-@@ -321,6 +348,9 @@
- 	{ PCI_VDEVICE(INTEL, 0x082C), medfield_0 },
- 	{ PCI_VDEVICE(INTEL, 0x082D), medfield_1 },
- 	{ PCI_VDEVICE(INTEL, 0x082E), medfield_2 },
-+	/* Haswell ULT */
-+	{ PCI_VDEVICE(INTEL, 0x9c61), haswell_0 },
-+	{ PCI_VDEVICE(INTEL, 0x9c62), haswell_1 },
- 	{ 0,}
- };
- MODULE_DEVICE_TABLE(pci, i2_designware_pci_ids);
-diff -ru linux-3.13.0.orig/drivers/platform/chrome/chromeos_laptop.c linux-3.13.0/drivers/platform/chrome/chromeos_laptop.c
---- linux-3.13.0.orig/drivers/platform/chrome/chromeos_laptop.c	2014-01-20 02:40:07.000000000 +0000
-+++ linux-3.13.0/drivers/platform/chrome/chromeos_laptop.c	2014-07-16 03:07:10.000000000 +0000
-@@ -27,6 +27,7 @@
- #include <linux/input.h>
- #include <linux/interrupt.h>
- #include <linux/module.h>
-+#include <linux/platform_device.h>
- 
- #define ATMEL_TP_I2C_ADDR	0x4b
- #define ATMEL_TP_I2C_BL_ADDR	0x25
-@@ -44,6 +45,8 @@
- 	"SMBus I801 adapter",
- 	"i915 gmbus vga",
- 	"i915 gmbus panel",
-+	"i2c-designware-pci-0",
-+	"i2c-designware-pci-1",
- };
- 
- /* Keep this enum consistent with i2c_adapter_names */
-@@ -51,22 +54,37 @@
- 	I2C_ADAPTER_SMBUS = 0,
- 	I2C_ADAPTER_VGADDC,
- 	I2C_ADAPTER_PANEL,
-+	I2C_ADAPTER_I2C0,
-+	I2C_ADAPTER_I2C1,
- };
- 
--static struct i2c_board_info __initdata cyapa_device = {
-+struct i2c_peripheral {
-+	int (*add)(enum i2c_adapter_type type);
-+	enum i2c_adapter_type type;
-+};
-+
-+#define MAX_I2C_PERIPHERALS 3
-+
-+struct chromeos_laptop {
-+	struct i2c_peripheral i2c_peripherals[MAX_I2C_PERIPHERALS];
-+};
-+
-+static struct chromeos_laptop *cros_laptop;
-+
-+static struct i2c_board_info cyapa_device = {
- 	I2C_BOARD_INFO("cyapa", CYAPA_TP_I2C_ADDR),
- 	.flags		= I2C_CLIENT_WAKE,
- };
- 
--static struct i2c_board_info __initdata isl_als_device = {
-+static struct i2c_board_info isl_als_device = {
- 	I2C_BOARD_INFO("isl29018", ISL_ALS_I2C_ADDR),
- };
- 
--static struct i2c_board_info __initdata tsl2583_als_device = {
-+static struct i2c_board_info tsl2583_als_device = {
- 	I2C_BOARD_INFO("tsl2583", TAOS_ALS_I2C_ADDR),
- };
- 
--static struct i2c_board_info __initdata tsl2563_als_device = {
-+static struct i2c_board_info tsl2563_als_device = {
- 	I2C_BOARD_INFO("tsl2563", TAOS_ALS_I2C_ADDR),
- };
- 
-@@ -89,7 +107,7 @@
- 	.config_length		= 0,
- };
- 
--static struct i2c_board_info __initdata atmel_224s_tp_device = {
-+static struct i2c_board_info atmel_224s_tp_device = {
- 	I2C_BOARD_INFO("atmel_mxt_tp", ATMEL_TP_I2C_ADDR),
- 	.platform_data = &atmel_224s_tp_platform_data,
- 	.flags		= I2C_CLIENT_WAKE,
-@@ -110,13 +128,13 @@
- 	.config_length		= 0,
- };
- 
--static struct i2c_board_info __initdata atmel_1664s_device = {
-+static struct i2c_board_info atmel_1664s_device = {
- 	I2C_BOARD_INFO("atmel_mxt_ts", ATMEL_TS_I2C_ADDR),
- 	.platform_data = &atmel_1664s_platform_data,
- 	.flags		= I2C_CLIENT_WAKE,
- };
- 
--static struct i2c_client __init *__add_probed_i2c_device(
-+static struct i2c_client *__add_probed_i2c_device(
- 		const char *name,
- 		int bus,
- 		struct i2c_board_info *info,
-@@ -169,7 +187,7 @@
- 	return client;
- }
- 
--static int __init __find_i2c_adap(struct device *dev, void *data)
-+static int __find_i2c_adap(struct device *dev, void *data)
- {
- 	const char *name = data;
- 	static const char *prefix = "i2c-";
-@@ -180,7 +198,7 @@
- 	return (strncmp(adapter->name, name, strlen(name)) == 0);
- }
- 
--static int __init find_i2c_adapter_num(enum i2c_adapter_type type)
-+static int find_i2c_adapter_num(enum i2c_adapter_type type)
- {
- 	struct device *dev = NULL;
- 	struct i2c_adapter *adapter;
-@@ -189,8 +207,9 @@
- 	dev = bus_find_device(&i2c_bus_type, NULL, (void *)name,
- 			      __find_i2c_adap);
- 	if (!dev) {
--		pr_err("%s: i2c adapter %s not found on system.\n", __func__,
--		       name);
-+		/* Adapters may appear later. Deferred probing will retry */
-+		pr_notice("%s: i2c adapter %s not found on system.\n", __func__,
-+			  name);
- 		return -ENODEV;
- 	}
- 	adapter = to_i2c_adapter(dev);
-@@ -205,7 +224,7 @@
-  * Returns NULL if no devices found.
-  * See Documentation/i2c/instantiating-devices for more information.
-  */
--static __init struct i2c_client *add_probed_i2c_device(
-+static struct i2c_client *add_probed_i2c_device(
- 		const char *name,
- 		enum i2c_adapter_type type,
- 		struct i2c_board_info *info,
-@@ -222,7 +241,7 @@
-  * info->addr.
-  * Returns NULL if no device found.
-  */
--static __init struct i2c_client *add_i2c_device(const char *name,
-+static struct i2c_client *add_i2c_device(const char *name,
- 						enum i2c_adapter_type type,
- 						struct i2c_board_info *info)
- {
-@@ -233,161 +252,289 @@
- 				       addr_list);
- }
- 
--
--static struct i2c_client __init *add_smbus_device(const char *name,
--						  struct i2c_board_info *info)
-+static int setup_cyapa_tp(enum i2c_adapter_type type)
- {
--	return add_i2c_device(name, I2C_ADAPTER_SMBUS, info);
--}
-+	if (tp)
-+		return 0;
- 
--static int __init setup_cyapa_smbus_tp(const struct dmi_system_id *id)
--{
--	/* add cyapa touchpad on smbus */
--	tp = add_smbus_device("trackpad", &cyapa_device);
--	return 0;
-+	/* add cyapa touchpad */
-+	tp = add_i2c_device("trackpad", type, &cyapa_device);
-+	return (!tp) ? -EAGAIN : 0;
- }
- 
--static int __init setup_atmel_224s_tp(const struct dmi_system_id *id)
-+static int setup_atmel_224s_tp(enum i2c_adapter_type type)
- {
- 	const unsigned short addr_list[] = { ATMEL_TP_I2C_BL_ADDR,
- 					     ATMEL_TP_I2C_ADDR,
- 					     I2C_CLIENT_END };
-+	if (tp)
-+		return 0;
- 
--	/* add atmel mxt touchpad on VGA DDC GMBus */
--	tp = add_probed_i2c_device("trackpad", I2C_ADAPTER_VGADDC,
-+	/* add atmel mxt touchpad */
-+	tp = add_probed_i2c_device("trackpad", type,
- 				   &atmel_224s_tp_device, addr_list);
--	return 0;
-+	return (!tp) ? -EAGAIN : 0;
- }
- 
--static int __init setup_atmel_1664s_ts(const struct dmi_system_id *id)
-+static int setup_atmel_1664s_ts(enum i2c_adapter_type type)
- {
- 	const unsigned short addr_list[] = { ATMEL_TS_I2C_BL_ADDR,
- 					     ATMEL_TS_I2C_ADDR,
- 					     I2C_CLIENT_END };
-+	if (ts)
-+		return 0;
- 
--	/* add atmel mxt touch device on PANEL GMBus */
--	ts = add_probed_i2c_device("touchscreen", I2C_ADAPTER_PANEL,
-+	/* add atmel mxt touch device */
-+	ts = add_probed_i2c_device("touchscreen", type,
- 				   &atmel_1664s_device, addr_list);
--	return 0;
-+	return (!ts) ? -EAGAIN : 0;
- }
- 
--
--static int __init setup_isl29018_als(const struct dmi_system_id *id)
-+static int setup_isl29018_als(enum i2c_adapter_type type)
- {
-+	if (als)
-+		return 0;
-+
- 	/* add isl29018 light sensor */
--	als = add_smbus_device("lightsensor", &isl_als_device);
--	return 0;
-+	als = add_i2c_device("lightsensor", type, &isl_als_device);
-+	return (!als) ? -EAGAIN : 0;
- }
- 
--static int __init setup_isl29023_als(const struct dmi_system_id *id)
-+static int setup_tsl2583_als(enum i2c_adapter_type type)
- {
--	/* add isl29023 light sensor on Panel GMBus */
--	als = add_i2c_device("lightsensor", I2C_ADAPTER_PANEL,
--			     &isl_als_device);
--	return 0;
-+	if (als)
-+		return 0;
-+
-+	/* add tsl2583 light sensor */
-+	als = add_i2c_device(NULL, type, &tsl2583_als_device);
-+	return (!als) ? -EAGAIN : 0;
- }
- 
--static int __init setup_tsl2583_als(const struct dmi_system_id *id)
-+static int setup_tsl2563_als(enum i2c_adapter_type type)
- {
--	/* add tsl2583 light sensor on smbus */
--	als = add_smbus_device(NULL, &tsl2583_als_device);
--	return 0;
-+	if (als)
-+		return 0;
-+
-+	/* add tsl2563 light sensor */
-+	als = add_i2c_device(NULL, type, &tsl2563_als_device);
-+	return (!als) ? -EAGAIN : 0;
- }
- 
--static int __init setup_tsl2563_als(const struct dmi_system_id *id)
-+static int __init chromeos_laptop_dmi_matched(const struct dmi_system_id *id)
- {
--	/* add tsl2563 light sensor on smbus */
--	als = add_smbus_device(NULL, &tsl2563_als_device);
--	return 0;
-+	cros_laptop = (void *)id->driver_data;
-+	pr_debug("DMI Matched %s.\n", id->ident);
-+
-+	/* Indicate to dmi_scan that processing is done. */
-+	return 1;
- }
- 
--static struct dmi_system_id __initdata chromeos_laptop_dmi_table[] = {
-+static int chromeos_laptop_probe(struct platform_device *pdev)
-+{
-+	int i;
-+	int ret = 0;
-+
-+	for (i = 0; i < MAX_I2C_PERIPHERALS; i++) {
-+		struct i2c_peripheral *i2c_dev;
-+
-+		i2c_dev = &cros_laptop->i2c_peripherals[i];
-+
-+		/* No more peripherals. */
-+		if (i2c_dev->add == NULL)
-+			break;
-+
-+		/* Add the device. Set -EPROBE_DEFER on any failure */
-+		if (i2c_dev->add(i2c_dev->type))
-+			ret = -EPROBE_DEFER;
-+	}
-+
-+	return ret;
-+}
-+
-+static struct chromeos_laptop samsung_series_5_550 = {
-+	.i2c_peripherals = {
-+		/* Touchpad. */
-+		{ .add = setup_cyapa_tp, I2C_ADAPTER_SMBUS },
-+		/* Light Sensor. */
-+		{ .add = setup_isl29018_als, I2C_ADAPTER_SMBUS },
-+	},
-+};
-+
-+static struct chromeos_laptop samsung_series_5 = {
-+	.i2c_peripherals = {
-+		/* Light Sensor. */
-+		{ .add = setup_tsl2583_als, I2C_ADAPTER_SMBUS },
-+	},
-+};
-+
-+static struct chromeos_laptop chromebook_pixel = {
-+	.i2c_peripherals = {
-+		/* Touch Screen. */
-+		{ .add = setup_atmel_1664s_ts, I2C_ADAPTER_PANEL },
-+		/* Touchpad. */
-+		{ .add = setup_atmel_224s_tp, I2C_ADAPTER_VGADDC },
-+		/* Light Sensor. */
-+		{ .add = setup_isl29018_als, I2C_ADAPTER_PANEL },
-+	},
-+};
-+
-+static struct chromeos_laptop acer_c720 = {
-+       .i2c_peripherals = {
-+               /* Light Sensor. */
-+               { .add = setup_isl29018_als, I2C_ADAPTER_I2C1 },
-+               /* Touchpad. */
-+               { .add = setup_cyapa_tp, I2C_ADAPTER_I2C0 },
-+       },
-+};
-+
-+static struct chromeos_laptop hp_chromebook_14 = {
-+       .i2c_peripherals = {
-+               /* Touchpad. */
-+               { .add = setup_cyapa_tp, I2C_ADAPTER_I2C0 },
-+       },
-+};
-+
-+static struct chromeos_laptop acer_c7_chromebook = {
-+	.i2c_peripherals = {
-+		/* Touchpad. */
-+		{ .add = setup_cyapa_tp, I2C_ADAPTER_SMBUS },
-+	},
-+};
-+
-+static struct chromeos_laptop acer_ac700 = {
-+	.i2c_peripherals = {
-+		/* Light Sensor. */
-+		{ .add = setup_tsl2563_als, I2C_ADAPTER_SMBUS },
-+	},
-+};
-+
-+static struct chromeos_laptop hp_pavilion_14_chromebook = {
-+	.i2c_peripherals = {
-+		/* Touchpad. */
-+		{ .add = setup_cyapa_tp, I2C_ADAPTER_SMBUS },
-+	},
-+};
-+
-+static struct chromeos_laptop cr48 = {
-+	.i2c_peripherals = {
-+		/* Light Sensor. */
-+		{ .add = setup_tsl2563_als, I2C_ADAPTER_SMBUS },
-+	},
-+};
-+
-+#define _CBDD(board_) \
-+	.callback = chromeos_laptop_dmi_matched, \
-+	.driver_data = (void *)&board_
-+
-+static struct dmi_system_id chromeos_laptop_dmi_table[] __initdata = {
- 	{
--		.ident = "Samsung Series 5 550 - Touchpad",
-+		.ident = "Samsung Series 5 550",
- 		.matches = {
- 			DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG"),
- 			DMI_MATCH(DMI_PRODUCT_NAME, "Lumpy"),
- 		},
--		.callback = setup_cyapa_smbus_tp,
-+		_CBDD(samsung_series_5_550),
- 	},
- 	{
--		.ident = "Chromebook Pixel - Touchscreen",
-+		.ident = "Samsung Series 5",
- 		.matches = {
--			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
--			DMI_MATCH(DMI_PRODUCT_NAME, "Link"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "Alex"),
- 		},
--		.callback = setup_atmel_1664s_ts,
-+		_CBDD(samsung_series_5),
- 	},
- 	{
--		.ident = "Chromebook Pixel - Touchpad",
-+		.ident = "Chromebook Pixel",
- 		.matches = {
- 			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
- 			DMI_MATCH(DMI_PRODUCT_NAME, "Link"),
- 		},
--		.callback = setup_atmel_224s_tp,
-+		_CBDD(chromebook_pixel),
- 	},
- 	{
--		.ident = "Samsung Series 5 550 - Light Sensor",
-+		.ident = "Acer C720",
- 		.matches = {
--			DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG"),
--			DMI_MATCH(DMI_PRODUCT_NAME, "Lumpy"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "Peppy"),
- 		},
--		.callback = setup_isl29018_als,
-+		_CBDD(acer_c720),
- 	},
- 	{
--		.ident = "Chromebook Pixel - Light Sensor",
-+		.ident = "HP Chromebook 14",
- 		.matches = {
--			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
--			DMI_MATCH(DMI_PRODUCT_NAME, "Link"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "Falco"),
- 		},
--		.callback = setup_isl29023_als,
-+		_CBDD(hp_chromebook_14),
- 	},
- 	{
--		.ident = "Acer C7 Chromebook - Touchpad",
-+		.ident = "Acer C7 Chromebook",
- 		.matches = {
- 			DMI_MATCH(DMI_PRODUCT_NAME, "Parrot"),
- 		},
--		.callback = setup_cyapa_smbus_tp,
-+		_CBDD(acer_c7_chromebook),
- 	},
- 	{
--		.ident = "HP Pavilion 14 Chromebook - Touchpad",
-+		.ident = "Acer AC700",
- 		.matches = {
--			DMI_MATCH(DMI_PRODUCT_NAME, "Butterfly"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"),
- 		},
--		.callback = setup_cyapa_smbus_tp,
-+		_CBDD(acer_ac700),
- 	},
- 	{
--		.ident = "Samsung Series 5 - Light Sensor",
-+		.ident = "HP Pavilion 14 Chromebook",
- 		.matches = {
--			DMI_MATCH(DMI_PRODUCT_NAME, "Alex"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "Butterfly"),
- 		},
--		.callback = setup_tsl2583_als,
-+		_CBDD(hp_pavilion_14_chromebook),
- 	},
- 	{
--		.ident = "Cr-48 - Light Sensor",
-+		.ident = "Cr-48",
- 		.matches = {
- 			DMI_MATCH(DMI_PRODUCT_NAME, "Mario"),
- 		},
--		.callback = setup_tsl2563_als,
--	},
--	{
--		.ident = "Acer AC700 - Light Sensor",
--		.matches = {
--			DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"),
--		},
--		.callback = setup_tsl2563_als,
-+		_CBDD(cr48),
- 	},
- 	{ }
- };
- MODULE_DEVICE_TABLE(dmi, chromeos_laptop_dmi_table);
- 
-+static struct platform_device *cros_platform_device;
-+
-+static struct platform_driver cros_platform_driver = {
-+	.driver = {
-+		.name = "chromeos_laptop",
-+		.owner = THIS_MODULE,
-+	},
-+	.probe = chromeos_laptop_probe,
-+};
-+
- static int __init chromeos_laptop_init(void)
- {
-+	int ret;
- 	if (!dmi_check_system(chromeos_laptop_dmi_table)) {
- 		pr_debug("%s unsupported system.\n", __func__);
- 		return -ENODEV;
- 	}
-+
-+	ret = platform_driver_register(&cros_platform_driver);
-+	if (ret)
-+		return ret;
-+
-+	cros_platform_device = platform_device_alloc("chromeos_laptop", -1);
-+	if (!cros_platform_device) {
-+		ret = -ENOMEM;
-+		goto fail_platform_device1;
-+	}
-+
-+	ret = platform_device_add(cros_platform_device);
-+	if (ret)
-+		goto fail_platform_device2;
-+
- 	return 0;
-+
-+fail_platform_device2:
-+	platform_device_put(cros_platform_device);
-+fail_platform_device1:
-+	platform_driver_unregister(&cros_platform_driver);
-+	return ret;
- }
- 
- static void __exit chromeos_laptop_exit(void)
diff --git a/helpers/DATA/linux/deblob-3.13 b/helpers/DATA/linux/deblob-3.13
deleted file mode 100755
index 4f0cc30e5..000000000
--- a/helpers/DATA/linux/deblob-3.13
+++ /dev/null
@@ -1,2830 +0,0 @@
-#!/bin/sh
-
-#    Copyright (C) 2008-2014 Alexandre Oliva <lxoliva@fsfla.org>
-#    Copyright (C) 2008 Jeff Moe
-#    Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
-#
-#    This program is part of GNU Linux-libre, a GNU project that
-#    publishes scripts to clean up Linux so as to make it suitable for
-#    use in the GNU Project and in Free System Distributions.
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-
-# deblob - remove non-free blobs from the vanilla linux kernel
-
-# http://www.fsfla.org/svn/fsfla/software/linux-libre
-
-
-# This script, suited for the kernel version named below, in kver,
-# attempts to remove only non-Free Software bits, without removing
-# Free Software that happens to be in the same file.
-
-# Drivers that currently require non-Free firmware are retained, but
-# firmware included in GPLed sources is replaced with /*(DEBLOBBED)*/
-# if the deblob-check script, that knows how to do this, is present.
-# -lxoliva
-
-
-# See also:
-# http://wiki.debian.org/KernelFirmwareLicensing
-# svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
-# http://wiki.gnewsense.org/Builder gen-kernel
-
-# Thanks to Brian Brazil @ gnewsense
-
-
-# For each kver release, start extra with an empty string, then count
-# from 1 if changes are needed that require rebuilding the tarball.
-kver=3.13 extra=
-
-case $1 in
---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
-if [ ! -f $check ] ; then
-  if $forced; then
-    die deblob-check script missing, will remove entire files
-  else
-    die deblob-check script missing
-  fi
-  have_check=false
-else
-  have_check=:
-  [ -x $check ] || check="/bin/sh $check"
-fi
-
-filetest () {
-  if [ ! -f $1 ]; then
-    die $1 does not exist, something is wrong && return 1
-  fi
-}
-
-announce () {
-  echo
-  echo "$@"
-}
-
-clean_file () {
-  #$1 = filename
-  filetest $1 || return
-  rm $1
-  echo $1: removed
-}
-
-check_changed () {
-  #$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
-  filetest $1 || return
-  if $have_check; then
-    name=$1
-    set fnord "$@" -d
-    shift 2
-    if $check "$@" -i linux-$kver $name > $name.deblob; then
-      if [ ! -s $name.deblob ]; then
-	die got an empty file after removing blobs from $name
-      fi
-    else
-      die failed removing blobs from $name
-    fi
-    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 && 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
-  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
-  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
-  filetest $1 || return
-  sed "/^config \\($2\\)\$/{p;i\
-	depends on NONFREE
-d;}" $1 > $1.deblob
-  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
-  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
-  filetest $2 || return
-  sed -e "$1" "$2" > "$2".deblob || {
-    die $2: failed: ${3-applied sed script $1} && return 1; }
-  check_changed $2 && echo $2: ${3-applied sed script $1}
-}
-
-reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g
-' "$1" 'disabled non-Free firmware-loading machinery'
-}
-
-maybe_reject_firmware () {
-  #$1 = file $2 = pre sed pattern
-  filetest $1 || return
-  clean_sed "$2"'
-s,request_\(ihex_\)\?firmware\(_nowait\)\?,maybe_reject_\1firmware\2,g
-' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
-}
-
-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
-  undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
-    "disabled non-Free firmware" "$@"
-}
-
-# First, check that files that contain firmwares and their
-# corresponding sources are present.
-
-for f in \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/copy/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/copy/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/crypt/fuc/nv98.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/com.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpc.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hub.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvc0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvd7.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnve0.fuc \
-  drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h \
-    drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc \
-  drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h \
-    drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc \
-  drivers/net/wan/wanxlfw.inc_shipped \
-    drivers/net/wan/wanxlfw.S \
-  drivers/net/wireless/atmel.c \
-    drivers/net/wireless/atmel.c \
-  drivers/scsi/aic7xxx/aic79xx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic79xx.seq \
-  drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped \
-    drivers/scsi/aic7xxx/aic7xxx.seq \
-  drivers/scsi/aic7xxx_old/aic7xxx_seq.c \
-    drivers/scsi/aic7xxx_old/aic7xxx.seq \
-  drivers/scsi/53c700_d.h_shipped \
-    drivers/scsi/53c700.scr \
-  drivers/scsi/sym53c8xx_2/sym_fw1.h \
-    drivers/scsi/sym53c8xx_2/sym_fw1.h \
-  drivers/scsi/sym53c8xx_2/sym_fw2.h \
-    drivers/scsi/sym53c8xx_2/sym_fw2.h \
-  firmware/dsp56k/bootstrap.bin.ihex \
-    firmware/dsp56k/bootstrap.asm \
-  firmware/keyspan_pda/keyspan_pda.HEX \
-    firmware/keyspan_pda/keyspan_pda.S \
-  firmware/keyspan_pda/xircom_pgs.HEX \
-    firmware/keyspan_pda/xircom_pgs.S \
-  sound/pci/cs46xx/imgs/cwcdma.h \
-    sound/pci/cs46xx/imgs/cwcdma.asp \
-; do
-  filetest $f
-done
-
-# Identify the tarball.
-grep -q 'EXTRAVERSION.*-gnu' Makefile ||
-clean_sed "s,^EXTRAVERSION.*,&-gnu$extra,
-" Makefile 'added -gnu to EXTRAVERSION'
-
-grep -q Linux-libre README ||
-clean_sed '
-1,3 s,Linux kernel release.*kernel\.org.*,GNU Linux-libre <http://linux-libre.fsfla.org>,
-2,5 s,Linux version [0-9.]*,GNU Linux-libre,
-1,20 s,\(operating system \)\?Unix,Unix kernel,
-/WHAT IS LINUX/i\
-WHAT IS GNU Linux-libre?\
-\
-  GNU Linux-libre is a Free version of the kernel Linux (see below),\
-  suitable for use with the GNU Operating System in 100% Free\
-  GNU/Linux-libre System Distributions.\
-  http://www.gnu.org/distros/\
-\
-  It removes non-Free components from Linux, that are disguised as\
-  source code or distributed in separate files.  It also disables\
-  run-time requests for non-Free components, shipped separately or as\
-  part of Linux, and documentation pointing to them, so as to avoid\
-  (Free-)baiting users into the trap of non-Free Software.\
-  http://www.fsfla.org/anuncio/2010-11-Linux-2.6.36-libre-debait\
-\
-  Linux-libre started within the gNewSense GNU/Linux distribution.\
-  It was later adopted by Jeff Moe, who coined its name, and in 2008\
-  it became a project maintained by FSF Latin America.  In 2012, it\
-  became part of the GNU Project.\
-\
-  The GNU Linux-libre project takes a minimal-changes approach to\
-  cleaning up Linux, making no effort to substitute components that\
-  need to be removed with functionally equivalent Free ones.\
-  Nevertheless, we encourage and support efforts towards doing so.\
-  http://libreplanet.org/wiki/LinuxLibre:Devices_that_require_non-free_firmware\
-\
-  Our mascot is Freedo, a light-blue penguin that has just come out\
-  of the shower.  Although we like penguins, GNU is a much greater\
-  contribution to the entire system, so its mascot deserves more\
-  promotion.  See our web page for their images.\
-  http://linux-libre.fsfla.org/\
-
-' README 'added blurb about GNU Linux-libre'
-
-# Add reject_firmware and maybe_reject_firmware
-grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_FIRMWARE_H\
-#define _LINUX_LIBRE_FIRMWARE_H\
-\
-#include <linux/device.h>\
-\
-#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\
-\
-static inline int\
-report_missing_free_firmware(const char *name, const char *what)\
-{\
-	printk(KERN_ERR "%s: Missing Free %s\\n", name,\
-	       what ? what : "firmware");\
-	return -EINVAL;\
-}\
-static inline int\
-reject_firmware(const struct firmware **fw,\
-		const char *name, struct device *device)\
-{\
-	const struct firmware *xfw = NULL;\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware(&xfw, NONFREE_FIRMWARE, device);\
-	if (!retval)\
-		release_firmware(xfw);\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware(const struct firmware **fw,\
-		      const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_firmware(fw, name, device);\
-}\
-static inline void\
-discard_rejected_firmware(const struct firmware *fw, void *context)\
-{\
-	release_firmware(fw);\
-}\
-static inline int\
-reject_firmware_nowait(struct module *module, int uevent,\
-		       const char *name, struct device *device,\
-		       gfp_t gfp, void *context,\
-		       void (*cont)(const struct firmware *fw,\
-				    void *context))\
-{\
-	int retval;\
-	report_missing_free_firmware(dev_name(device), NULL);\
-	retval = request_firmware_nowait(module, uevent, NONFREE_FIRMWARE,\
-					 device, gfp, NULL,\
-					 discard_rejected_firmware);\
-	if (retval)\
-		return retval;\
-	return -EINVAL;\
-}\
-static inline int\
-maybe_reject_firmware_nowait(struct module *module, int uevent,\
-			     const char *name, struct device *device,\
-			     gfp_t gfp, void *context,\
-			     void (*cont)(const struct firmware *fw,\
-					  void *context))\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware_nowait(module, uevent, name,\
-					      device, gfp, context, cont);\
-	else\
-		return request_firmware_nowait(module, uevent, name,\
-					       device, gfp, context, cont);\
-}\
-\
-#endif /* _LINUX_LIBRE_FIRMWARE_H */\
-' include/linux/firmware.h 'added non-Free firmware notification support'
-
-grep -q _LINUX_LIBRE_IHEX_FIRMWARE_H include/linux/ihex.h ||
-clean_sed '$i\
-#ifndef _LINUX_LIBRE_IHEX_H\
-#define _LINUX_LIBRE_IHEX_H\
-\
-static inline int\
-maybe_reject_ihex_firmware(const struct firmware **fw,\
-			   const char *name, struct device *device)\
-{\
-	if (strstr (name, NONFREE_FIRMWARE))\
-		return reject_firmware(fw, name, device);\
-	else\
-		return request_ihex_firmware(fw, name, device);\
-}\
-\
-#endif /* _LINUX_LIBRE_IHEX_H */\
-' include/linux/ihex.h 'added non-Free ihex firmware notification support'
-
-########
-# Arch #
-########
-
-# x86
-
-announce MICROCODE_AMD - "AMD microcode patch loading support"
-reject_firmware arch/x86/kernel/microcode_amd.c
-clean_blob arch/x86/kernel/microcode_amd.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD'
-clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/Makefile
-
-announce MICROCODE_AMD_EARLY - "Early load AMD microcode"
-clean_blob arch/x86/kernel/microcode_amd_early.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD_EARLY'
-clean_mk CONFIG_MICROCODE_AMD_EARLY arch/x86/kernel/Makefile
-
-announce MICROCODE_INTEL - "Intel microcode patch loading support"
-reject_firmware arch/x86/kernel/microcode_intel.c
-clean_blob arch/x86/kernel/microcode_intel.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL'
-clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/Makefile
-
-announce MICROCODE_INTEL_EARLY - "Early load Intel microcode"
-clean_blob arch/x86/kernel/microcode_intel_early.c
-clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL_EARLY'
-clean_mk CONFIG_MICROCODE_INTEL_EARLY arch/x86/kernel/Makefile
-
-announce MICROCODE_EARLY - "Early load microcode"
-clean_blob Documentation/x86/early-microcode.txt
-clean_kconfig arch/x86/Kconfig 'MICROCODE_EARLY'
-
-# arm
-
-announce IXP4XX_NPE - "IXP4xx Network Processor Engine support"
-reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob arch/arm/mach-ixp4xx/ixp4xx_npe.c
-clean_blob Documentation/arm/IXP4xx
-clean_kconfig arch/arm/mach-ixp4xx/Kconfig 'ARCH_IXP4XX'
-clean_mk CONFIG_IXP4XX_NPE arch/arm/mach-ixp4xx/Makefile
-
-announce ARCH_NETX - "Hilscher NetX based"
-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_blob drivers/net/ethernet/netx-eth.c
-clean_kconfig arch/arm/Kconfig 'ARCH_NETX'
-clean_mk CONFIG_ARCH_NETX arch/arm/Makefile
-
-# mips
-
-# I couldn't figure out where the firmware name actually comes from.
-# If it's from some user-set property, we could reenable it.  -lxo
-announce XRX200_PHY_FW - "XRX200 PHY firmware loader"
-reject_firmware arch/mips/lantiq/xway/xrx200_phy_fw.c
-clean_kconfig arch/mips/lantiq/Kconfig 'XRX200_PHY_FW'
-clean_mk CONFIG_XRX200_PHY_FW arch/mips/lantiq/xway/Makefile
-
-#######
-# ATM #
-#######
-
-announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server"
-reject_firmware drivers/atm/ambassador.c
-clean_blob drivers/atm/ambassador.c
-clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw
-clean_kconfig drivers/atm/Kconfig 'ATM_AMBASSADOR'
-clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile
-
-announce ATM_FORE200E - "FORE Systems 200E-series"
-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 ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver"
-reject_firmware drivers/atm/solos-pci.c
-clean_blob drivers/atm/solos-pci.c
-clean_kconfig drivers/atm/Kconfig 'ATM_SOLOS'
-clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile
-
-########
-# tty #
-########
-
-announce CYCLADES - "Cyclades async mux support"
-reject_firmware drivers/tty/cyclades.c
-clean_blob drivers/tty/cyclades.c
-clean_kconfig drivers/tty/Kconfig 'CYCLADES'
-clean_mk CONFIG_CYCLADES drivers/tty/Makefile
-
-announce ISI - "Multi-Tech multiport card support"
-reject_firmware drivers/tty/isicom.c
-clean_blob drivers/tty/isicom.c
-clean_kconfig drivers/tty/Kconfig 'ISI'
-clean_mk CONFIG_ISI drivers/tty/Makefile
-
-announce MOXA_INTELLIO - "Moxa Intellio support"
-reject_firmware drivers/tty/moxa.c
-clean_blob drivers/tty/moxa.c
-clean_kconfig drivers/tty/Kconfig 'MOXA_INTELLIO'
-clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile
-
-# gpu drm
-
-announce DRM_NOUVEAU - "Nouveau (nVidia) cards"
-reject_firmware drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/falcon.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/falcon.c
-reject_firmware drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_blob drivers/gpu/drm/nouveau/core/engine/xtensa.c
-clean_kconfig drivers/gpu/drm/nouveau/Kconfig 'DRM_NOUVEAU'
-clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile
-
-announce DRM_MGA - "Matrox g200/g400"
-drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw
-drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw
-reject_firmware drivers/gpu/drm/mga/mga_warp.c
-clean_blob drivers/gpu/drm/mga/mga_warp.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA'
-clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
-
-announce DRM_MSM - "MSM DRM"
-reject_firmware drivers/gpu/drm/msm/adreno/adreno_gpu.c
-clean_blob drivers/gpu/drm/msm/adreno/adreno_gpu.c
-clean_kconfig divers/gpu/drm/msm/Kconfig 'DRM_MSM'
-clean_mk CONFIG_DRM_MSM drivers/gpu/drm/msm/Makefile
-
-announce DRM_R128 - "ATI Rage 128"
-drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin
-reject_firmware drivers/gpu/drm/r128/r128_cce.c
-clean_blob drivers/gpu/drm/r128/r128_cce.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128'
-clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile
-
-announce DRM_RADEON - "ATI Radeon"
-drop_fw_file firmware/radeon/R100_cp.bin.ihex firmware/radeon/R100_cp.bin
-drop_fw_file firmware/radeon/R200_cp.bin.ihex firmware/radeon/R200_cp.bin
-drop_fw_file firmware/radeon/R300_cp.bin.ihex firmware/radeon/R300_cp.bin
-drop_fw_file firmware/radeon/R420_cp.bin.ihex firmware/radeon/R420_cp.bin
-drop_fw_file firmware/radeon/R520_cp.bin.ihex firmware/radeon/R520_cp.bin
-drop_fw_file firmware/radeon/R600_me.bin.ihex firmware/radeon/R600_me.bin
-drop_fw_file firmware/radeon/R600_pfp.bin.ihex firmware/radeon/R600_pfp.bin
-drop_fw_file firmware/radeon/RS600_cp.bin.ihex firmware/radeon/RS600_cp.bin
-drop_fw_file firmware/radeon/RS690_cp.bin.ihex firmware/radeon/RS690_cp.bin
-drop_fw_file firmware/radeon/RS780_me.bin.ihex firmware/radeon/RS780_me.bin
-drop_fw_file firmware/radeon/RS780_pfp.bin.ihex firmware/radeon/RS780_pfp.bin
-drop_fw_file firmware/radeon/RV610_me.bin.ihex firmware/radeon/RV610_me.bin
-drop_fw_file firmware/radeon/RV610_pfp.bin.ihex firmware/radeon/RV610_pfp.bin
-drop_fw_file firmware/radeon/RV620_me.bin.ihex firmware/radeon/RV620_me.bin
-drop_fw_file firmware/radeon/RV620_pfp.bin.ihex firmware/radeon/RV620_pfp.bin
-drop_fw_file firmware/radeon/RV630_me.bin.ihex firmware/radeon/RV630_me.bin
-drop_fw_file firmware/radeon/RV630_pfp.bin.ihex firmware/radeon/RV630_pfp.bin
-drop_fw_file firmware/radeon/RV635_me.bin.ihex firmware/radeon/RV635_me.bin
-drop_fw_file firmware/radeon/RV635_pfp.bin.ihex firmware/radeon/RV635_pfp.bin
-drop_fw_file firmware/radeon/RV670_me.bin.ihex firmware/radeon/RV670_me.bin
-drop_fw_file firmware/radeon/RV670_pfp.bin.ihex firmware/radeon/RV670_pfp.bin
-drop_fw_file firmware/radeon/RV710_me.bin.ihex firmware/radeon/RV710_me.bin
-drop_fw_file firmware/radeon/RV710_pfp.bin.ihex firmware/radeon/RV710_pfp.bin
-drop_fw_file firmware/radeon/RV730_me.bin.ihex firmware/radeon/RV730_me.bin
-drop_fw_file firmware/radeon/RV730_pfp.bin.ihex firmware/radeon/RV730_pfp.bin
-drop_fw_file firmware/radeon/RV770_me.bin.ihex firmware/radeon/RV770_me.bin
-drop_fw_file firmware/radeon/RV770_pfp.bin.ihex firmware/radeon/RV770_pfp.bin
-reject_firmware drivers/gpu/drm/radeon/radeon_cp.c
-clean_blob drivers/gpu/drm/radeon/radeon_cp.c
-reject_firmware drivers/gpu/drm/radeon/r100.c
-clean_blob drivers/gpu/drm/radeon/r100.c
-reject_firmware drivers/gpu/drm/radeon/r600.c
-clean_blob drivers/gpu/drm/radeon/r600.c
-reject_firmware drivers/gpu/drm/radeon/r600_cp.c
-clean_blob drivers/gpu/drm/radeon/r600_cp.c
-reject_firmware drivers/gpu/drm/radeon/ni.c
-clean_blob drivers/gpu/drm/radeon/ni.c
-reject_firmware drivers/gpu/drm/radeon/si.c
-clean_blob drivers/gpu/drm/radeon/si.c
-reject_firmware drivers/gpu/drm/radeon/cik.c
-clean_blob drivers/gpu/drm/radeon/cik.c
-reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c
-clean_blob drivers/gpu/drm/radeon/radeon_uvd.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON'
-clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile
-
-#######
-# dma #
-#######
-
-announce IMX_SDMA - "i.MX SDMA support"
-reject_firmware drivers/dma/imx-sdma.c
-clean_blob arch/arm/mach-imx/mm-imx25.c
-clean_blob arch/arm/mach-imx/mm-imx3.c
-clean_blob arch/arm/mach-imx/mm-imx5.c
-clean_blob arch/arm/boot/dts/imx51.dtsi
-clean_blob arch/arm/boot/dts/imx53.dtsi
-clean_blob arch/arm/boot/dts/imx6qdl.dtsi
-clean_blob arch/arm/boot/dts/imx6sl.dtsi
-clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
-clean_kconfig drivers/dma/Kconfig 'IMX_SDMA'
-clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile
-
-#########
-# Media #
-#########
-
-# media/tuner
-
-announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners"
-undefault_firmware 'XC\(2028\|3028L\)' \
-  drivers/media/tuners/tuner-xc2028.h \
-  drivers/media/pci/saa7134/saa7134-cards.c \
-  drivers/media/pci/ivtv/ivtv-driver.c \
-  drivers/media/pci/cx18/cx18-driver.c \
-  drivers/media/pci/cx18/cx18-dvb.c \
-  drivers/media/pci/cx23885/cx23885-dvb.c \
-  drivers/media/pci/cx23885/cx23885-video.c \
-  drivers/media/pci/cx88/cx88-dvb.c \
-  drivers/media/pci/cx88/cx88-cards.c \
-  drivers/media/usb/em28xx/em28xx-cards.c \
-  drivers/media/usb/dvb-usb/dib0700_devices.c \
-  drivers/media/usb/dvb-usb/cxusb.c
-reject_firmware drivers/media/tuners/tuner-xc2028.c
-clean_blob drivers/media/tuners/tuner-xc2028.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC2028'
-clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/tuners/Makefile
-
-announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards"
-clean_blob drivers/media/usb/tm6000/tm6000-cards.c
-clean_kconfig drivers/media/usb/tm6000/Kconfig 'VIDEO_TM6000_DVB'
-clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/usb/tm6000/Makefile
-
-announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner"
-undefault_firmware 'XC4000' drivers/media/tuners/xc4000.c
-maybe_reject_firmware drivers/media/tuners/xc4000.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC4000'
-clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/tuners/Makefile
-
-announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner"
-undefault_firmware 'XC5000' \
-  drivers/media/usb/cx231xx/cx231xx-cards.c
-reject_firmware drivers/media/tuners/xc5000.c
-clean_blob drivers/media/tuners/xc5000.c
-clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC5000'
-clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/tuners/Makefile
-
-announce DVB_USB - "Support for various USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dvb-usb-firmware.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB'
-clean_mk CONFIG_DVB_USB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_V2 - "Support for various USB DVB devices v2"
-reject_firmware drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_V2'
-clean_mk CONFIG_DVB_USB_V2 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters"
-reject_firmware drivers/media/common/b2c2/flexcop-fe-tuner.c
-
-announce DVB_BT8XX - "BT8xx based PCI cards"
-reject_firmware drivers/media/pci/bt8xx/dvb-bt8xx.c
-
-announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)"
-clean_blob drivers/media/usb/dvb-usb/a800.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_A800'
-clean_mk CONFIG_DVB_USB_A800 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support"
-clean_file drivers/media/usb/dvb-usb/af9005-script.h
-clean_sed '
-s,^	deb_info("load init script\\n");$,	{\n		err("Missing Free init script\\n");\n		return scriptlen = ret = -EINVAL;\n		,;
-' drivers/media/usb/dvb-usb/af9005-fe.c 'report missing Free init script'
-clean_blob drivers/media/usb/dvb-usb/af9005-fe.c
-clean_blob drivers/media/usb/dvb-usb/af9005.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AF9005'
-clean_mk CONFIG_DVB_USB_AF9005 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9015.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9015'
-clean_mk CONFIG_DVB_USB_AF9015 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.h
-clean_blob drivers/media/usb/dvb-usb-v2/af9035.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9035'
-clean_mk CONFIG_DVB_USB_AF9035 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/az6007.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AZ6007'
-clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support"
-clean_blob drivers/media/usb/dvb-usb/az6027.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AZ6027'
-clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support"
-clean_blob drivers/media/usb/dvb-usb/cxusb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_CXUSB'
-clean_mk CONFIG_DVB_USB_CXUSB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices"
-reject_firmware drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_devices.c
-clean_blob drivers/media/usb/dvb-usb/dib0700_core.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIB0700'
-clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mb.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB'
-clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)"
-clean_blob drivers/media/usb/dvb-usb/dibusb-mc.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC'
-clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/digitv.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIGITV'
-clean_mk CONFIG_DVB_USB_DIGITV drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)"
-clean_blob drivers/media/usb/dvb-usb/dtt200u.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DTT200U'
-clean_mk CONFIG_DVB_USB_DTT200U drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/dw2102.c
-clean_blob drivers/media/usb/dvb-usb/dw2102.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DW2102'
-clean_mk CONFIG_DVB_USB_DW2102 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.h
-clean_blob drivers/media/usb/dvb-usb-v2/ec168.c
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_EC168'
-clean_mk CONFIG_DVB_USB_EC168 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support"
-reject_firmware drivers/media/usb/dvb-usb/gp8psk.c
-clean_blob drivers/media/usb/dvb-usb/gp8psk.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_GP8PSK'
-clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_IT913X - "it913x driver"
-clean_blob drivers/media/usb/dvb-usb-v2/it913x.c
-clean_file Documentation/dvb/it9137.txt
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_IT913X'
-clean_mk CONFIG_DVB_USB_IT913X drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_blob drivers/media/usb/dvb-usb-v2/lmedm04.c
-clean_file Documentation/dvb/lmedm04.txt
-clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_LME2510'
-clean_mk CONFIG_DVB_USB_LME2510 drivers/media/usb/dvb-usb-v2/Makefile
-
-announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support"
-reject_firmware drivers/media/usb/dvb-usb/m920x.c
-clean_blob drivers/media/usb/dvb-usb/m920x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_M920X'
-clean_mk CONFIG_DVB_USB_M920X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/nova-t-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_NOVA_T_USB2'
-clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver"
-reject_firmware drivers/media/usb/dvb-usb/opera1.c
-clean_blob drivers/media/usb/dvb-usb/opera1.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_OPERA1'
-clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/technisat-usb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TECHNISAT_USB2'
-clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/ttusb2.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TTUSB2'
-clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/umt-010.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_UMT_010'
-clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp702x.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP702X'
-clean_mk CONFIG_DVB_USB_VP702X drivers/media/usb/dvb-usb/Makefile
-
-announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support"
-clean_blob drivers/media/usb/dvb-usb/vp7045.c
-clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP7045'
-clean_mk CONFIG_DVB_USB_VP7045 drivers/media/usb/dvb-usb/Makefile
-
-# dvb/frontends
-
-announce DVB_AF9013 - "Afatech AF9013 demodulator"
-reject_firmware drivers/media/dvb-frontends/af9013.c
-clean_blob 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
-
-announce DVB_BCM3510 - "Broadcom BCM3510"
-undefault_firmware 'BCM3510' drivers/media/dvb-frontends/bcm3510.c
-reject_firmware drivers/media/dvb-frontends/bcm3510.c
-reject_firmware drivers/media/dvb-frontends/bcm3510.h
-clean_sed '
-/You.ll need a firmware/,/dvb-fe-bcm/d;
-' drivers/media/dvb-frontends/bcm3510.c \
-  "removed non-Free firmware notes"
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_BCM3510'
-clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb-frontends/Makefile
-
-announce DVB_DS3000 - "Montage Tehnology DS3000 based"
-undefault_firmware 'DS3000' \
-  drivers/media/dvb-frontends/ds3000.c
-reject_firmware drivers/media/dvb-frontends/ds3000.c
-clean_blob drivers/media/dvb-frontends/ds3000.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DS3000'
-clean_mk CONFIG_DVB_DS3000 drivers/media/dvb-frontends/Makefile
-
-announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator"
-reject_firmware drivers/media/dvb-frontends/lgs8gxx.c
-clean_blob drivers/media/dvb-frontends/lgs8gxx.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_LGS8GXX'
-clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb-frontends/Makefile
-
-announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based"
-undefault_firmware 'NXT200[24]' drivers/media/dvb-frontends/nxt200x.c
-reject_firmware drivers/media/dvb-frontends/nxt200x.c
-clean_blob drivers/media/dvb-frontends/nxt200x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_NXT200X'
-clean_mk CONFIG_DVB_NXT200X drivers/media/dvb-frontends/Makefile
-
-announce DVB_OR51132 - "Oren OR51132 based"
-reject_firmware drivers/media/dvb-frontends/or51132.c
-clean_blob drivers/media/dvb-frontends/or51132.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51132'
-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_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51211'
-clean_mk CONFIG_DVB_OR51211 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP8870 - "Spase sp8870"
-undefault_firmware 'SP8870' drivers/media/dvb-frontends/sp8870.c
-reject_firmware drivers/media/dvb-frontends/sp8870.c
-reject_firmware drivers/media/dvb-frontends/sp8870.h
-clean_blob drivers/media/dvb-frontends/sp8870.c
-clean_kconfig drivers/media/dvb-frontends 'DVB_SP8870'
-clean_mk CONFIG_DVB_SP8870 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24116 - "Conexant CX24116 based"
-undefault_firmware CX24116 drivers/media/dvb-frontends/cx24116.c
-reject_firmware drivers/media/dvb-frontends/cx24116.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24116'
-clean_mk CONFIG_DVB_CX24116 drivers/media/dvb-frontends/Makefile
-
-announce DVB_CX24117 - "Conexant CX24117 based"
-undefault_firmware CX24117 drivers/media/dvb-frontends/cx24117.c
-reject_firmware drivers/media/dvb-frontends/cx24117.c
-clean_blob drivers/media/dvb-frontends/cx24117.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24117'
-clean_mk CONFIG_DVB_CX24117 drivers/media/dvb-frontends/Makefile
-
-announce DVB_SP887X - "Spase sp887x based"
-undefault_firmware 'SP887X' drivers/media/dvb-frontends/sp887x.c
-reject_firmware drivers/media/dvb-frontends/sp887x.c
-reject_firmware drivers/media/dvb-frontends/sp887x.h
-clean_blob drivers/media/dvb-frontends/sp887x.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SP887X'
-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'
-clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H"
-undefault_firmware 'TDA1004[56]' drivers/media/dvb-frontends/tda1004x.c
-reject_firmware drivers/media/dvb-frontends/tda1004x.c
-reject_firmware drivers/media/dvb-frontends/tda1004x.h
-clean_blob drivers/media/dvb-frontends/tda1004x.c
-clean_kconfig drivers/media/dvb-frontends 'DVB_TDA1004X'
-clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb-frontends/Makefile
-
-announce DVB_TDA10071 - "NXP TDA10071"
-reject_firmware drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071.c
-clean_blob drivers/media/dvb-frontends/tda10071_priv.h
-clean_kconfig drivers/media/dvb-frontends 'DVB_TDA10071'
-clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile
-
-# dvb
-
-announce DVB_AS102 - "Abilis AS102 DVB receiver"
-reject_firmware drivers/staging/media/as102/as102_fw.c
-clean_blob drivers/staging/media/as102/as102_fw.c
-clean_kconfig drivers/staging/media/as102/Kconfig 'DVB_AS102'
-clean_mk CONFIG_DVB_AS102 drivers/staging/media/as102/Makefile
-
-announce DVB_AV7110 - "AV7110 cards"
-reject_firmware drivers/media/pci/ttpci/av7110.c
-clean_blob drivers/media/pci/ttpci/av7110.c
-clean_kconfig drivers/media/pci/ttpci/Kconfig 'DVB_AV7110'
-clean_mk CONFIG_DVB_AV7110 drivers/media/pci/ttpci/Makefile
-
-announce DVB_BUDGET - "Budget cards"
-reject_firmware drivers/media/pci/ttpci/budget.c
-reject_firmware drivers/media/dvb-frontends/tdhd1.h
-
-announce DVB_BUDGET_AV - "Budget cards with analog video inputs"
-reject_firmware drivers/media/pci/ttpci/budget-av.c
-
-announce DVB_BUDGET_CI - "Budget cards with onboard CI connector"
-reject_firmware drivers/media/pci/ttpci/budget-ci.c
-
-announce DVB_DRXD - "Micronas DRXD driver"
-reject_firmware drivers/media/dvb-frontends/drxd_hard.c
-clean_blob drivers/media/dvb-frontends/drxd_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXD'
-clean_mk CONFIG_DVB_DRXD drivers/media/dvb-frontends/Makefile
-
-announce DVB_DRXK - "Micronas DRXK based"
-reject_firmware drivers/media/dvb-frontends/drxk_hard.c
-clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXK'
-clean_mk CONFIG_DVB_DRXK drivers/media/dvb-frontends/Makefile
-
-announce DVB_NGENE - "Micronas nGene support"
-reject_firmware drivers/media/pci/ngene/ngene-core.c
-clean_blob drivers/media/pci/ngene/ngene-core.c
-clean_kconfig drivers/media/pci/ngene/Kconfig 'DVB_NGENE'
-clean_mk CONFIG_DVB_NGENE drivers/media/pci/ngene/Makefile
-
-announce DVB_PLUTO2 - "Pluto2 cards"
-reject_firmware drivers/media/pci/pluto2/pluto2.c
-
-announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver"
-reject_firmware drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.c
-clean_blob drivers/media/common/siano/smscoreapi.h
-clean_kconfig drivers/media/common/siano/Kconfig 'SMS_SIANO_MDTV'
-clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/common/siano/Makefile
-
-announce SMS_USB_DRV - "Siano's USB interface support"
-reject_firmware drivers/media/usb/siano/smsusb.c
-clean_blob drivers/media/usb/siano/smsusb.c
-clean_kconfig drivers/media/usb/siano/Kconfig 'SMS_USB_DRV'
-clean_mk CONFIG_SMS_USB_DRV drivers/media/usb/siano/Makefile
-
-announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices"
-drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin
-reject_firmware drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_blob drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
-clean_kconfig drivers/media/usb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET'
-clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/usb/ttusb-budget/Makefile
-
-announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices"
-reject_firmware drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob drivers/media/usb/ttusb-dec/ttusb_dec.c
-clean_blob Documentation/dvb/ttusb-dec.txt
-clean_kconfig drivers/media/usb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC'
-clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/usb/ttusb-dec/Makefile
-
-# video
-
-announce VIDEO_BT848 - "BT848 Video For Linux"
-reject_firmware drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob drivers/media/pci/bt8xx/bttv-cards.c
-clean_blob Documentation/video4linux/bttv/README
-clean_kconfig drivers/media/pci/bt8xx/Kconfig 'VIDEO_BT848'
-clean_mk CONFIG_VIDEO_BT848 drivers/media/pci/bt8xx/Makefile
-
-announce VIDEO_CODA - "Chips&Media Coda multi-standard codec IP"
-reject_firmware drivers/media/platform/coda.c
-clean_blob drivers/media/platform/coda.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_CODA'
-clean_mk CONFIG_VIDEO_CODA drivers/media/platform/Makefile
-
-announce VIDEO_CPIA2 - "CPiA2 Video For Linux"
-clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin
-reject_firmware drivers/media/usb/cpia2/cpia2_core.c
-clean_blob drivers/media/usb/cpia2/cpia2_core.c
-clean_kconfig drivers/media/usb/cpia2/Kconfig 'VIDEO_CPIA2'
-clean_mk CONFIG_VIDEO_CPIA2 drivers/media/usb/cpia2/Makefile
-
-announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support"
-reject_firmware drivers/media/pci/cx18/cx18-av-firmware.c
-reject_firmware drivers/media/pci/cx18/cx18-dvb.c
-reject_firmware drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-av-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-dvb.c
-clean_blob drivers/media/pci/cx18/cx18-firmware.c
-clean_blob drivers/media/pci/cx18/cx18-driver.c
-clean_kconfig drivers/media/pci/cx18/Kconfig 'VIDEO_CX18'
-clean_mk CONFIG_VIDEO_CX18 drivers/media/pci/cx18/Makefile
-
-announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support"
-reject_firmware drivers/media/usb/cx231xx/cx231xx-417.c
-clean_blob drivers/media/usb/cx231xx/cx231xx-417.c
-clean_kconfig drivers/media/usb/cx231xx/Kconfig 'VIDEO_CX231XX'
-clean_mk CONFIG_VIDEO_CX231XX drivers/media/usb/cx231xx/Makefile
-
-announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support"
-reject_firmware drivers/media/pci/cx23885/cx23885-417.c
-clean_blob drivers/media/pci/cx23885/cx23885-417.c
-reject_firmware drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-cards.c
-clean_blob drivers/media/pci/cx23885/cx23885-video.c
-clean_kconfig drivers/media/pci/cx23885/Kconfig 'VIDEO_CX23885'
-clean_mk CONFIG_VIDEO_CX23885 drivers/media/pci/cx23885/Makefile
-
-announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders"
-reject_firmware drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_blob drivers/media/i2c/cx25840/cx25840-firmware.c
-clean_kconfig drivers/media/i2c/cx25840/Kconfig 'VIDEO_CX25840'
-clean_mk CONFIG_VIDEO_CX25840 drivers/media/i2c/cx25840/Makefile
-
-announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)"
-reject_firmware drivers/media/pci/cx88/cx88-blackbird.c
-clean_kconfig drivers/media/pci/cx88/Kconfig 'VIDEO_CX88_BLACKBIRD'
-clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/pci/cx88/Makefile
-
-announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards"
-clean_blob drivers/media/usb/em28xx/em28xx-dvb.c
-clean_kconfig drivers/media/usb/em28xx/Kconfig 'VIDEO_EM28XX_DVB'
-clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/usb/em28xx/Makefile
-
-announce VIDEO_EXYNOS4_FIMC_IS - "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver"
-reject_firmware drivers/media/platform/exynos4-is/fimc-is.c
-clean_blob drivers/media/platform/exynos4-is/fimc-is.h
-clean_kconfig drivers/media/platform/exynos4-is/Kconfig 'VIDEO_EXYNOS4_FIMC_IS'
-clean_mk CONFIG_VIDEO_EXYNOS4_FIMC_IS drivers/media/platform/exynos4-is/Makefile
-
-announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support"
-reject_firmware drivers/media/pci/ivtv/ivtv-firmware.c
-clean_blob drivers/media/pci/ivtv/ivtv-firmware.c
-clean_kconfig drivers/media/pci/ivtv/Kconfig 'VIDEO_IVTV'
-clean_mk CONFIG_VIDEO_IVTV drivers/media/pci/ivtv/Makefile
-
-announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support"
-reject_firmware drivers/media/usb/pvrusb2/pvrusb2-hdw.c
-clean_blob drivers/media/usb/pvrusb2/pvrusb2-devattr.c
-clean_kconfig drivers/media/usb/pvrusb2/Kconfig 'VIDEO_PVRUSB2'
-clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/usb/pvrusb2/Makefile
-
-announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above"
-clean_blob include/media/cx2341x.h
-
-announce VIDEO_GO7007 - "Go 7007 support"
-reject_firmware drivers/staging/media/go7007/go7007-driver.c
-clean_blob drivers/staging/media/go7007/go7007-driver.c
-reject_firmware drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/go7007-fw.c
-clean_blob drivers/staging/media/go7007/saa7134-go7007.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007'
-clean_mk CONFIG_VIDEO_GO7007 drivers/staging/media/go7007/Makefile
-
-announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support"
-reject_firmware drivers/staging/media/go7007/go7007-loader.c
-clean_blob drivers/staging/media/go7007/go7007-loader.c
-clean_kconfig drivers/staging/media/go7007/Kconfig 'VIDEO_GO7007_USB_S2250_BOARD'
-clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/staging/media/go7007/Makefile
-
-announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards"
-reject_firmware drivers/media/pci/saa7134/saa7134-dvb.c
-clean_kconfig drivers/media/pci/saa7134/Kconfig 'VIDEO_SAA7134_DVB'
-clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/pci/saa7134/Makefile
-
-announce VIDEO_SAA7164 - "NXP SAA7164 support"
-reject_firmware drivers/media/pci/saa7164/saa7164-fw.c
-clean_blob drivers/media/pci/saa7164/saa7164-fw.c
-clean_kconfig drivers/media/pci/saa7164/Kconfig 'VIDEO_SAA7164'
-clean_mk CONFIG_VIDEO_SAA7164 drivers/media/pci/saa7164/Makefile
-
-announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support"
-reject_firmware drivers/media/usb/tlg2300/pd-main.c
-clean_blob drivers/media/usb/tlg2300/pd-main.c
-clean_kconfig drivers/media/usb/tlg2300/Kconfig 'VIDEO_TLG2300'
-clean_mk CONFIG_VIDEO_TLG2300 drivers/media/usb/tlg2300/Makefile
-
-announce VIDEO_S5C73M3 - "Samsung S5C73M3 sensor support"
-reject_firmware drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_blob drivers/media/i2c/s5c73m3/s5c73m3-core.c
-clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5C73M3'
-clean_mk CONFIG_VIDEO_S5C73M3 drivers/media/i2c/s5c73m3/Makefile
-
-announce VIDEO_S5K4ECGX - "Samsung S5K4ECGX sensor support"
-reject_firmware drivers/media/i2c/s5k4ecgx.c
-clean_blob drivers/media/i2c/s5k4ecgx.c
-clean_kconfig drivers/media/i2c/s5k4ecgx.c 'VIDEO_S5K4ECGX'
-clean_mk CONFIG_VIDEO_S5K4ECGX drivers/media/i2c/Makefile
-
-announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec"
-reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
-clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_SAMSUNG_S5P_MFC'
-clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/platform/s5p-mfc/Makefile
-
-announce USB_S2255 - "USB Sensoray 2255 video capture device"
-reject_firmware drivers/media/usb/s2255/s2255drv.c
-clean_blob drivers/media/usb/s2255/s2255drv.c
-clean_kconfig drivers/media/usb/Kconfig 'USB_S2255'
-clean_mk CONFIG_USB_S2255 drivers/media/usb/s2255/Makefile
-
-announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam"
-drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw
-reject_firmware drivers/media/usb/gspca/vicam.c
-clean_blob drivers/media/usb/gspca/vicam.c
-clean_kconfig drivers/media/usb/gspca/Kconfig 'USB_GSPCA_VICAM'
-clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/usb/gspca/Makefile
-
-announce VIDEO_TI_VPE - "TI VPE (Video Processing Engine) driver"
-reject_firmware drivers/media/platform/ti-vpe/vpdma.c
-clean_blob drivers/media/platform/ti-vpe/vpdma.c
-clean_kconfig drivers/media/platform/Kconfig 'VIDEO_TI_VPE'
-clean_mk CONFIG_VIDEO_TI_VPE drivers/media/platform/ti-vpe/Makefile
-
-# radio
-
-announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio"
-reject_firmware drivers/media/radio/radio-wl1273.c
-clean_blob drivers/media/radio/radio-wl1273.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL1273'
-clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile
-
-announce RADIO_WL128X - "Texas Instruments WL128x FM Radio"
-clean_blob drivers/media/radio/wl128x/fmdrv_common.h
-reject_firmware drivers/media/radio/wl128x/fmdrv_common.c
-clean_blob drivers/media/radio/wl128x/fmdrv_common.c
-clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL128X'
-clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile
-
-#######
-# net #
-#######
-
-announce ACENIC - "Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit"
-drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin
-drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin
-reject_firmware drivers/net/ethernet/alteon/acenic.c
-clean_blob drivers/net/ethernet/alteon/acenic.c
-clean_kconfig drivers/net/ethernet/alteon/Kconfig 'ACENIC'
-clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile
-
-announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support"
-clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin
-clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin
-reject_firmware drivers/net/ethernet/adaptec/starfire.c
-clean_blob drivers/net/ethernet/adaptec/starfire.c
-clean_kconfig drivers/net/ethernet/adaptec/Kconfig 'ADAPTEC_STARFIRE'
-clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile
-
-announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support"
-clean_blob drivers/net/ethernet/brocade/bna/bnad.c
-clean_blob drivers/net/ethernet/brocade/bna/cna.h
-reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c
-reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c
-clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig 'BNA'
-clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile
-
-announce BNX2 - "Broadcom NetXtremeII"
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1a.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1a.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw
-drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2.c
-clean_blob drivers/net/ethernet/broadcom/bnx2.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2'
-clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile
-
-announce BNX2X - "Broadcom NetXtremeII 10Gb support"
-drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
-reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^#include "bnx2x_init\.h"/,/^$/{
-  /^$/i\
-#define bnx2x_init_block(bp, start, end) \\\
-  return (printk(KERN_ERR "%s: Missing Free firmware\\n", bp->dev->name),\\\
-	  -EINVAL)
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c 'report missing Free firmware'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-clean_sed '
-/^int bnx2x_nic_load_analyze_req/,/^}$/{
-  /^		u32 my_fw = /i\
-		/*(DEBLOBBED)*/
-  /^		u32 my_fw = /,/<< 24);/d;
-  /^		u32 loaded_fw = /,/^$/{
-    /^$/i\
-\
-		u32 my_fw = ~loaded_fw;
-  }
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 'fail already-loaded test'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
-clean_sed '
-/static void bnx2x_init_wr_wb/{
-  i\
-extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32);
-}' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function'
-clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2X'
-clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile
-
-announce CASSINI - "Sun Cassini"
-drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin
-reject_firmware drivers/net/ethernet/sun/cassini.c
-clean_blob drivers/net/ethernet/sun/cassini.c
-clean_kconfig drivers/net/ethernet/sun/Kconfig 'CASSINI'
-clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile
-
-announce CHELSIO_T3 - "Chelsio AEL 2005 support"
-drop_fw_file firmware/cxgb3/t3b_psram-1.1.0.bin.ihex firmware/cxgb3/t3b_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/t3c_psram-1.1.0.bin.ihex firmware/cxgb3/t3c_psram-1.1.0.bin
-drop_fw_file firmware/cxgb3/ael2005_opt_edc.bin.ihex firmware/cxgb3/ael2005_opt_edc.bin
-drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_edc.bin
-drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin
-reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T3'
-clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile
-
-announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support"
-reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T4'
-clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile
-
-announce E100 - "Intel PRO/100+"
-drop_fw_file firmware/e100/d101m_ucode.bin.ihex firmware/e100/d101m_ucode.bin
-drop_fw_file firmware/e100/d101s_ucode.bin.ihex firmware/e100/d101s_ucode.bin
-drop_fw_file firmware/e100/d102e_ucode.bin.ihex firmware/e100/d102e_ucode.bin
-reject_firmware drivers/net/ethernet/intel/e100.c
-clean_sed '
-/^static const struct firmware \*e100_\(reject\|request\)_firmware(/,/^}$/{
-  s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;:
-}' drivers/net/ethernet/intel/e100.c 'proceed without firmware'
-clean_blob drivers/net/ethernet/intel/e100.c
-clean_kconfig drivers/net/ethernet/intel/Kconfig 'E100'
-clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile
-
-announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device."
-clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img
-reject_firmware drivers/staging/ft1000/TODO
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h
-clean_sed '
-/^static int ft1000_reset_card/,/^}$/ {
-  /card_bootload/i\
-		return /*(DEBLOBBED)*/ false;
-}
-' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \
-  'disabled non-Free firmware-loading machinery'
-reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_PCMCIA'
-clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile
-
-announce FT1000_USB - "Driver for ft1000 USB devices."
-clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img
-reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_USB'
-clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile
-
-announce MYRI_SBUS - "MyriCOM Gigabit Ethernet"
-drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin
-
-announce MYRI10GE - "Myricom Myri-10G Ethernet support"
-reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c
-clean_kconfig drivers/net/ethernet/myricom/Kconfig 'MYRI10GE'
-clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile
-
-announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC"
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h
-clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'NETXEN_NIC'
-clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile
-
-announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support"
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
-reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
-clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
-clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'QLCNIC'
-clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile
-
-announce R8169 - "Realtek 8169 gigabit ethernet support"
-reject_firmware drivers/net/ethernet/realtek/r8169.c
-clean_blob drivers/net/ethernet/realtek/r8169.c
-clean_kconfig drivers/net/ethernet/realtek/Kconfig R8169
-clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile
-
-announce SLICOSS - "Alacritech Gigabit IS-NIC cards"
-reject_firmware drivers/staging/slicoss/slicoss.c
-clean_blob drivers/staging/slicoss/slicoss.c
-clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS'
-clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile
-
-announce SPIDER_NET - "Spider Gigabit Ethernet driver"
-reject_firmware drivers/net/ethernet/toshiba/spider_net.c
-clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \
-  drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes'
-clean_blob drivers/net/ethernet/toshiba/spider_net.c
-clean_blob drivers/net/ethernet/toshiba/spider_net.h
-clean_kconfig drivers/net/ethernet/toshiba/Kconfig 'SPIDER_NET'
-clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile
-
-announce TEHUTI - "Tehuti Networks 10G Ethernet"
-drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin
-reject_firmware drivers/net/ethernet/tehuti/tehuti.c
-clean_blob drivers/net/ethernet/tehuti/tehuti.c
-clean_kconfig drivers/net/ethernet/tehuti/Kconfig 'TEHUTI'
-clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile
-
-announce TIGON3 - "Broadcom Tigon3"
-drop_fw_file firmware/tigon/tg3.bin.ihex firmware/tigon/tg3.bin
-drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin
-drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin
-reject_firmware drivers/net/ethernet/broadcom/tg3.c
-clean_blob drivers/net/ethernet/broadcom/tg3.c
-clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'TIGON3'
-clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile
-
-announce TYPHOON - "3cr990 series Typhoon"
-drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin
-reject_firmware drivers/net/ethernet/3com/typhoon.c
-clean_blob drivers/net/ethernet/3com/typhoon.c
-clean_kconfig drivers/net/ethernet/3com/Kconfig 'TYPHOON'
-clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile
-
-announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter"
-reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c
-clean_kconfig drivers/net/ethernet/neterion/Kconfig 'VXGE'
-clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile
-
-# appletalk
-
-announce COPS - "COPS LocalTalk PC"
-clean_sed '
-/sizeof(\(ff\|lt\)drv_code)/{
-  i\
-		printk(KERN_INFO "%s: Missing Free firmware.\\n", dev->name);\
-		return;
-}
-/\(ff\|lt\)drv_code/d;
-' drivers/net/appletalk/cops.c 'report missing Free firmware'
-clean_blob drivers/net/appletalk/cops.c
-clean_file drivers/net/appletalk/cops_ffdrv.h
-clean_file drivers/net/appletalk/cops_ltdrv.h
-clean_kconfig drivers/net/appletalk/Kconfig 'COPS'
-clean_mk CONFIG_COPS drivers/net/appletalk/Makefile
-
-# hamradio
-
-announce YAM - "YAM driver for AX.25"
-drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin
-drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin
-reject_firmware drivers/net/hamradio/yam.c
-clean_blob drivers/net/hamradio/yam.c
-clean_kconfig drivers/net/hamradio/Kconfig 'YAM'
-clean_mk CONFIG_YAM drivers/net/hamradio/Makefile
-
-# irda
-
-announce USB_IRDA - "IrDA USB dongles"
-reject_firmware drivers/net/irda/irda-usb.c
-clean_blob drivers/net/irda/irda-usb.c
-clean_kconfig drivers/net/irda/Kconfig 'USB_IRDA'
-clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile
-
-# smsc
-
-announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA"
-drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin
-reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c
-clean_kconfig drivers/net/ethernet/smsc/Kconfig 'PCMCIA_SMC91C92'
-clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile
-
-# near-field communication
-
-announce NFC_WILINK - "Texas Instruments NFC WiLink driver"
-reject_firmware drivers/nfc/nfcwilink.c
-clean_blob drivers/nfc/nfcwilink.c
-clean_kconfig drivers/nfc/Kconfig 'NFC_WILINK'
-clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile
-
-announce NFC_PN544_I2C - "NFC PN544 i2c support"
-reject_firmware drivers/nfc/pn544/i2c.c
-clean_kconfig drivers/nfs/pn544/Kconfig 'NFC_PN544_I2C'
-clean_mk NFC_PN544_I2C drivers/nfc/pn544/Kconfig
-
-# pcmcia
-
-# CIS files are not software.
-# announce PCCARD - "PCCard (PCMCIA/CardBus) support"
-# reject_firmware drivers/pcmcia/ds.c
-# clean_kconfig drivers/pcmcia/Kconfig 'PCCARD'
-# clean_mk CONFIG_PCCARD drivers/pcmcia/Makefile
-
-announce PCMCIA_3C574 - "3Com 3c574 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CCFEM556.cis.ihex firmware/cis/3CCFEM556.cis
-# clean_blob drivers/net/pcmcia/3c574_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C574'
-# clean_mk CONFIG_PCMCIA_3C574 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_3C589 - "3Com 3c589 PCMCIA support"
-# This is not software; it's Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/3CXEM556.cis.ihex firmware/cis/3CXEM556.cis
-# clean_blob drivers/net/pcmcia/3c589_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_3C589'
-# clean_mk CONFIG_PCMCIA_3C589 drivers/net/pcmcia/Makefile
-
-announce PCMCIA_PCNET - "NE2000 compatible PCMCIA support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/LA-PCM.cis.ihex firmware/cis/LA-PCM.cis
-drop_fw_file firmware/cis/PCMLM28.cis.ihex firmware/cis/PCMLM28.cis
-drop_fw_file firmware/cis/DP83903.cis.ihex firmware/cis/DP83903.cis
-drop_fw_file firmware/cis/NE2K.cis.ihex firmware/cis/NE2K.cis
-drop_fw_file firmware/cis/tamarack.cis.ihex firmware/cis/tamarack.cis
-drop_fw_file firmware/cis/PE-200.cis.ihex firmware/cis/PE-200.cis
-drop_fw_file firmware/cis/PE520.cis.ihex firmware/cis/PE520.cis
-# clean_blob drivers/net/pcmcia/pcnet_cs.c
-# clean_kconfig drivers/net/pcmcia/Kconfig 'PCMCIA_PCNET'
-# clean_mk CONFIG_PCMCIA_PCNET drivers/net/pcmcia/Makefile
-
-# usb
-
-announce USB_KAWETH - "USB KLSI KL5USB101-based ethernet device support"
-drop_fw_file firmware/kaweth/new_code.bin.ihex firmware/kaweth/new_code.bin
-drop_fw_file firmware/kaweth/new_code_fix.bin.ihex firmware/kaweth/new_code_fix.bin
-drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code.bin
-drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin
-reject_firmware drivers/net/usb/kaweth.c
-clean_blob drivers/net/usb/kaweth.c
-clean_kconfig drivers/net/usb/Kconfig 'USB_KAWETH'
-clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile
-
-# wireless
-
-announce ATMEL "Atmel at76c50x chipset  802.11b support"
-reject_firmware drivers/net/wireless/atmel.c
-clean_blob drivers/net/wireless/atmel.c
-clean_kconfig drivers/net/wireless/Kconfig 'ATMEL'
-clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile
-
-announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards"
-reject_firmware drivers/net/wireless/at76c50x-usb.c
-clean_blob drivers/net/wireless/at76c50x-usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'AT76C50X_USB'
-clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile
-
-announce B43 - "Broadcom 43xx wireless support (mac80211 stack)"
-maybe_reject_firmware drivers/net/wireless/b43/main.c
-clean_sed '
-/^static int b43_upload_microcode(/,/^}$/{
-  /	if (dev->fw\.opensource) {$/i\
-	if (!dev->fw.opensource) {\
-		b43err(dev->wl, "Rejected non-Free firmware\\n");\
-		err = -EOPNOTSUPP;\
-		goto error;\
-	}
-}' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware'
-# Major portions of firmware filenames not deblobbed.
-clean_blob drivers/net/wireless/b43/main.c
-clean_kconfig drivers/net/wireless/b43/Kconfig 'B43'
-clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile
-
-announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)"
-reject_firmware drivers/net/wireless/b43legacy/main.c
-# Major portions of firwmare filenames not deblobbed.
-clean_blob drivers/net/wireless/b43legacy/main.c
-clean_kconfig drivers/net/wireless/b43legacy/Kconfig 'B43LEGACY'
-clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile
-
-announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMSMAC'
-clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile
-
-announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_SDIO'
-clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver"
-reject_firmware drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c
-clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_USB'
-clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile
-
-announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)"
-reject_firmware drivers/net/wireless/orinoco/fw.c
-clean_blob drivers/net/wireless/orinoco/fw.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'HERMES'
-clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile
-
-announce ORINOCO_USB - "Agere Orinoco USB support"
-reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c
-clean_blob drivers/net/wireless/orinoco/orinoco_usb.c
-clean_kconfig drivers/net/wireless/orinoco/Kconfig 'ORINOCO_USB'
-clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile
-
-announce WLAGS49_H2 - "Agere Systems HERMES II Wireless PC Card Model 0110"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h2.c
-clean_blob drivers/staging/wlags49_h2/sta_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h2.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h2.c
-clean_blob drivers/staging/wlags49_h2/wl_profile.c
-clean_sed '
-  s,\(.*hcf_status = \)dhf_download_fw(.*&fw_image );,//& /*(DEBLOBBED)*/\n\1HCF_ERR_INCOMP_FW;,
-' drivers/staging/wlags49_h2/wl_main.c 'reject built-in non-Free firmware'
-clean_kconfig drivers/staging/wlags49_h2/Kconfig 'WLAGS49_H2'
-clean_mk CONFIG_WLAGS49_H2 drivers/staging/Makefile
-
-announce WLAGS49_H25 - "Linksys Systems HERMES II.5 Wireless-G_CompactFlash_Card"
-# Some pieces of the firmware images are most definitely data, but
-# others seem to be code.
-clean_blob drivers/staging/wlags49_h2/ap_h25.c
-clean_blob drivers/staging/wlags49_h2/sta_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/ap_h25.c
-echo 'extern int deblobbed; /*(DEBLOBBED)*/' > drivers/staging/wlags49_h2/sta_h25.c
-clean_kconfig drivers/staging/wlags49_h25/Kconfig 'WLAGS49_H25'
-clean_mk CONFIG_WLAGS49_H25 drivers/staging/Makefile
-
-announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2100.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2100'
-clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile
-
-announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
-reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c
-clean_blob drivers/net/wireless/ipw2x00/ipw2200.c
-clean_kconfig drivers/net/wireless/Kconfig 'IPW2200'
-clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile
-
-announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection"
-reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945-mac.c
-clean_blob drivers/net/wireless/iwlegacy/3945.h
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL3945'
-clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWL4965 - "Intel Wireless WiFi 4965AGN"
-reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965-mac.c
-clean_blob drivers/net/wireless/iwlegacy/4965.c
-clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL4965'
-clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile
-
-announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN"
-reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-5000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-6000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-7000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-1000.c
-clean_blob drivers/net/wireless/iwlwifi/iwl-2000.c
-clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLWIFI'
-clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile
-
-announce IWLMVM - "Intel Wireless WiFi MVM Firmware support"
-reject_firmware drivers/net/wireless/iwlwifi/mvm/nvm.c
-clean_kconfig drivers/net/wireless/iwlwifi/mvm/Kconfig 'IWLMVM'
-clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/mvm/Makefile
-
-announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support"
-reject_firmware drivers/net/wireless/libertas/firmware.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS'
-clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_cs.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_CS'
-clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_sdio.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SDIO'
-clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_spi.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SPI'
-clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards"
-clean_blob drivers/net/wireless/libertas/if_usb.c
-clean_blob drivers/net/wireless/libertas/README
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB'
-clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile
-
-announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware"
-reject_firmware drivers/net/wireless/libertas_tf/if_usb.c
-clean_blob drivers/net/wireless/libertas_tf/if_usb.c
-clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB'
-clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile
-
-announce MWIFIEX - "Marvell WiFi-Ex Driver"
-clean_blob drivers/net/wireless/mwifiex/README
-reject_firmware drivers/net/wireless/mwifiex/main.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX'
-clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787"
-clean_blob drivers/net/wireless/mwifiex/sdio.h
-clean_blob drivers/net/wireless/mwifiex/sdio.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_SDIO'
-clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766"
-clean_blob drivers/net/wireless/mwifiex/pcie.h
-clean_blob drivers/net/wireless/mwifiex/pcie.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_PCIE'
-clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile
-
-announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797"
-clean_blob drivers/net/wireless/mwifiex/usb.h
-clean_blob drivers/net/wireless/mwifiex/usb.c
-clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_USB'
-clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile
-
-announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support"
-reject_firmware drivers/net/wireless/mwl8k.c
-clean_blob drivers/net/wireless/mwl8k.c
-clean_kconfig drivers/net/wireless/Kconfig 'MWL8K'
-clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile
-
-announce AR5523 - "Atheros AR5523 wireless driver support"
-reject_firmware drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.c
-clean_blob drivers/net/wireless/ath/ar5523/ar5523.h
-clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig 'AR5523'
-clean_mk CONFIG_AR5523 drivers/net/wireless/ath/ar5523/Makefile
-
-announce ATH6KL - "Atheros ath6kl support"
-reject_firmware drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/init.c
-clean_blob drivers/net/wireless/ath/ath6kl/core.h
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL'
-clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_SDIO - "Atheros ath6kl SDIO support"
-clean_blob drivers/net/wireless/ath/ath6kl/sdio.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_SDIO'
-clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH6KL_USB - "Atheros ath6kl USB support"
-clean_blob drivers/net/wireless/ath/ath6kl/usb.c
-clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_USB'
-clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile
-
-announce ATH10K - "Atheros 802.11ac wireless cards support"
-reject_firmware drivers/net/wireless/ath/ath10k/core.c
-clean_blob drivers/net/wireless/ath/ath10k/hw.h
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K'
-clean_mk CONFIG_ATH10K drivers/net/wireless/ath/ath10k/Makefile
-
-announce ATH10K_PCI - "Atheros ath10k PCI support"
-clean_blob drivers/net/wireless/ath/ath10k/pci.c
-clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K_PCI'
-clean_mk CONFIG_ATH10K_PCI drivers/net/wireless/ath/ath10k/Makefile
-
-announce CW1200 - "CW1200 WLAN support"
-reject_firmware drivers/net/wireless/cw1200/fwio.c
-clean_blob drivers/net/wireless/cw1200/fwio.h
-reject_firmware drivers/net/wireless/cw1200/sta.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200'
-clean_mk CONFIG_CW1200 drivers/net/wireless/cw1200/Makefile
-
-announce CW1200_WLAN_SDIO - "Support SDIO platforms"
-clean_blob drivers/net/wireless/cw1200/cw1200_sdio.c
-clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200_WLAN_SDIO'
-clean_mk CONFIG_CW1200_WLAN_SDIO drivers/net/wireless/cw1200/Makefile
-
-announce PRISM2_USB - "Prism2.5/3 USB driver"
-reject_firmware drivers/staging/wlan-ng/prism2fw.c
-clean_blob drivers/staging/wlan-ng/prism2fw.c
-clean_kconfig drivers/staging/wlan-ng/Kconfig PRISM2_USB
-clean_mk CONFIG_PRISM2_USB drivers/staging/wlan-ng/Makefile
-
-announce P54_PCI - "Prism54 PCI support"
-reject_firmware drivers/net/wireless/p54/p54pci.c
-clean_blob drivers/net/wireless/p54/p54pci.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_PCI'
-clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile
-
-announce P54_SPI - "Prism54 SPI (stlc45xx) support"
-# There's support for loading custom 3826.eeprom here, with a default
-# eeprom that is clearly pure data.  Without Free 3826.arm, there's
-# little point in trying to retain the ability to load 3826.eeprom, so
-# we drop it altogether.
-reject_firmware drivers/net/wireless/p54/p54spi.c
-clean_blob drivers/net/wireless/p54/p54spi.c
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_SPI'
-clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile
-
-announce P54_USB - "Prism54 USB support"
-reject_firmware drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.c
-clean_blob drivers/net/wireless/p54/p54usb.h
-clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB'
-clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile
-
-announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus"
-reject_firmware drivers/net/wireless/prism54/islpci_dev.c
-clean_blob drivers/net/wireless/prism54/islpci_dev.c
-clean_kconfig drivers/net/wireless/Kconfig 'PRISM54'
-clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile
-
-announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support"
-reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE'
-clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile
-
-announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt61pci.h
-clean_blob drivers/net/wireless/rt2x00/rt61pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT61PCI'
-clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT73USB - "Ralink rt2501/rt73 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt73usb.h
-clean_blob drivers/net/wireless/rt2x00/rt73usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT73USB'
-clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.h
-clean_blob drivers/net/wireless/rt2x00/rt2800pci.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800PCI
-clean_mk CONFIG_RT2800PCI drivers/net/wireless/rt2x00/Makefile
-
-announce RT2800USB - "Ralink rt2800 (USB) support"
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.h
-clean_blob drivers/net/wireless/rt2x00/rt2800usb.c
-clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB
-clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile
-
-announce RTL8188EE - "Realtek RTL8188EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8188EE
-clean_mk CONFIG_RTL8188EE drivers/net/wireless/rtlwifi/rtl8188ee/Makefile
-
-announce R8188EU - "Realtek RTL8188EU Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-clean_blob drivers/staging/rtl8188eu/hal/rtl8188e_hal_init.c
-clean_blob drivers/staging/rtl8188eu/include/rtl8188e_hal.h
-clean_kconfig drivers/staging/rtl8188eu/Kconfig R8188EU
-clean_mk CONFIG_R8188EU drivers/staging/rtl8188eu/Makefile
-
-announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE
-clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
-
-announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU
-clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile
-
-announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE
-clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile
-
-announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE
-clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile
-
-announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c
-clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c
-clean_kconfig drivers/staging/rtl8192e/Kconfig RTL8192E
-clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile
-
-announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c
-clean_blob drivers/staging/rtl8192u/r819xU_firmware.c
-clean_kconfig drivers/staging/rtl8192u/Kconfig 'RTL8192U'
-clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile
-
-announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver"
-reject_firmware drivers/staging/rtl8712/hal_init.c
-clean_blob drivers/staging/rtl8712/hal_init.c
-clean_kconfig drivers/staging/rtl8712/Kconfig 'R8712U'
-clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile
-
-announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723AE'
-clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile
-
-announce VT6656 - "VIA Technologies VT6656 support"
-reject_firmware drivers/staging/vt6656/firmware.c
-clean_blob drivers/staging/vt6656/firmware.c
-clean_kconfig drivers/staging/vt6656/Kconfig 'VT6656'
-clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile
-
-announce WL1251 - "TI wl1251 support"
-reject_firmware drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/main.c
-clean_blob drivers/net/wireless/ti/wl1251/wl1251.h
-clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig 'WL1251'
-clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile
-
-announce WL12XX - "TI wl12xx support"
-clean_blob drivers/net/wireless/ti/wl12xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig 'WL12XX'
-clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile
-
-announce WL18XX - "TI wl18xx support"
-reject_firmware drivers/net/wireless/ti/wl18xx/main.c
-clean_blob drivers/net/wireless/ti/wl18xx/main.c
-clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig 'WL18XX'
-clean_mk CONFIG_WL18XX drivers/net/wireless/ti/wl18xx/Makefile
-
-announce WLCORE - "TI wlcore support"
-reject_firmware drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/main.c
-clean_blob drivers/net/wireless/ti/wlcore/wlcore_i.h
-clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE'
-clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile
-
-announce USB_ZD1201 - "USB ZD1201 based Wireless device support"
-reject_firmware drivers/net/wireless/zd1201.c
-clean_blob drivers/net/wireless/zd1201.c
-clean_kconfig drivers/net/wireless/Kconfig 'USB_ZD1201'
-clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile
-
-announce WCN36XX - "Qualcomm Atheros WCN3660/3680 support"
-reject_firmware drivers/net/wireless/ath/wcn36xx/smd.c
-clean_blob drivers/net/wireless/ath/wcn36xx/wcn36xx.h
-clean_blob drivers/net/wireless/ath/wcn36xx/main.c
-clean_kconfig drivers/net/wireless/ath/wcn36xx/Kconfig 'WCN36XX'
-clean_mk CONFIG_WCN36XX drivers/net/wireless/ath/wcn36xx/Makefile
-
-announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support"
-reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c
-clean_blob drivers/net/wireless/zd1211rw/zd_usb.c
-clean_kconfig drivers/net/wireless/zd1211rw/Kconfig 'ZD1211RW'
-clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile
-
-# bluetooth
-
-announce BT_ATH3K - "Atheros firmware download driver"
-reject_firmware drivers/bluetooth/ath3k.c
-clean_blob drivers/bluetooth/ath3k.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_ATH3K'
-clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile
-
-announce BT_HCIBCM203X - "HCI BCM203x USB driver"
-reject_firmware drivers/bluetooth/bcm203x.c
-clean_blob drivers/bluetooth/bcm203x.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBCM203X'
-clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile
-
-announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver"
-reject_firmware drivers/bluetooth/bfusb.c
-clean_blob drivers/bluetooth/bfusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBFUSB'
-clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile
-
-announce BT_HCIBT3C - "HCI BT3C (PC Card) driver"
-reject_firmware drivers/bluetooth/bt3c_cs.c
-clean_blob drivers/bluetooth/bt3c_cs.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C'
-clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile
-
-announce BT_HCIBTUSB - "HCI USB driver"
-reject_firmware drivers/bluetooth/btusb.c
-clean_blob drivers/bluetooth/btusb.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBTUSB'
-clean_mk CONFIG_BT_HCIBTUSB drivers/bluetooth/Makefile
-
-announce BT_MRVL - "Marvell Bluetooth driver support"
-reject_firmware drivers/bluetooth/btmrvl_main.c
-clean_blob Documentation/btmrvl.txt
-clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL'
-clean_mk CONFIG_BT_MRVL drivers/bluetooth/Makefile
-
-announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver"
-reject_firmware drivers/bluetooth/btmrvl_sdio.c
-clean_blob drivers/bluetooth/btmrvl_sdio.c
-clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL_SDIO'
-clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile
-
-announce TI_ST - "Texas Instruments shared transport line discipline"
-reject_firmware drivers/misc/ti-st/st_kim.c
-clean_blob drivers/misc/ti-st/st_kim.c
-clean_kconfig drivers/misc/ti-st/Kconfig 'TI_ST'
-clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile
-
-announce USB_BTMTK - "Mediatek Bluetooth support"
-reject_firmware drivers/staging/btmtk_usb/btmtk_usb.c
-clean_blob drivers/staging/btmtk_usb/btmtk_usb.c
-clean_kconfig drivers/staging/btmtk_usb/Kconfig 'USB_BTMTK'
-clean_mk CONFIG_USB_BTMTK drivers/staging/btmtk_usb/Makefile
-
-# wimax
-
-announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400"
-reject_firmware drivers/net/wimax/i2400m/fw.c
-clean_blob drivers/net/wimax/i2400m/usb.c
-clean_blob Documentation/wimax/README.i2400m
-clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M'
-clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile
-
-announce BCM_WIMAX - "Beceem BCS200/BCS220-3 and BCSM250 wimax support"
-clean_blob drivers/staging/bcm/Macros.h
-# This disables loading of the .cfg file as well, but it's useless without
-# the firmware proper.
-clean_sed '
-/^static \(inline \)\?struct file \*open_firmware_file/,/^}$/ {
-  s,\(flp *= *\)filp_open[^;]*,\1/*(DEBLOBBED)*/(void*)-ENOENT,
-}' drivers/staging/bcm/Misc.c 'disabled non-Free firmware loading machinery'
-clean_kconfig drivers/staging/bcm/Kconfig 'BCM_WIMAX'
-clean_mk CONFIG_BCM_WIMAX drivers/staging/bcm/Makefile
-
-announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface"
-reject_firmware drivers/staging/gdm72xx/sdio_boot.c
-clean_blob drivers/staging/gdm72xx/sdio_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_SDIO'
-clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile
-
-announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface"
-reject_firmware drivers/staging/gdm72xx/usb_boot.c
-clean_blob drivers/staging/gdm72xx/usb_boot.c
-clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_USB'
-clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile
-
-# infiniband
-
-announce INFINIBAND_QIB - "QLogic PCIe HCA support"
-drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw
-reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c
-clean_blob drivers/infiniband/hw/qib/qib_sd7220.c
-clean_kconfig drivers/infiniband/hw/qib/Kconfig 'INFINIBAND_QIB'
-clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile
-
-# CAN
-
-announce CAN_SOFTING - "Softing Gmbh CAN generic support"
-reject_firmware drivers/net/can/softing/softing_fw.c
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING'
-clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile
-
-announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards"
-clean_blob drivers/net/can/softing/softing_cs.c
-clean_blob drivers/net/can/softing/softing_platform.h
-clean_sed '
-/^config CAN_SOFTING_CS$/,${
-  /You need firmware/i\
-	  /*(DEBLOBBED)*/
-  /You need firmware/,/softing-fw.*tar\.gz/d
-}' drivers/net/can/softing/Kconfig 'removed firmware notes'
-clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING_CS'
-clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/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
-
-announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+"
-reject_firmware drivers/isdn/hardware/mISDN/speedfax.c
-clean_blob drivers/isdn/hardware/mISDN/speedfax.c
-clean_kconfig drivers/isdn/hardware/mISDN/Kconfig 'MISDN_SPEEDFAX'
-clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile
-
-##########
-# Serial #
-##########
-
-announce DGAP - "Digi EPCA PCI products"
-clean_blob drivers/staging/dgap/downld.c
-clean_kconfig drivers/staging/dgap/Kconfig 'DGAP'
-clean_mk CONFIG_DGAP drivers/staging/dgap/Makefile
-
-announce SERIAL_8250_CS - "8250/16550 PCMCIA device support"
-# These are not software; they're Free, but GPLed without in-tree sources.
-drop_fw_file firmware/cis/MT5634ZLX.cis.ihex firmware/cis/MT5634ZLX.cis
-drop_fw_file firmware/cis/RS-COM-2P.cis.ihex firmware/cis/RS-COM-2P.cis
-drop_fw_file firmware/cis/COMpad2.cis.ihex firmware/cis/COMpad2.cis
-drop_fw_file firmware/cis/COMpad4.cis.ihex firmware/cis/COMpad4.cis
-# These are not software; they're Free, but GPLed without textual sources.
-# It could be assumed that these binaries *are* sources, since they
-# can be trivially converted back to a textual form, without loss,
-# but we're better off safe than sorry, so remove them from our tree.
-drop_fw_file firmware/cis/SW_555_SER.cis.ihex firmware/cis/SW_555_SER.cis
-drop_fw_file firmware/cis/SW_7xx_SER.cis.ihex firmware/cis/SW_7xx_SER.cis
-drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis
-# clean_blob drivers/tty/serial/serial_cs.c
-# clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_8250_CS'
-# clean_mk CONFIG_SERIAL_8250_CS drivers/tty/serial/Makefile
-
-announce SERIAL_ICOM - "IBM Multiport Serial Adapter"
-reject_firmware drivers/tty/serial/icom.c
-clean_blob drivers/tty/serial/icom.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_ICOM'
-clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile
-
-announce SERIAL_QE - "Freescale QUICC Engine serial port support"
-reject_firmware drivers/tty/serial/ucc_uart.c
-clean_blob drivers/tty/serial/ucc_uart.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_QE'
-clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile
-
-announce SERIAL_RP2 - "Comtrol RocketPort EXPRESS/INFINITY support"
-reject_firmware drivers/tty/serial/rp2.c
-clean_blob drivers/tty/serial/rp2.c
-clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_RP2'
-clean_mk CONFIG_SERIAL_RP2 drivers/tty/serial/Makefile
-
-########
-# Leds #
-########
-
-announce LEDS_LP55XX_COMMON - "Common Driver for TI/National LP5521 and LP5523/55231"
-reject_firmware drivers/leds/leds-lp55xx-common.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP55XX_COMMON'
-clean_mk CONFIG_LEDS_LP55XX_COMMON drivers/leds/Makefile
-
-announce LEDS_LP5521 - "LED Support for N.S. LP5521 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5521.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP5521'
-clean_mk CONFIG_LEDS_LP5521 drivers/leds/Makefile
-
-announce LEDS_LP5523 - "LED Support for TI/National LP5523/55231 LED driver chip"
-# The blob name is the chip name; no point in deblobbing that.
-# clean_blob drivers/leds/leds-lp5523.c
-clean_kconfig drivers/leds/Kconfig 'LEDS_LP5523'
-clean_mk CONFIG_LEDS_LP5523 drivers/leds/Makefile
-
-#########
-# input #
-#########
-
-announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen"
-reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c
-clean_blob drivers/input/touchscreen/atmel_mxt_ts.c
-clean_kconfig drivers/input/touchscreen/Kconfig 'TOUCHSCREEN_ATMEL_MXT'
-clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile
-
-announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter"
-reject_firmware drivers/staging/media/lirc/lirc_zilog.c
-clean_blob drivers/staging/media/lirc/lirc_zilog.c
-clean_kconfig drivers/staging/media/lirc/Kconfig 'LIRC_ZILOG'
-clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile
-
-announce INPUT_IMS_PCU - "IMS Passenger Control Unit driver"
-reject_firmware drivers/input/misc/ims-pcu.c
-clean_blob drivers/input/misc/ims-pcu.c
-clean_kconfig drivers/input/misc/Kconfig 'INPUT_IMS_PCU'
-clean_mk CONFIG_INPUT_IMS_PCU drivers/input/misc/Makefile
-
-####################
-# Data acquisition #
-####################
-
-announce COMEDI - "Data acquisition support (comedi)"
-reject_firmware drivers/staging/comedi/drivers.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI'
-clean_mk CONFIG_COMEDI drivers/staging/comedi/Makefile
-
-announce COMEDI_DAQBOARD2000 - "IOtech DAQboard/2000 support"
-clean_blob drivers/staging/comedi/drivers/daqboard2000.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_DAQBOARD2000'
-clean_mk CONFIG_COMEDI_DAQBOARD2000 drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_JR3_PCI - "JR3/PCI force sensor board support"
-clean_blob drivers/staging/comedi/drivers/jr3_pci.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_JR3_PCI'
-clean_mk CONFIG_COMEDI_JR3_PCI drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_ME_DAQ - "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support"
-clean_blob drivers/staging/comedi/drivers/me_daq.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_ME_DAQ'
-clean_mk CONFIG_COMEDI_ME_DAQ drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_NI_PCIDIO - "NI PCI-DIO32HS, PCI-6533, PCI-6534 support"
-clean_blob drivers/staging/comedi/drivers/ni_pcidio.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_NI_PCIDIO'
-clean_mk CONFIG_COMEDI_NI_PCIDIO drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUX - "ITL USBDUX support"
-clean_blob drivers/staging/comedi/drivers/usbdux.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUX'
-clean_mk CONFIG_COMEDI_USBDUX drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXFAST - "ITL USB-DUXfast support"
-clean_blob drivers/staging/comedi/drivers/usbduxfast.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXFAST'
-clean_mk CONFIG_COMEDI_USBDUXFAST drivers/staging/comedi/drivers/Makefile
-
-announce COMEDI_USBDUXSIGMA - "ITL USB-DUXsigma support"
-clean_blob drivers/staging/comedi/drivers/usbduxsigma.c
-clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_USBDUXSIGMA'
-clean_mk CONFIG_COMEDI_USBDUXSIGMA drivers/staging/comedi/drivers/Makefile
-
-
-#######
-# MMC #
-#######
-
-announce MMC_VUB300 - "VUB300 USB to SDIO/SD/MMC Host Controller support"
-clean_sed '
-/^config MMC_VUB300/,/^config /{
-  /Some SDIO cards/i\
-	  /*(DEBLOBBED)*/
-  /Some SDIO cards/,/obtainable data rate\.$/d
-}
-' drivers/mmc/host/Kconfig "removed firmware notes"
-reject_firmware drivers/mmc/host/vub300.c
-clean_blob drivers/mmc/host/vub300.c
-clean_kconfig drivers/mmc/host/Kconfig 'MMC_VUB300'
-clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile
-
-########
-# SCSI #
-########
-
-announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver"
-drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin
-reject_firmware drivers/scsi/qlogicpti.c
-clean_blob drivers/scsi/qlogicpti.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGICPTI'
-clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile
-
-announce SCSI_ADVANSYS - "AdvanSys SCSI"
-drop_fw_file firmware/advansys/mcode.bin.ihex firmware/advansys/mcode.bin
-drop_fw_file firmware/advansys/3550.bin.ihex firmware/advansys/3550.bin
-drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin
-drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin
-reject_firmware drivers/scsi/advansys.c
-clean_blob drivers/scsi/advansys.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_ADVANSYS'
-clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile
-
-announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI"
-drop_fw_file firmware/qlogic/1040.bin.ihex firmware/qlogic/1040.bin
-drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin
-drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin
-reject_firmware drivers/scsi/qla1280.c
-clean_blob drivers/scsi/qla1280.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGIC_1280'
-clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile
-
-announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support"
-reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.c
-clean_blob drivers/scsi/aic94xx/aic94xx_seq.h
-clean_kconfig drivers/scsi/aic94xx/Kconfig 'SCSI_AIC94XX'
-clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile
-
-announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support"
-reject_firmware drivers/scsi/bfa/bfad.c
-clean_blob drivers/scsi/bfa/bfad.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_BFA_FC'
-clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile
-
-announce SCSI_CHELSIO_FCOE - "Chelsio Communications FCoE support"
-reject_firmware drivers/scsi/csiostor/csio_hw.c
-clean_blob drivers/scsi/csiostor/csio_hw_chip.h
-clean_blob drivers/scsi/csiostor/csio_init.c
-clean_kconfig drivers/scsi/csiostor/Kconfig 'SCSI_CHELSIO_FCOE'
-clean_mk CONFIG_SCSI_CHELSIO_FCOE drivers/scsi/csiostor/Makefile
-
-announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support"
-# The firmware name is built out of Vital Product Data read from the
-# adapter.  The firmware is definitely code, and I couldn't find
-# evidence it is Free, so I'm disabling it.  It's not clear whether
-# this is the hardware or the software inducing to the installation of
-# non-Free firmware.
-reject_firmware drivers/scsi/lpfc/lpfc.h
-reject_firmware drivers/scsi/lpfc/lpfc_crtn.h
-reject_firmware drivers/scsi/lpfc/lpfc_init.c
-reject_firmware drivers/scsi/lpfc/lpfc_attr.c
-clean_kconfig drivers/scsi/Kconfig 'SCSI_LPFC'
-clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile
-
-announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support"
-reject_firmware drivers/scsi/qla2xxx/qla_gbl.h
-reject_firmware drivers/scsi/qla2xxx/qla_init.c
-reject_firmware drivers/scsi/qla2xxx/qla_os.c
-reject_firmware drivers/scsi/qla2xxx/qla_nx.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
-
-
-#######
-# USB #
-#######
-
-# atm
-
-announce USB_CXACRU - "Conexant AccessRunner USB support"
-reject_firmware drivers/usb/atm/cxacru.c
-clean_blob drivers/usb/atm/cxacru.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_CXACRU'
-clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile
-
-announce USB_SPEEDTOUCH - "Speedtouch USB support"
-reject_firmware drivers/usb/atm/speedtch.c
-clean_blob drivers/usb/atm/speedtch.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_SPEEDTOUCH'
-clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile
-
-announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem"
-reject_firmware drivers/usb/atm/ueagle-atm.c
-clean_blob drivers/usb/atm/ueagle-atm.c
-clean_kconfig drivers/usb/atm/Kconfig 'USB_UEAGLEATM'
-clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile
-
-# misc
-
-announce USB_EMI26 - "EMI 2|6 USB Audio interface"
-# These files are not under the GPL, better remove them all.
-drop_fw_file firmware/emi26/bitstream.HEX firmware/emi26/bitstream.fw
-drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw
-drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw
-reject_firmware drivers/usb/misc/emi26.c
-clean_blob drivers/usb/misc/emi26.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI26'
-clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile
-
-announce USB_EMI62 - "EMI 6|2m USB Audio interface"
-# These files are probably not under the GPL, better remove them all.
-drop_fw_file firmware/emi62/bitstream.HEX firmware/emi62/bitstream.fw
-drop_fw_file firmware/emi62/loader.HEX firmware/emi62/loader.fw
-drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw
-drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw
-reject_firmware drivers/usb/misc/emi62.c
-clean_blob drivers/usb/misc/emi62.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI62'
-clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile
-
-announce USB_EZUSB_FX2 - "Functions for loading firmware on EZUSB chips"
-maybe_reject_firmware drivers/usb/misc/ezusb.c
-
-announce USB_ISIGHTFW - "iSight firmware loading support"
-reject_firmware drivers/usb/misc/isight_firmware.c
-clean_blob drivers/usb/misc/isight_firmware.c
-clean_kconfig drivers/usb/misc/Kconfig 'USB_ISIGHTFW'
-clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile
-
-# storage
-
-announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support"
-reject_firmware drivers/usb/storage/ene_ub6250.c
-clean_blob drivers/usb/storage/ene_ub6250.c
-clean_kconfig drivers/usb/storage/Kconfig 'USB_STORAGE_ENE_UB6250'
-clean_mk 'CONFIG_USB_STORAGE_ENE_UB6250' drivers/usb/storage/Makefile
-
-announce USB_ENESTORAGE - "USB ENE card reader support"
-clean_blob drivers/staging/keucr/init.h
-clean_sed '
-/^int ENE_LoadBinCode(/,/^}$/ {
-  /kmalloc/i\
-	return /*(DEBLOBBED)*/ USB_STOR_TRANSPORT_ERROR;
-}
-' drivers/staging/keucr/init.c 'disable non-Free firmware loading machinery'
-clean_kconfig drivers/staging/keucr/Kconfig 'USB_ENESTORAGE'
-clean_mk 'CONFIG_USB_ENESTORAGE' drivers/staging/keucr/Makefile
-
-# serial
-
-announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver"
-drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_MPR'
-drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA18X'
-drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19'
-drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QI'
-drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QW'
-drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19W'
-drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28'
-drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XA'
-drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XB'
-drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28X'
-drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49W'
-drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49WLC'
-clean_blob drivers/usb/serial/keyspan.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN'
-clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver"
-clean_fw firmware/edgeport/boot.H16 firmware/edgeport/boot.fw
-clean_fw firmware/edgeport/boot2.H16 firmware/edgeport/boot2.fw
-clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw
-clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw
-reject_firmware drivers/usb/serial/io_edgeport.c
-clean_blob drivers/usb/serial/io_edgeport.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile
-
-announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)"
-clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin
-reject_firmware drivers/usb/serial/io_ti.c
-clean_blob drivers/usb/serial/io_ti.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT_TI'
-clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver"
-drop_fw_file firmware/ti_3410.fw.ihex firmware/ti_3410.fw
-drop_fw_file firmware/ti_5052.fw.ihex firmware/ti_5052.fw
-drop_fw_file firmware/mts_cdma.fw.ihex firmware/mts_cdma.fw
-drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw
-drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw
-reject_firmware drivers/usb/serial/ti_usb_3410_5052.c
-clean_blob drivers/usb/serial/ti_usb_3410_5052.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_TI'
-clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile
-
-announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver"
-clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw
-clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw
-clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw
-clean_blob drivers/usb/serial/whiteheat.c
-clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_WHITEHEAT'
-clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile
-
-# uwb
-
-announce UWB_I1480U - Support for Intel Wireless UWB Link 1480 HWA
-reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h
-reject_firmware drivers/uwb/i1480/dfu/mac.c
-reject_firmware drivers/uwb/i1480/dfu/phy.c
-clean_blob drivers/uwb/i1480/dfu/usb.c
-clean_kconfig drivers/uwb/Kconfig 'UWB_I1480U'
-clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile
-
-
-
-################
-# Programmable #
-################
-
-announce LATTICE_ECP3_CONFIG - "Lattice ECP3 FPGA bitstrap configuration via SPI"
-reject_firmware drivers/misc/lattice-ecp3-config.c
-clean_blob drivers/misc/lattice-ecp3-config.c
-clean_kconfig drivers/misc/Kconfig 'LATTICE_ECP3_CONFIG'
-clean_mk CONFIG_LATTICE_ECP3_CONFIG drivers/misc/Makefile
-
-announce STE_MODEM_RPROC - "STE-Modem remoteproc support"
-maybe_reject_firmware drivers/remoteproc/remoteproc_core.c
-undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \
-  "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c
-clean_kconfig drivers/remoteproc/Kconfig 'STE_MODEM_RPROC'
-clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile
-
-
-#########
-# Sound #
-#########
-
-announce SND_ASIHPI - "AudioScience ASIxxxx"
-reject_firmware sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpidspcd.c
-clean_blob sound/pci/asihpi/hpioctl.c
-clean_kconfig sound/pci/Kconfig 'SND_ASIHPI'
-clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile
-
-announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
-# This appears to have been extracted from some non-Free driver
-clean_file sound/pci/cs46xx/cs46xx_image.h
-# The following blobs are definitely extracted from non-Free drivers.
-clean_file sound/pci/cs46xx/imgs/cwc4630.h
-clean_file sound/pci/cs46xx/imgs/cwcasync.h
-clean_file sound/pci/cs46xx/imgs/cwcsnoop.h
-clean_sed '
-/^\(int \)\?snd_cs46xx_download_image([^;]*$/,/^}$/{
-  /for.*BA1_MEMORY_COUNT/i\
-#if 0
-  /^}$/{
-    i\
-#else\
-	snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n");\
-	return -EINVAL;\
-#endif
-  }
-}
-s/cs46xx_dsp_load_module(chip, [&]cwc\(4630\|async\|snoop\)_module)/(snd_printk(KERN_ERR "cs46xx: Missing Free firmware\\n"),-EINVAL)/
-' sound/pci/cs46xx/cs46xx_lib.c 'report missing Free firmware'
-clean_blob sound/pci/cs46xx/cs46xx_lib.c
-clean_kconfig sound/pci/Kconfig 'SND_CS46XX'
-clean_mk 'CONFIG_SND_CS46XX' sound/pci/cs46xx/Makefile
-
-announce SND_KORG1212 - "Korg 1212 IO"
-drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp
-reject_firmware sound/pci/korg1212/korg1212.c
-clean_blob sound/pci/korg1212/korg1212.c
-clean_kconfig sound/pci/Kconfig 'SND_KORG1212'
-clean_mk 'CONFIG_SND_KORG1212' sound/pci/korg1212/Makefile
-
-announce SND_MAESTRO3 - "ESS Allegro/Maestro3"
-drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw
-drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw
-reject_firmware sound/pci/maestro3.c
-clean_blob sound/pci/maestro3.c
-clean_kconfig sound/pci/Kconfig 'SND_MAESTRO3'
-clean_mk 'CONFIG_SND_MAESTRO3' sound/pci/Makefile
-
-announce SND_YMFPCI - "Yamaha YMF724/740/744/754"
-drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw
-drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw
-drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw
-reject_firmware sound/pci/ymfpci/ymfpci_main.c
-clean_blob sound/pci/ymfpci/ymfpci_main.c
-clean_kconfig sound/pci/Kconfig 'SND_YMFPCI'
-clean_mk 'CONFIG_SND_YMFPCI' sound/pci/ymfpci/Makefile
-
-announce SND_SB16_CSP - "SB16 Advanced Signal Processor"
-drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp
-drop_fw_file firmware/sb16/mulaw_main.csp.ihex firmware/sb16/mulaw_main.csp
-drop_fw_file firmware/sb16/ima_adpcm_init.csp.ihex firmware/sb16/ima_adpcm_init.csp
-drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_capture.csp
-drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp
-reject_firmware sound/isa/sb/sb16_csp.c
-clean_blob sound/isa/sb/sb16_csp.c
-clean_kconfig sound/isa/Kconfig 'SND_SB16_CSP'
-clean_mk 'CONFIG_SND_SB16_CSP' sound/isa/sb/Makefile
-
-announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
-drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin
-reject_firmware sound/isa/wavefront/wavefront_fx.c
-clean_blob sound/isa/wavefront/wavefront_fx.c
-reject_firmware sound/isa/wavefront/wavefront_synth.c
-clean_blob sound/isa/wavefront/wavefront_synth.c
-clean_kconfig sound/isa/Kconfig 'SND_WAVEFRONT'
-clean_mk 'CONFIG_SND_WAVEFRONT' sound/isa/wavefront/Makefile
-
-announce SND_VX_LIB - Digigram VX soundcards
-reject_firmware sound/drivers/vx/vx_hwdep.c
-clean_blob sound/drivers/vx/vx_hwdep.c
-clean_kconfig sound/drivers/Kconfig 'SND_VX_LIB'
-clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile
-
-announce SND_DARLA20 - "(Echoaudio) Darla20"
-clean_blob sound/pci/echoaudio/darla20.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA20'
-clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile
-
-announce SND_DARLA24 - "(Echoaudio) Darla24"
-clean_blob sound/pci/echoaudio/darla24.c
-clean_kconfig sound/pci/Kconfig 'SND_DARLA24'
-clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile
-
-announce SND_ECHO3G - "(Echoaudio) 3G cards"
-clean_blob sound/pci/echoaudio/echo3g.c
-clean_kconfig sound/pci/Kconfig 'SND_ECHO3G'
-clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile
-
-announce SND_GINA20 - "(Echoaudio) Gina20"
-clean_blob sound/pci/echoaudio/gina20.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA20'
-clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile
-
-announce SND_GINA24 - "(Echoaudio) Gina24"
-clean_blob sound/pci/echoaudio/gina24.c
-clean_kconfig sound/pci/Kconfig 'SND_GINA24'
-clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile
-
-announce SND_INDIGO - "(Echoaudio) Indigo"
-clean_blob sound/pci/echoaudio/indigo.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGO'
-clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJ - "(Echoaudio) Indigo DJ"
-clean_blob sound/pci/echoaudio/indigodj.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJ'
-clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile
-
-announce SND_INDIGODJX - "(Echoaudio) Indigo DJx"
-clean_blob sound/pci/echoaudio/indigodjx.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGODJX'
-clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIO - "(Echoaudio) Indigo IO"
-clean_blob sound/pci/echoaudio/indigoio.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIO'
-clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile
-
-announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx"
-clean_blob sound/pci/echoaudio/indigoiox.c
-clean_kconfig sound/pci/Kconfig 'SND_INDIGOIOX'
-clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA20 - "(Echoaudio) Layla20"
-clean_blob sound/pci/echoaudio/layla20.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA20'
-clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile
-
-announce SND_LAYLA24 - "(Echoaudio) Layla24"
-clean_blob sound/pci/echoaudio/layla24.c
-clean_kconfig sound/pci/Kconfig 'SND_LAYLA24'
-clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile
-
-announce SND_MIA - "(Echoaudio) Mia"
-clean_blob sound/pci/echoaudio/mia.c
-clean_kconfig sound/pci/Kconfig 'SND_MIA'
-clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile
-
-announce SND_MONA - "(Echoaudio) Mona"
-clean_blob sound/pci/echoaudio/mona.c
-clean_kconfig sound/pci/Kconfig 'SND_MONA'
-clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile
-
-announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above "
-reject_firmware sound/pci/echoaudio/echoaudio.c
-clean_blob sound/pci/echoaudio/echoaudio.c
-
-announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)"
-reject_firmware sound/pci/emu10k1/emu10k1_main.c
-clean_blob sound/pci/emu10k1/emu10k1_main.c
-clean_kconfig sound/pci/Kconfig 'SND_EMU10K1'
-clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile
-
-announce SND_MIXART - "Digigram miXart"
-reject_firmware sound/pci/mixart/mixart_hwdep.c
-clean_blob sound/pci/mixart/mixart_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_MIXART'
-clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile
-
-announce SND_PCXHR - "Digigram PCXHR"
-reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c
-clean_blob sound/pci/pcxhr/pcxhr_hwdep.c
-clean_kconfig sound/pci/Kconfig 'SND_PCXHR'
-clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile
-
-announce SND_RIPTIDE - "Conexant Riptide"
-reject_firmware sound/pci/riptide/riptide.c
-clean_blob sound/pci/riptide/riptide.c
-clean_kconfig sound/pci/Kconfig 'SND_RIPTIDE'
-clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile
-
-# This is ok, patch filenames are supplied as module parameters, and
-# they are text files with patch instructions.
-#announce SND_HDA_PATCH_LOADER - "Support initialization patch loading for HD-audio"
-#reject_firmware sound/pci/hda/hda_hwdep.c
-#clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_PATCH_LOADER'
-
-announce SND_HDA_CODEC_CA0132_DSP - "Support new DSP code for CA0132 codec"
-reject_firmware sound/pci/hda/patch_ca0132.c
-clean_blob sound/pci/hda/patch_ca0132.c
-clean_sed '
-/^config SND_HDA_CODEC_CA0132_DSP$/, /^config / {
-  s,(ctefx.bin),(/*(DEBLOBBED)*/),;
-}' sound/pci/hda/Kconfig 'removed blob name'
-clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_CODEC_CA0132_DSP'
-# There are no separate source files or Makefile entries for the _DSP option.
-clean_mk CONFIG_SND_HDA_CODEC_CA0132 sound/pci/hda/Makefile
-
-announce SND_HDSP - "RME Hammerfall DSP Audio"
-reject_firmware sound/pci/rme9652/hdsp.c
-clean_blob sound/pci/rme9652/hdsp.c
-clean_kconfig sound/pci/Kconfig 'SND_HDSP'
-clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile
-
-announce SND_AICA - "Dreamcast Yamaha AICA sound"
-reject_firmware sound/sh/aica.c
-clean_blob sound/sh/aica.c
-clean_kconfig sound/sh/Kconfig 'SND_AICA'
-clean_mk CONFIG_SND_AICA sound/sh/Makefile
-
-announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle"
-clean_blob sound/isa/msnd/msnd_pinnacle.h
-reject_firmware sound/isa/msnd/msnd_pinnacle.c
-clean_blob sound/isa/msnd/msnd_pinnacle.c
-clean_kconfig sound/isa/Kconfig 'SND_MSND_PINNACLE'
-clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile
-
-announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey"
-clean_blob sound/isa/msnd/msnd_classic.h
-clean_kconfig sound/isa/Kconfig 'SND_MSND_CLASSIC'
-clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile
-
-announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)"
-clean_blob sound/oss/msnd_classic.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS'
-clean_sed '
-/^config MSNDCLAS_INIT_FILE$/, /^config / {
-  /^	default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDCLAS_PERM_FILE$/, /^config / {
-  /^	default.*msndperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile
-
-announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)"
-clean_blob sound/oss/msnd_pinnacle.h
-clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN'
-clean_sed '
-/^config MSNDPIN_INIT_FILE$/, /^config / {
-  /^	default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}
-/^config MSNDPIN_PERM_FILE$/, /^config / {
-  /^	default.*pndsperm\.bin/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_MSNDPIN sound/oss/Makefile
-
-announce SND_SSCAPE - "Ensoniq SoundScape driver"
-reject_firmware sound/isa/sscape.c
-clean_blob sound/isa/sscape.c
-clean_sed '
-/^config SND_SSCAPE$/, /^config / {
-  s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g;
-}' sound/isa/Kconfig 'removed firmware names'
-clean_kconfig sound/isa/Kconfig 'SND_SSCAPE'
-clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile
-
-announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor"
-clean_blob sound/soc/codecs/adau1701.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1701'
-clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile
-
-announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader"
-maybe_reject_firmware sound/soc/codecs/sigmadsp.c
-
-announce SND_SOC_WM0010 - "WM0010 DSP driver"
-reject_firmware sound/soc/codecs/wm0010.c
-clean_blob sound/soc/codecs/wm0010.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM0010'
-clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile
-
-# It's not clear that wm2000_anc.bin is pure data.
-# Check with developer, clean up for now.
-announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm2000.c
-clean_blob sound/soc/codecs/wm2000.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM2000'
-clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile
-
-announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs"
-reject_firmware sound/soc/codecs/wm8958-dsp2.c
-clean_blob sound/soc/codecs/wm8958-dsp2.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM8994'
-clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile
-
-# The coeff files might be pure data, but the wmfw surely aren't.
-announce SND_SOC_WM_ADSP - "Wolfson ADSP support"
-reject_firmware sound/soc/codecs/wm_adsp.c
-clean_blob sound/soc/codecs/wm_adsp.c
-clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM_ADSP'
-clean_mk CONFIG_SND_SOC_WM_ADSP sound/soc/codecs/Makefile
-
-announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral"
-reject_firmware sound/soc/sh/siu_dai.c
-clean_blob sound/soc/sh/siu_dai.c
-clean_kconfig sound/soc/sh/Kconfig 'SND_SOC_SH4_SIU'
-clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile
-
-announce SOUND_TRIX - "MediaTrix AudioTrix Pro support"
-clean_blob sound/oss/trix.c
-clean_kconfig sound/oss/Kconfig 'SOUND_TRIX'
-clean_sed '
-/^config TRIX_BOOT_FILE$/, /^config / {
-  /^	default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_TRIX sound/oss/Makefile
-
-announce SOUND_TRIX - "See above,"
-announce SOUND_PAS - "ProAudioSpectrum 16 support,"
-announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support"
-clean_blob sound/oss/sb_common.c
-clean_kconfig sound/oss/Kconfig 'SOUND_PAS'
-clean_kconfig sound/oss/Kconfig 'SOUND_SB'
-clean_mk CONFIG_SOUND_PAS sound/oss/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 '
-/^config PSS_BOOT_FILE$/, /^config / {
-  /^	default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",;
-}' sound/oss/Kconfig 'removed default firmware'
-clean_mk CONFIG_SOUND_PSS sound/oss/Makefile
-
-announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB"
-reject_firmware sound/usb/6fire/firmware.c
-clean_blob sound/usb/6fire/firmware.c
-clean_kconfig sound/usb/Kconfig 'SND_USB_6FIRE'
-clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile
-
-#################
-# Documentation #
-#################
-
-announce Documentation - "non-Free firmware scripts and documentation"
-clean_blob Documentation/dvb/avermedia.txt
-clean_blob Documentation/dvb/opera-firmware.txt
-clean_blob Documentation/sound/alsa/ALSA-Configuration.txt
-clean_blob Documentation/sound/oss/MultiSound
-clean_blob Documentation/sound/oss/PSS
-clean_blob Documentation/sound/oss/PSS-updates
-clean_blob Documentation/sound/oss/README.OSS
-clean_file Documentation/dvb/get_dvb_firmware
-clean_file Documentation/video4linux/extract_xc3028.pl
-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
diff --git a/helpers/DATA/linux-lts-wily/deblob-4.2 b/helpers/DATA/linux/deblob-4.4
old mode 100644
new mode 100755
similarity index 94%
rename from helpers/DATA/linux-lts-wily/deblob-4.2
rename to helpers/DATA/linux/deblob-4.4
index 31fdd6001..cfd86d306
--- a/helpers/DATA/linux-lts-wily/deblob-4.2
+++ b/helpers/DATA/linux/deblob-4.4
@@ -48,7 +48,7 @@
 
 # For each kver release, start extra with an empty string, then count
 # from 1 if changes are needed that require rebuilding the tarball.
-kver=4.2 extra=
+kver=4.4 extra=
 
 set -e
 
@@ -301,8 +301,8 @@ for f in \
     drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/idle.fuc \
     drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3 \
   drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h \
-    drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf110.fuc4 \
-  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf110.fuc4.h \
+    drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4 \
+  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf119.fuc4.h \
     drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5 \
   drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h \
     drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3 \
@@ -506,26 +506,14 @@ clean_blob arch/x86/kernel/cpu/microcode/amd.c
 clean_kconfig arch/x86/Kconfig MICROCODE_AMD
 clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/cpu/microcode/Makefile
 
-announce MICROCODE_AMD_EARLY - "Early load AMD microcode"
-clean_blob arch/x86/kernel/cpu/microcode/amd_early.c
-clean_kconfig arch/x86/Kconfig MICROCODE_AMD_EARLY
-clean_mk CONFIG_MICROCODE_AMD_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
 announce MICROCODE_INTEL - "Intel microcode patch loading support"
 reject_firmware arch/x86/kernel/cpu/microcode/intel.c
 clean_blob arch/x86/kernel/cpu/microcode/intel.c
 clean_kconfig arch/x86/Kconfig MICROCODE_INTEL
 clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/cpu/microcode/Makefile
 
-announce MICROCODE_INTEL_EARLY - "Early load Intel microcode"
-clean_blob arch/x86/kernel/cpu/microcode/intel_early.c
-clean_kconfig arch/x86/Kconfig MICROCODE_INTEL_EARLY
-clean_mk CONFIG_MICROCODE_INTEL_EARLY arch/x86/kernel/cpu/microcode/Makefile
-
 announce MICROCODE_EARLY - "Early load microcode"
 clean_blob Documentation/x86/early-microcode.txt
-clean_kconfig arch/x86/Kconfig MICROCODE_EARLY
-clean_mk CONFIG_MICROCODE_EARLY arch/x86/kernel/cpu/microcode/Makefile
 
 # arm
 
@@ -634,6 +622,10 @@ reject_firmware drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
 clean_blob drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
 reject_firmware drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
 clean_blob drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+reject_firmware drivers/gpu/drm/amd/amdgpu/fiji_dpm.c
+clean_blob drivers/gpu/drm/amd/amdgpu/fiji_dpm.c
+reject_firmware drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+clean_blob drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
 reject_firmware drivers/gpu/drm/amd/amdgpu/tonga_dpm.c
 clean_blob drivers/gpu/drm/amd/amdgpu/tonga_dpm.c
 clean_kconfig drivers/gpu/drm/Kconfig DRM_AMDGPU
@@ -659,7 +651,9 @@ clean_mk CONFIG_DRM_AST drivers/gpu/drm/ast/Makefile
 
 announce DRM_I915 - "Intel 8xx/9xx/G3x/G4x/HD Graphics"
 reject_firmware drivers/gpu/drm/i915/intel_csr.c
+reject_firmware drivers/gpu/drm/i915/intel_guc_loader.c
 clean_blob drivers/gpu/drm/i915/intel_csr.c
+clean_blob drivers/gpu/drm/i915/intel_guc_loader.c
 clean_kconfig drivers/gpu/drm/i915/Kconfig DRM_I915
 clean_mk CONFIG_DRM_I915 drivers/gpu/drm/i915/Makefile
 
@@ -1125,6 +1119,12 @@ reject_firmware drivers/media/pci/ttpci/budget-av.c
 announce DVB_BUDGET_CI - "Budget cards with onboard CI connector"
 reject_firmware drivers/media/pci/ttpci/budget-ci.c
 
+announce DVB_C8SECTPFE - "STMicroelectronics C8SECTPFE DVB support"
+reject_firmware drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
+clean_blob drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
+clean_kconfig drivers/media/platform/sti/c8sectpfe/Kconfig DVB_C8SECTPFE
+clean_mk CONFIG_DVB_C8SECTPFE drivers/media/platform/sti/c8sectpfe/Makefile
+
 announce DVB_DRXD - "Micronas DRXD driver"
 reject_firmware drivers/media/dvb-frontends/drxd_hard.c
 clean_blob drivers/media/dvb-frontends/drxd_hard.c
@@ -1393,8 +1393,6 @@ drop_fw_file firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-0
 drop_fw_file firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
 drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.1.fw
 drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
-drop_fw_file firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex firmware/bnx2/bnx2-mips-09-6.2.1b.fw
-drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex firmware/bnx2/bnx2-mips-06-6.2.3.fw
 reject_firmware drivers/net/ethernet/broadcom/bnx2.c
 clean_blob drivers/net/ethernet/broadcom/bnx2.c
 clean_kconfig drivers/net/ethernet/broadcom/Kconfig BNX2
@@ -1404,9 +1402,6 @@ announce BNX2X - "Broadcom NetXtremeII 10Gb support"
 drop_fw_file firmware/bnx2x/bnx2x-e1-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1-6.2.9.0.fw
 drop_fw_file firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e1h-6.2.9.0.fw
 drop_fw_file firmware/bnx2x/bnx2x-e2-6.2.9.0.fw.ihex firmware/bnx2x/bnx2x-e2-6.2.9.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1-7.10.51.0.fw.ihex firmware/bnx2x/bnx2x-e1-7.10.51.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e1h-7.10.51.0.fw.ihex firmware/bnx2x/bnx2x-e1h-7.10.51.0.fw
-drop_fw_file firmware/bnx2x/bnx2x-e2-7.10.51.0.fw.ihex firmware/bnx2x/bnx2x-e2-7.10.51.0.fw
 reject_firmware drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
 clean_sed '
 /^#include "bnx2x_init\.h"/,/^$/{
@@ -1474,28 +1469,6 @@ clean_blob drivers/net/ethernet/intel/e100.c
 clean_kconfig drivers/net/ethernet/intel/Kconfig E100
 clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile
 
-announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device."
-clean_file drivers/staging/ft1000/ft1000-pcmcia/ft1000.img
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/boot.h
-clean_sed '
-/^static int ft1000_reset_card/,/^}$/ {
-  /card_bootload/i\
-		return /*(DEBLOBBED)*/ false;
-}
-' drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c \
-  'disabled non-Free firmware-loading machinery'
-reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
-clean_kconfig drivers/staging/ft1000/Kconfig FT1000_PCMCIA
-clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile
-
-announce FT1000_USB - "Driver for ft1000 USB devices."
-clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img
-reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
-clean_kconfig drivers/staging/ft1000/Kconfig FT1000_USB
-clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile
-
 announce LIQUIDIO - "Cavium LiquidIO support"
 reject_firmware drivers/net/ethernet/cavium/liquidio/lio_main.c
 clean_blob drivers/net/ethernet/cavium/liquidio/lio_main.c
@@ -1518,6 +1491,12 @@ clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
 clean_kconfig drivers/net/ethernet/qlogic/Kconfig NETXEN_NIC
 clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile
 
+announce QED - "QLogic QED 25/40/100Gb core driver"
+reject_firmware drivers/net/ethernet/qlogic/qed/qed_main.c
+clean_blob drivers/net/ethernet/qlogic/qed/qed_main.c
+clean_kconfig drivers/net/ethernet/qlogic/Kconfig QED
+clean_mk CONFIG_QED drivers/net/ethernet/qlogic/qed/Makefile
+
 announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support"
 reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c
 reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
@@ -1626,6 +1605,17 @@ clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile
 
 # near-field communication
 
+announce NFC_FDP - "Intel FDP NFC driver"
+reject_firmware drivers/nfc/fdp/fdp.c
+clean_blob drivers/nfc/fdp/fdp.c
+clean_kconfig drivers/nfc/fdp/Kconfig NFC_FDP
+clean_mk CONFIG_NFC_FDP drivers/nfc/fdp/Makefile
+
+announce NFC_MRVL - "Marvell NFC core driver"
+reject_firmware drivers/nfc/nfcmrvl/fw_dnld.c
+clean_kconfig drivers/nfc/nfcmrvl/Kconfig NFC_MRVL
+clean_mk CONFIG_NFC_MRVL drivers/nfc/nfcmrvl/Makefile
+
 announce NFC_NXP_NCI - "NXP-NCI NFC driver"
 reject_firmware drivers/nfc/nxp-nci/firmware.c
 clean_kconfig drivers/nfc/nxp-nci/Kconfig NFC_NXP_NCI
@@ -1642,6 +1632,13 @@ reject_firmware drivers/nfc/pn544/i2c.c
 clean_kconfig drivers/nfc/pn544/Kconfig NFC_PN544_I2C
 clean_mk CONFIG_NFC_PN544_I2C drivers/nfc/pn544/Makefile
 
+announce NFC_S3FWRN5 - "Core driver for Samsung S3FWRN5 NFC chip"
+clean_blob drivers/nfc/s3fwrn5/core.c
+reject_firmware drivers/nfc/s3fwrn5/firmware.c
+reject_firmware drivers/nfc/s3fwrn5/nci.c
+clean_kconfig drivers/nfc/s3fwrn5/Kconfig NFC_S3FWRN5
+clean_mk CONFIG_NFC_S3FWRN5 drivers/nfc/s3fwrn5/Makefile
+
 # pcmcia
 
 # CIS files are not software.
@@ -1914,7 +1911,7 @@ clean_mk CONFIG_ATH10K drivers/net/wireless/ath/ath10k/Makefile
 announce ATH10K NL80211_TESTMODE - "nl80211 testmode command"
 reject_firmware drivers/net/wireless/ath/ath10k/testmode.c
 clean_sed '
-/^[\t ]*\/\* utf\.bin firmware image/ s,/\* utf\.bin,/*(DEBLOBBED)*//*,
+s,^\([\t ]*\/\* We didn.t find FW UTF API 1 \)("utf\.bin"),\1*//*(DEBLOBBED)*//*,
 ' drivers/net/wireless/ath/ath10k/testmode.c 'removed blob name in comment'
 clean_kconfig net/wireless/Kconfig NL80211_TESTMODE
 clean_mk CONFIG_NL80211_TESTMODE drivers/net/wireless/ath/ath10k/Makefile
@@ -2026,16 +2023,22 @@ clean_blob drivers/net/wireless/rt2x00/rt2800usb.c
 clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2800USB
 clean_mk CONFIG_RT2800USB drivers/net/wireless/rt2x00/Makefile
 
+announce RTL8XXXU - "RTL8723AU/RTL8188[CR]U/RTL819[12]CU (mac80211) support"
+reject_firmware drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+clean_blob drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+clean_kconfig drivers/net/wireless/realtek/rtl8xxxu/Kconfig RTL8XXXU
+clean_mk CONFIG_RTL8XXXU drivers/net/wireless/realtek/rtl8xxxu/Makefile
+
 announce RTLWIFI - "Realtek Wireless Network Adapters"
-reject_firmware drivers/net/wireless/rtlwifi/core.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTLWIFI
-clean_mk CONFIG_RTLWIFI drivers/net/wireless/rtlwifi/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/core.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTLWIFI
+clean_mk CONFIG_RTLWIFI drivers/net/wireless/realtek/rtlwifi/Makefile
 
 announce RTL8188EE - "Realtek RTL8188EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8188ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8188EE
-clean_mk CONFIG_RTL8188EE drivers/net/wireless/rtlwifi/rtl8188ee/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8188EE
+clean_mk CONFIG_RTL8188EE drivers/net/wireless/realtek/rtlwifi/rtl8188ee/Makefile
 
 announce R8188EU - "Realtek RTL8188EU Wireless LAN NIC driver"
 reject_firmware drivers/staging/rtl8188eu/hal/fw.c
@@ -2045,28 +2048,28 @@ clean_kconfig drivers/staging/rtl8188eu/Kconfig R8188EU
 clean_mk CONFIG_R8188EU drivers/staging/rtl8188eu/Makefile
 
 announce RTL8192CE - "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CE
-clean_mk CONFIG_RTL8192CE drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8192CE
+clean_mk CONFIG_RTL8192CE drivers/net/wireless/realtek/rtlwifi/rtl8192ce/Makefile
 
 announce RTL8192CU - "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192CU
-clean_mk CONFIG_RTL8192CU drivers/net/wireless/rtlwifi/rtl8192cu/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8192CU
+clean_mk CONFIG_RTL8192CU drivers/net/wireless/realtek/rtlwifi/rtl8192cu/Makefile
 
 announce RTL8192DE - "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192DE
-clean_mk CONFIG_RTL8192DE drivers/net/wireless/rtlwifi/rtl8192de/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8192DE
+clean_mk CONFIG_RTL8192DE drivers/net/wireless/realtek/rtlwifi/rtl8192de/Makefile
 
 announce RTL8192SE - "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192SE
-clean_mk CONFIG_RTL8192SE drivers/net/wireless/rtlwifi/rtl8192se/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8192SE
+clean_mk CONFIG_RTL8192SE drivers/net/wireless/realtek/rtlwifi/rtl8192se/Makefile
 
 announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver"
 reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
@@ -2076,10 +2079,10 @@ clean_kconfig drivers/staging/rtl8192e/rtl8192e/Kconfig RTL8192E
 clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile
 
 announce RTL8192EE - "RealTek RTL8192EE Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8192ee/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8192ee/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192EE
-clean_mk CONFIG_RTL8192EE drivers/net/wireless/rtlwifi/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8192ee/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8192ee/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8192EE
+clean_mk CONFIG_RTL8192EE drivers/net/wireless/realtek/rtlwifi/Makefile
 
 announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver"
 reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c
@@ -2094,10 +2097,10 @@ clean_kconfig drivers/staging/rtl8712/Kconfig R8712U
 clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile
 
 announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8723AE
-clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8723AE
+clean_mk CONFIG_RTL8723AE drivers/net/wireless/realtek/rtlwifi/rtl8723ae/Makefile
 
 announce R8723AU - "RealTek RTL8723AU Wireless LAN NIC driver"
 reject_firmware drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
@@ -2107,16 +2110,16 @@ clean_kconfig drivers/staging/rtl8723au/Kconfig R8723AU
 clean_mk CONFIG_R8723AU drivers/staging/rtl8723au/Makefile
 
 announce RTL8723BE - "Realtek RTL8723BE PCIe Wireless Network Adapter"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8723be/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8723BE
-clean_mk CONFIG_RTL8723BE drivers/net/wireless/rtlwifi/rtl8723be/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8723BE
+clean_mk CONFIG_RTL8723BE drivers/net/wireless/realtek/rtlwifi/rtl8723be/Makefile
 
 announce RTL8821AE - "Realtek RTL8821AE/RTL8812AE Wireless LAN NIC driver"
-reject_firmware drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
-clean_blob drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
-clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8821AE
-clean_mk CONFIG_RTL8821AE drivers/net/wireless/rtlwifi/rtl8821ae/Makefile
+reject_firmware drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
+clean_blob drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
+clean_kconfig drivers/net/wireless/realtek/rtlwifi/Kconfig RTL8821AE
+clean_mk CONFIG_RTL8821AE drivers/net/wireless/realtek/rtlwifi/rtl8821ae/Makefile
 
 announce VT6656 - "VIA Technologies VT6656 support"
 reject_firmware drivers/staging/vt6656/firmware.c
@@ -2164,7 +2167,6 @@ clean_mk CONFIG_WCN36XX drivers/net/wireless/ath/wcn36xx/Makefile
 
 announce WILC1000 - "WILC1000 support (WiFi only)"
 reject_firmware drivers/staging/wilc1000/linux_wlan.c
-clean_blob drivers/staging/wilc1000/linux_wlan.c
 clean_blob drivers/staging/wilc1000/Makefile
 clean_sed 's,\\"/\*(DEBLOBBED)\*/\\","&",g' drivers/staging/wilc1000/Makefile \
     "quote deblobbing markers"
@@ -2220,6 +2222,18 @@ clean_blob drivers/bluetooth/btusb.c
 clean_kconfig drivers/bluetooth/Kconfig BT_HCIBTUSB
 clean_mk CONFIG_BT_HCIBTUSB drivers/bluetooth/Makefile
 
+announce BT_INTEL - "Bluetooth support for Intel devices"
+reject_firmware drivers/bluetooth/btintel.c
+clean_blob drivers/bluetooth/btintel.c
+clean_kconfig drivers/bluetooth/Kconfig BT_INTEL
+clean_mk CONFIG_BT_INTEL drivers/bluetooth/Makefile
+
+announce BT_HCIUART_INTEL - "Intel protocol support"
+reject_firmware drivers/bluetooth/hci_intel.c
+clean_blob drivers/bluetooth/hci_intel.c
+clean_kconfig drivers/bluetooth/Kconfig BT_HCIUART_INTEL
+clean_mk CONFIG_BT_HCIUART_INTEL drivers/bluetooth/Makefile
+
 announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver"
 reject_firmware drivers/bluetooth/btmrvl_sdio.c
 clean_blob drivers/bluetooth/btmrvl_sdio.c
@@ -2227,6 +2241,12 @@ clean_blob Documentation/btmrvl.txt
 clean_kconfig drivers/bluetooth/Kconfig BT_MRVL_SDIO
 clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile
 
+announce BT_QCA - "Bluetooh support for Qualcomm/Atheros devices"
+reject_firmware drivers/bluetooth/btqca.c
+clean_blob drivers/bluetooth/btqca.c
+clean_kconfig drivers/bluetooth/Kconfig BT_QCA
+clean_mk CONFIG_BT_QCA drivers/bluetooth/Makefile
+
 announce BT_RTL - "Bluetooth support for Realtek devices"
 reject_firmware drivers/bluetooth/btrtl.c
 clean_blob drivers/bluetooth/btrtl.c
@@ -2262,6 +2282,12 @@ clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile
 
 # infiniband
 
+announce INFINIBAND_HFI1 - "Intel OPA Gen1 support"
+reject_firmware drivers/staging/rdma/hfi1/firmware.c
+clean_blob drivers/staging/rdma/hfi1/firmware.c
+clean_kconfig drivers/staging/rdma/hfi1/Kconfig INFINIBAND_HFI1
+clean_mk CONFIG_INFINIBAND_HFI1 drivers/staging/rdma/hfi1/Makefile
+
 announce INFINIBAND_QIB - "QLogic PCIe HCA support"
 drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw
 reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c
@@ -2401,6 +2427,12 @@ clean_blob drivers/input/touchscreen/atmel_mxt_ts.c
 clean_kconfig drivers/input/touchscreen/Kconfig TOUCHSCREEN_ATMEL_MXT
 clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile
 
+announce TOUCHSCREEN_ROHM_BU21023 - "ROHM BU21023/24 Dual touch support resistive touchscreens"
+reject_firmware drivers/input/touchscreen/rohm_bu21023.c
+clean_blob drivers/input/touchscreen/rohm_bu21023.c
+clean_kconfig drivers/input/touchscreen/Kconfig TOUCHSCREEN_ROHM_BU21023
+clean_mk CONFIG_TOUCHSCREEN_ROHM_BU21023 drivers/input/touchscreen/Makefile
+
 announce TOUCHSCREEN_WDT87XX_I2C - "Weida HiTech I2C touchscreen"
 reject_firmware drivers/input/touchscreen/wdt87xx_i2c.c
 clean_blob drivers/input/touchscreen/wdt87xx_i2c.c
@@ -2544,7 +2576,7 @@ clean_sed '
 /^config SCSI_QLA_FC$/,/^config /{
   /^	By default, firmware/i\
 	/*(DEBLOBBED)*/
-  /^	By default, firmware/,/linux-firmware tree[/]/d
+  /^	By default, firmware/,/linux-firmware tree/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
@@ -2674,6 +2706,8 @@ clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile
 announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)"
 clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin
 reject_firmware drivers/usb/serial/io_ti.c
+clean_sed 's,firmware "down3\.bin",firmware "(DEBLOBBED)",
+' drivers/usb/serial/io_ti.c 'deblobbed comment'
 clean_blob drivers/usb/serial/io_ti.c
 clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_EDGEPORT_TI
 clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile
@@ -2730,6 +2764,8 @@ maybe_reject_firmware drivers/remoteproc/remoteproc_core.c
 undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \
   "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c
 clean_blob Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
+clean_blob arch/arm/boot/dts/am33xx.dtsi
+clean_blob arch/arm/boot/dts/am4372.dtsi
 clean_kconfig drivers/remoteproc/Kconfig STE_MODEM_RPROC
 clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile
 
@@ -3010,6 +3046,14 @@ clean_blob sound/soc/intel/haswell/sst-haswell-ipc.c
 clean_kconfig sound/soc/intel/Kconfig SND_SOC_INTEL_HASWELL
 clean_mk CONFIG_SND_SOC_INTEL_HASWELL sound/soc/intel/haswell/Makefile
 
+announce SND_SOC_INTEL_SKYLAKE - undocumented
+reject_firmware sound/soc/intel/skylake/skl-sst.c
+reject_firmware sound/soc/intel/skylake/skl-topology.c
+clean_blob sound/soc/intel/skylake/skl-sst.c
+clean_blob sound/soc/intel/skylake/skl-topology.c
+clean_kconfig sound/soc/intel/Kconfig SND_SOC_INTEL_SKYLAKE
+clean_mk CONFIG_SND_SOC_INTEL_SKYLAKE sound/soc/intel/skylake/Makefile
+
 announce SND_SST_IPC - undocumented
 reject_firmware sound/soc/intel/atom/sst/sst.c
 reject_firmware sound/soc/intel/atom/sst/sst_loader.c
@@ -3099,7 +3143,8 @@ clean_mk CONFIG_SND_USB_6FIRE sound/usb/6fire/Makefile
 
 announce KEYSTONE_NAVIGATOR_QMSS - "Keystone Queue Manager Sub System"
 reject_firmware drivers/soc/ti/knav_qmss_queue.c
-clean_blob Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+clean_blob drivers/soc/ti/knav_qmss_queue.c
+clean_blob Documentation/arm/keystone/knav-qmss.txt
 clean_kconfig drivers/soc/ti/Kconfig KEYSTONE_NAVIGATOR_QMSS
 clean_mk CONFIG_KEYSTONE_NAVIGATOR_QMSS drivers/soc/ti/Makefile
 
diff --git a/helpers/DATA/linux/deblob-check b/helpers/DATA/linux/deblob-check
index 0d14b15b8..a37a369b5 100755
--- a/helpers/DATA/linux/deblob-check
+++ b/helpers/DATA/linux/deblob-check
@@ -1,13 +1,13 @@
 #! /bin/sh
 
-# deblob-check version 2014-02-06
+# deblob-check version 2015-12-22
 # Inspired in gNewSense's find-firmware script.
 # Written by Alexandre Oliva <lxoliva@fsfla.org>
 
 # Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer
 # versions.
 
-# Copyright 2008-2014 Alexandre Oliva <lxoliva@fsfla.org>
+# Copyright 2008-2015 Alexandre Oliva <lxoliva@fsfla.org>
 #
 # This program is part of GNU Linux-libre, a GNU project that
 # publishes scripts to clean up Linux so as to make it suitable for
@@ -887,11 +887,15 @@ set_except () {
   # that deblobbing turns them into r/*DEBLOBBED*/e, a syntax error.
   blobna 'equest_firmwar'
   blobna 'equest_ihex_firmwar'
+  # Catch request_firmare misdeblobbed by the above.
+  blobname 'r[/][*][(]DEBLOBBED[)][*][/]e' 
   blobna 'MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\([ 	\n]*MODULE_FIRMWARE[ 	]*[(][^\n;]*[)][ 	]*[;]\)*'
   blobna 'DEFAULT_FIRMWARE'
   blobna '\([.]\|->\)firmware[ 	\n]*=[^=]'
   blobna 'mod_firmware_load' # sound/
-  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\)["]'
+  blobname '[.]\(fw\|bin[0-9]*\|hex\|frm\|co[dx]\|dat\|elf\|xlx\|rfb\|ucode\|img\|sbcf\|ctx\(prog\|vals\)\|z77\|wfw\|inp\|dlmem\|cld\)[\\]\?["]'
+  # Catch misdeblobbed fw extension.
+  blobname '["][^" \t\n]*[/][*][(]DEBLOBBED[)][*][/][^"\\]'
   # Ideally we'd whitelist URLs that don't recommend non-Free
   # Software, but there are just too many URLs in Linux, and most are
   # fine, so we just blacklist when we find undesirable URLs.
@@ -1041,7 +1045,7 @@ set_except () {
 
     # new in 2.6.26
     initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
+    accept "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
     initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
     defsnc 'static[ ]struct[ ]mse2snr_tab[ ]\(vsb\|qam\(64\|256\)\)_mse2snr_tab\[\][ ]=' drivers/media/dvb/frontends/au8522.c
     defsnc '[}][ ]\(VSB\|QAM\(64\|256\)\?\)_mod_tab\[\][ ]=' 'drivers/media/dvb/frontends/au8522\(_dig\)\?\.c'
@@ -1216,7 +1220,7 @@ set_except () {
     blob '\(#ifdef[ ]__\(LITTLE\|BIG\)_ENDIAN[\n]\)\?#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\([\n]#else[\n]#define[ ]FW_EXT[ ]["]\(_ecd\)\?\.bin2\?["]\)*\([\n]#endif\)\?' drivers/atm/fore200e.c
     blobna 'sprintf[(][^;]*fore200[^;]*FW_EXT[^;]*[)][;]' drivers/atm/fore200e.c
     blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]\?' drivers/atm/fore200e.c
-    blobna 'The[ ]supplied[ ]firmware[ ]images.*http:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
+    blobna 'The[ ]supplied[ ]firmware[ ]images.*https\?:[/][/][^\n]*\(fore\|FORE_Systems\).*Rebuild[ ]and[ ]re-install[^.]*\.' Documentation/networking/fore200e.txt
 
     blobname 'intelliport2\.bin' drivers/char/ip2/ip2main.c
 
@@ -1527,7 +1531,7 @@ set_except () {
     accept '[	]res[ ]=[ ]request_firmware[(]&fw,[ ]["]sas_addr["],[ ]&shost->shost_gendev[)][;]' drivers/scsi/libsas/sas_scsi_host.c
 
     blobname 'ql\(2\([12345]00\|322\)\|8[12]00\)_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
-    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]' drivers/scsi/qla2xxx/Kconfig
+    blobna 'By[ ]default,[ ]firmware[ ]for[ ]the[ ]ISP[ ]parts\([^\n]\|[\n]*[	]\)*ql2[12345]00_fw\.bin\([^\n]\|[\n]*[	]\)*ftp:[/][/][^\n]*firmware[/]\(.*linux-firmware[ ]tree[ ]as[ ]well\.\)\?' drivers/scsi/qla2xxx/Kconfig
 
     blobname 'icom_\(asc\|res_dce\|call_setup\)\.bin' drivers/serial/icom.c
 
@@ -2242,8 +2246,11 @@ set_except () {
     blobname 'mwl8k[/]\(helper\|fmimage\)_\(%u\|[0-9]\+\)\.fw' drivers/net/wireless/mwl8k.c
     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\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname 'usbdux\(fast\)\?_firmware\.\(hex\|bin\)' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c'
+    blobname '\([/ ][*][ ]The[ ]DSP[ ]on[ ]the[ ]board[^"]*["]\)\?\(comedi[/]\)\?jr3pci\.idm\(["]\.[\n][ ][*][/]\)\?' drivers/staging/comedi/drivers/jr3_pci.c
+    accept '#define[ ]USBDUX_FIRMWARE[ \t]*["]usbdux_firmware\.bin["]' drivers/staging/comedi/drivers/usbdux.c
+    accept 'MODULE_FIRMWARE[(]USBDUX_FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbdux.c
+    accept '#define[ ]FIRMWARE[ \t]*["]usbduxfast_firmware\.bin["]' drivers/staging/comedi/drivers/usbduxfast.c
+    accept 'MODULE_DESCRIPTION[(]["]USB-DUXfast[^"]*["][)][;][\n]MODULE_LICENSE[(]["]GPL["][)][;][\n]MODULE_FIRMWARE[(]FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbduxfast.c
     blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
     defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
     accept '[	][	]stlc45xx_error[(]["]request_firmware[(][)][ ]failed' drivers/staging/stlc45xx/stlc45xx.c
@@ -2910,7 +2917,7 @@ set_except () {
     # Sources for these are in the corresponding .fuc files.
     defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
     defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
+    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
     blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
     blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
     defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
@@ -2953,7 +2960,8 @@ set_except () {
     blobname '%s[/]bdata\.%s\.bin' drivers/net/wireless/ath/ath6kl/init.c
     blobna 'Used[ ][(]for[ ]now[)][^*]*\([*]\+[^/*][^*]*\)*[*]*["]bdata\.bin["][^*]*\([*]\+[^/*][^*]*\)*[*]\+[/]' drivers/net/wireless/ath/ath6kl/init.c
     blobname 'mrvl[/]pcie8766_uapsta\.bin' 'drivers/net/wireless/mwifiex/pcie\.[ch]'
-    blobname 'usbduxsigma_firmware\.bin' drivers/staging/comedi/drivers/usbduxsigma.c
+    accept '#define[ ]FIRMWARE[ \t]*["]usbduxsigma_firmware\.bin["]' drivers/staging/comedi/drivers/usbduxsigma.c
+    accept 'MODULE_DESCRIPTION[(]["]Stirling[/]ITL[ ]USB-DUX[ ]SIGMA[^"]*["][)][;][\n]MODULE_LICENSE[(]["]GPL["][)][;][\n]MODULE_FIRMWARE[(]FIRMWARE[)][;]' drivers/staging/comedi/drivers/usbduxsigma.c
     blobname 'as102_data[12]_[sd]t\.hex' drivers/staging/media/as102/as102_fw.c
     blob 'u8[ ]Rtl8192PciEFw\(Boot\|Main\|Data\)Array\[\(Boot\|Main\|Data\)ArrayLengthPciE\][ ]=[ ][{][^}]*[}][;]' drivers/staging/rtl8192e/r8192E_hwimg.c
     blobna '\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\(,[ 	\n]*\([&]\|sizeof[(]\)Rtl8192PciEFw\(Boot\|Main\|Data\)Array\(\[0\]\|[)]\)\)*' drivers/staging/rtl8192e/r8192E_firmware.c
@@ -2990,7 +2998,7 @@ set_except () {
     defsnc 'int[ ]process_sigma_firmware\(_regmap\)\?[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*_process_sigma_firmware' sound/soc/codecs/sigmadsp.c
     accept 'EXPORT_SYMBOL[(]process_sigma_firmware_regmap[)]' sound/soc/codecs/sigmadsp.c
     accept 'extern[ ]int[ ]process_sigma_firmware_regmap[(][^)]*[)][;]' sound/soc/codecs/sigmadsp.h
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
+    accept '[	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/fsl/\(pq3\|qoriq\)-mpic\.dtsi'
     # These appear to be identifiers within the device itself,
     # used to get information from it.
     accept '#define[ ]LANCER_\(FW_DUMP\|VPD_[PV]F\)_FILE[	]*["][/]\(dbg[/]dump\.bin\|vpd[/]ntr_[pv]f\.vpd\)["]' drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -3004,7 +3012,7 @@ set_except () {
     blobname 'dvb-fe-xc5000-1\.6\.114\.fw' drivers/media/common/tuners/xc5000.c
     blobname 'dvb-fe-xc5000c-41\.024\.5\.fw' drivers/media/common/tuners/xc5000.c
     accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
+    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
     accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
     accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
     defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
@@ -3470,7 +3478,7 @@ set_except () {
     defsnc 'static[ ]const[ ]unsigned[ ]int[ ]bsc_data32_pins\[\][ ]=' drivers/pinctrl/pinctrl-baytrail.c
     blobname 'mt76\(50\|62\)\.bin' drivers/staging/btmtk_usb/btmtk_usb.c
     accept '[	 ]*data->firmware[ ]=[ ]firmware[;]' drivers/staging/btmtk_usb/btmtk_usb.c
-    accept '[	]\[CODE_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
+    accept '[	]\[CODA_IMX\(27\|53\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
     blobname 'exynos4_\(fimc_is_fw\|s5k6a3_setfile\)\?\.bin' drivers/media/platform/exynos4-is/fimc-is.h
     accept '[ 	]*ret[ ]=[ ]process_sigma_firmware[(]client[,][ ]ADAU1701_FIRMWARE[)][;]' sound/soc/codecs/adau1701.c
     defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[RT5640_VENDOR_ID2[ ][+][ ]1\][ ]=' sound/soc/codecs/rt5640.c
@@ -3481,12 +3489,12 @@ set_except () {
     blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
     blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
     blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
+    accept '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
     defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
     defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
     defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    defsnc '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
+    accept '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
+    accept '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
     defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
     defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
     defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
@@ -3570,13 +3578,807 @@ set_except () {
 
     # New in 3.13.2
     blobname 'rtlwifi[/]rtl8192cufw_\([AB]\|TMSC\)\.bin' drivers/net/wireless/rtlwifi/rtl8192cu.sw
+
+    # New in 3.14
+    blobname 'dvb-usb-technisat-cablestar-hdci-drxk\.fw' drivers/media/usb/dvb-usb-v2/az6007.c
+    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
+    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/net/ethernet/brocade/bna/cna.h
+    blobname 'brcm[/]brcmfmac43362-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+    blobname 'brcm[/]brcmfmac4339-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+    blobname 'mrvl[/]usb8897_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
+    blobname 'cbfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
+    blobname 'ctfw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
+    blobname 'ct2fw-3\.2\.3\.0\.bin' drivers/scsi/bfa/bfad.c
+
+    # New in 3.14.6
+    blobname 'radeon[/]\(%s\|BONAIRE\|HAWAII\|TAHITI\|PITCAIRN\|VERDE\|OLAND\|HAINAN\)_mc2\.bin' 'drivers/gpu/drm/radeon/\(cik\|si\)\.c'
+
+    # New in 3.15
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]nvc0_graph_init[\n]nvc0_graph_init_\(main\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
+    defsnc 'static[ ]const[ ]u32[ ]godavari_golden_registers\[\][ ]=' drivers/gpu/drm/radeon/cik.c
+    blobname 'brcm[/]brcmfmac4354-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+    blobname '%s%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
+    blobname 'ti-connectivity[/]wl18xx-fw-3\.bin' drivers/net/wireless/ti/wl18xx/main.c
+    blobname 'ql2700_fw\.bin' drivers/scsi/qla2xxx/qla_os.c
+
+    # New in 3.16
+    defsnc '[\t]*atmel[,]pll-clk-output-ranges[ ]=[ ]<' 'Documentation/devicetree/bindings/clock/at91-clock\.txt\|arch/arm/boot/dts/at91sam9x5\.dtsi'
+    blobname 'imx[/]sdma[/]sdma-imx25\.bin' arch/arm/boot/dts/imx25.dtsi
+    blobname 'imx[/]sdma[/]sdma-imx35\.bin' arch/arm/boot/dts/imx35.dtsi
+    blobname 'imx[/]sdma[/]sdma-imx50\.bin' arch/arm/boot/dts/imx50.dtsi
+    blobname 'sdma-imx53\.bin' arch/arm/boot/dts/imx53-tx53.dtsi
+    defsnc 'struct[ ]sock_filter[ ]code\[\][ ]=' Documentation/networking/filter.txt
+    initnc '\.L\(Forward\|Reverse\)_Sbox:[\n][\t]\.byte[\t]*' arch/arm64/crypto/aes-neon.S
+    initnc '\.Lsha2_rcon:[\n][\t]\.word[\t]*' arch/arm64/crypto/sha2-ce-core.S
+    defsnc 'static[ ]const[ ]u8[ ]sata_phy_config[12]\[\][ ]*=' arch/mips/netlogic/xlp/ahci-init-xlp2.c
+    accept '[	]*interrupts[ ]=[ ]<108[ ]0\([\n][	 ]*1[012][0-9][ ]0\)*>[;]' arch/powerpc/boot/dts/akebono.dts
+    defsnc '[\t]static[ ]int[ ]sysdiv_code_to_x2\[\][ ]=' arch/powerpc/platforms/512x/clock-commonclk.c
+    accept '[#][#][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' arch/x86/crypto/aesni-intel_avx-x86_64.S
+    defsc 'static[ ]struct[ ]aead_testvec[ ]hmac_sha\(1\|224\|256\|384\|512\)_\(aes\|des\|des3_ede\)_cbc_enc_tv_temp\[\][ ]=' crypto/testmgr.h
+    accept '#define[ \t]*ACPI_TABLE_FILE_SUFFIX[\t ]*["]\.dat["]' drivers/acpi/acpica/acapps.h
+    accept '[ ][*][ ]request_firmware\(_direct\)\?:[ ]-[ ]load[ ]firmware[ ]directly[ ]without[ ]usermode[ ]helper' drivers/base/firmware_class.c
+    accept '[ ][*][ ]This[ ]function[ ]works[ ]pretty[ ]much[ ]like[ ]request_firmware[(][)]' drivers/base/firmware_class.c
+    accept 'int[ ]request_firmware_direct[(]' 'drivers/base/firmware_class\.c\|include/linux/firmware\.h'
+    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,][ ]FW_OPT_UEVENT[)][;]' drivers/base/firmware_class.c
+    accept 'EXPORT_SYMBOL_GPL[(]request_firmware_direct[)][;]' drivers/base/firmware_class.c
+    defsnc 'static[ ]const[ ]int[ ]armada_375_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-375.c
+    defsnc 'static[ ]const[ ]int[ ]armada_38x_cpu_\(l2\|ddr\)_ratios\[32\]\[2\][ ]__initconst[ ]=[ ]' drivers/clk/mvebu/armada-38x.c
+    defsnc 'static[ ]struct[ ]cpufreq_frequency_table[ ]s3c64xx_freq_table\[\][ ]=' drivers/cpufreq/s3c64xx-cpufreq.c
+    defsnc 'static[ ]const[ ]u8[ ]ccp_sha\(1\|224\|256\)_zero\[CCP_SHA_CTXSIZE\][ ]=' drivers/crpto/ccp/ccp-ops.c
+    blobname 'ast_dp501_fw\.bin' drivers/gpu/drm/ast/ast_dp501.c
+    accept '[\t]["]edid[/]\(800x600\)\.bin["]' drivers/gpu/drm/drm_edid_load.c
+    defsnc 'static[ ]void[ ][*]edid_load[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*err[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ][&]pdev' drivers/gpu/drm/drm_edid_load.c
+    defsnc 'static[ ]const[ ]struct[ ]hdmiphy_config[ ]hdmiphy_5420_configs\[\][ ]=' drivers/gpu/drm/exynos/exynos_hdmi.c
+    # These seem too sparse to be code.
+    defsnc 'static[ ]const[ ]u32[ ]gen6_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen6.c
+    defsnc 'static[ ]const[ ]u32[ ]gen7_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen7.c
+    defsnc 'static[ ]const[ ]u32[ ]gen8_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen8.c
+    defsnc 'nv50_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
+    defsnc 'nv84_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
+    defsnc 'nva0_disp_ovly_mthd_base[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nva0.c
+    defsnc 'nvd0_disp_\(mast_mthd_head\|\(sync\|ovly\)_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
+    defsnc 'nve0_disp_\(mast_mthd_head\|ovly_mthd_base\)[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
+    defsnc 'gm107_grctx_init_\(\(icmd\|b097\|fe\|ds\|pd\|be\|setup\|tex\|mpc\|sm\|wwdx\)_0\|gpc_unk_2\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxgm107.c
+    defsnc 'nv108_grctx_init_\(icmd\|fe\|ds\|pd\|rstr2d\|be\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnv108.c
+    defsnc 'nvc0_grctx_init_\(icmd\|9097\|902d\|90c0\|fe\|memfmt\|rstr2d\|prop\|setup\|crstr\|zcullr\|wwdx\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc0.c
+    defsnc 'nvc1_grctx_init_\(icmd\|9097\|setup\|wwdx\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc1.c
+    defsnc 'nvc4_grctx_init_\(tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc4.c
+    defsnc 'nvc8_grctx_init_\(icmd\|setup\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvc8.c
+    defsnc 'nvd7_grctx_init_\(ds\|pd\|setup\|tex\|wwdx\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd7.c
+    defsnc 'nvd9_grctx_init_\(icmd\|90c0\|fe\|ds\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvd9.c
+    defsnc 'nve4_grctx_init_\(icmd\|a097\|fe\|memfmt\|ds\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnve4.c
+    defsnc 'nvf0_grctx_init_\(icmd\|a197\|fe\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/ctxnvf0.c
+    defsnc 'uint32_t[ ]gm107_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcgm107.fuc5.h
+    defsnc 'uint32_t[ ]nv108_grgpc_code\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h
+    defsnc 'uint32_t[ ]gm107_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubgm107.fuc5.h
+    defsnc 'uint32_t[ ]nv108_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
+    defsnc 'gm107_graph_init_\(main\|tpccs\|tex\|sm\|be\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/gm107.c
+    defsnc 'nv108_graph_init_\(main\|l1c\)_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv108.c
+    defsnc 'nvc4_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc4.c
+    defsnc 'nvc8_graph_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvc8.c
+    defsnc 'nvd9_graph_init_\(gpc_unk_1\|sm_0\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvd9.c
+    defsnc 'nve4_graph_init_\(\(main\|l1c\|sm\|be\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nve4.c
+    defsnc 'nvf0_graph_init_\(\(l1c\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c
+    defsnc 'static[ ]u8[ ]const[ ]ld9040_gammas\[25\]\[22\][ ]=' drivers/gpu/drm/panel/panel-ld9040.c
+    defsnc 'static[ ]void[ ]s6e8aa0_panel_cond_set[(][^)]*[)][\n][{]\([\n]\+[^\n}][^\n]*\)*[^\n]*s6e8aa0_dcs_write_seq_static[(]ctx[,][\n\t0x0-9a-f, ]*[)][;]' drivers/gpu/drm/panel/panel-s6e8aa0.c
+    defsnc 'static[ ]const[ ]s6e8aa0_gamma_table[ ]s6e8aa0_gamma_tables_v\(142\|96\|32\)\[GAMMA_LEVEL_NUM\][ ]=' drivers/gpu/drm/panel/panel-s6e8aa0.c
+    blobname 'radeon[/]BONAIRE_vce\.bin' drivers/gpu/drm/radeon/radeon_vce.c
+    defsnc '[\t]static[ ]const[ ]__u8[ ]sixaxis_leds\[10\]\[4\][ ]=' drivers/hid/hid-sony.c
+    defsnc '[\t]union[ ]sixaxis_output_report_01[ ]report[ ]=' drivers/hid/hid-sony.c
+    defsnc 'static[ ]int[ ]twl4030_therm_tbl\[\][ ]=' drivers/iio/adc/twl4030-madc.c
+    defsnc 'static[ ]struct[ ]linear_segments[ ]strength_to_db_table\[\][ ]=' drivers/media/dvb-frontends/dib8000.c
+    blobname 'dvb-fe-drxj-mc-1\.0\.8\.fw' drivers/media/dvb-frontends/drx39xyj/drxj.c
+    defsnc 'static[ ]const[ ]u16[ ]nicam_presc_table_val\[43\][ ]=' drivers/media/dvb-frontends/drx39xyj/drxj.c
+    accept '[\t][\t]*demod->firmware[ ]=[ ]\(fw\|NULL\)[;]' drivers/media/dvb-frontends/drx39xyj/drxj.c
+    blobname 'dvb-demod-m88ds3103\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
+    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88ds3103_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
+    blobname 'dvb-demod-si2168-02\.fw' drivers/media/dvb-frontends/si2168_priv.h
+    blobname 's5k5baf-cfg\.bin' drivers/media/i2c/s5k5baf.c
+    defsnc 'static[ ]const[ ]u16[ ]scaler_[hv]s_coeffs\[1[35]\]\[SC_NUM_PHASES[ ][*][ ]2[ ][*][ ]SC_[HV]_NUM_TAPS\][ ]=' drivers/media/platform/ti-vpe/sc_coeff.h
+    defsnc 'static[ ]const[ ]struct[ ]si4713_start_seq_table[ ]start_seq\[\][ ]=' drivers/media/radio/si4713/radio-usb-si4713.c
+    defsnc 'static[ ]const[ ]struct[ ]e4000_if_gain[ ]e4000_if_gain_lut\[\][ ]=' drivers/media/tuners/e4000_priv.h
+    defsnc 'static[ ]const[ ]struct[ ]dtcs033_usb_requests[ ]dtcs033_start_reqs\[\][ ]=' drivers/media/usb/gspca/dtcs033.c
+    defsnc 'static[ ]struct[ ]idxdata[ ]tbl_\(\(middle\|end\)_hvflip\(_\(low\|big\)\)\?\|init_post_alt_\(low[123]\|big\|3B\)\)\[\][ ]=' drivers/media/usb/gspca/gl860/gl860-mi2020.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_revd_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
+    defsnc 'static[ ]const[ ]u32[ ]tuning_block_128\[\][ ]=' drivers/mmc/host/sdhci-msm.c
+    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_2048[ ]=' drivers/mtd/nand/davinci_nand.c
+    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]ecc_layout_[24]KB_bch[48]bit[ ]=' drivers/mtd/nand/pxa3xx_nand.c
+    defsnc '[\t]static[ ]char[ ]packet\[\][ ]=' drivers/net/ethernet/intel/i40e/i40e_txrx.c
+    defsnc 'u8[ ]netvsc_hash_key\[HASH_KEYLEN\][ ]=' drivers/net/hyperv/rndis_filter.c
+    defsnc 'static[ ]const[ ]u32[ ]ar9300Modes_high_power_tx_gain_table_buffalo\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]ar9340_cus227_tx_gain_table_1p0\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9340_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_common_\(mixed_\)\?rx_gain\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]ar9462_2p0_modes_\(low\|mix\|high\)_ob_db_tx_gain\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p[01]_\(\(mac\|baseband\|radio\)_core\|modes_\(no_\)\?xpa_tx_gain_table\)\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca953x_1p0_\(baseband\|radio\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
+    accept '[	]err[ ]=[ ]request_firmware_nowait[(][^\n]*,[ ]CARL9170FW_NAME,' drivers/net/wireless/carl9170/usb.c
+    defsnc 'static[ ]const[ ]struct[ ]b43_nphy_channeltab_entry_rev3[ ]b43_nphy_channeltab_\(phy\|radio\)_rev\([34568]\|7_9\|11\)\[\][ ]=' drivers/net/wireless/b43/radio_2056.c
+    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_noisevar_r3\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
+    blobname 'iwlwifi-8000-' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname 'iwl_nvm_8000\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
+    defsnc 'static[ ]const[ ]u8[ ]iwl_nvm_channels_family_8000\[\][ ]=' drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
+    defsnc 'static[ ]const[ ]u16[ ]expected_tpt_\(siso\|mimo2\)_[248]0MHz\[4\]\[IWL_RATE_COUNT\][ ]=' drivers/net/wireless/iwlwifi/mvm/rs.c
+    blobname 'rsi_91x\.fw' drivers/net/wireless/rsi/rsi_common.h
+    defsnc 'static[ ]const[ ]u32[ ]RF_GAIN_TABLE\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
+    defsnc 'static[ ]const[ ]u8[ ]\(cck_ofdm_gain_settings\|rtl8225se_tx_power_cck\(_ch14\)\?\|ZEBRA_AGC\|OFDM_CONFIG\)\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180/rtl8225se.c
+    defsnc '[\t]u16[ ]toshiba_smid1\[\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/hw.c
+    blobname 'rtlwifi[/]rtl8723befw\.bin' drivers/net/wireless/rtlwifi/rtl8723be/sw.c
+    defsnc 'u32[ ]RTL8723BE\(PHY_REG\|_RADIOA\|MAC\|AGCTAB\)_\(1T_\?ARRAY\|ARRAY_PG\)\[\][ ]=' drivers/net/wireless/rtlwfi/rtl8723be/table.c
+    defsnc 'static[ ]\(const[ ]unsigned[ ]\)\?int[ ]tps65864[03]_sm2_voltages\[\][ ]=' drivers/regulator/tps6586x-regulator.c
+    defsnc 'static[ ]const[ ]uint32_t[ ]ql27xx_fwdt_default_template\[\][ ]=' drivers/scsi/qla2xxx/qla_tmpl.c
+    blobname 'dgap[/]\(sx\|cxp\|pci\|xr\)\(bios\|fep\)\.bin' drivers/staging/dgap/dgap.c
+    accept '[\t][ ]*kernel[ ]firmware[ ]framework[,][ ]request_firmware[(][)]' drivers/staging/gs_fpgaboot/README
+    defsnc 'static[ ]u8[ ]ecctable\[256\][ ]=' drivers/staging/keucr/smilecc.c
+    defsnc '[\t]u8[ ]data_ptr\[36\][ ]=' drivers/staging/keucr/smscsi.c
+    # This is a default for the user-supplied fpga configuration; it
+    # is overridable with a module parameter.
+    accept 'static[ ]char[ \t]*[*]file[ ]=[ ]["]xlinx_fpga_firmware\.bit["][;]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
+    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
+    blobname '\(ti1273\(_\(pre\)\?le\)\?\|bc[m4]fw\)\.bin' drivers/staging/nokia_h4p/nokia_fw.c
+    defsnc '[\t]u8[ ]channel5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/hw.c
+    blobname 'rtlwifi[/]rtl8192eefw\.bin' drivers/staging/rtl8192ee/rtl8192ee/sw.c
+    defsnc 'u32[ ]RTL8192EE_\(PHY_REG\|RADIO[AB]\|MAC\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8192ee/rtl8192ee/table.c
+    defsnc '[\t]u8[ ]Channel_5G\[45\][ ]=' drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+    defsnc 'static[ ]const[ ]unsigned[ ]short[ ]Sbox1\[2\]\[256\]=' drivers/staging/rtl8723au/core/rtw_security.c
+    defsnc 'u32[ ]Rtl8723UPHY_REG_Array_PG\[Rtl8723UPHY_REG_Array_PGLength\][ ]=' drivers/staging/rtl8723au/hal/Hal8723UHWImg_CE.c
+    defsnc 'static[ ]u32[ ]Array_\(AGC_TAB\|PHY_REG\)_\(1T\|PG\)_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
+    defsnc 'static[ ]u32[ ]Array_MAC_REG_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_MAC.c
+    defsnc 'static[ ]u32[ ]Array_RadioA_1T_8723A\[\][ ]=' drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
+    blobname 'rtlwifi[/]rtl8723aufw_\(A\|B\(_NoBT\)\?\)\.bin' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+    defsnc 'u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ab]_[np]_txpwrtrack\[\]\[DELTA_SWINGIDX_SIZE\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/dm.c
+    defsnc 'static[ ]u8[ ]reserved_page_packet_8821\[TOTAL_RESERVED_PKT_LEN_8821\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
+    defsnc 'static[ ]u8[ ]reserved_page_packet_8812\[TOTAL_RESERVED_PKT_LEN_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/fw.c
+    defsnc '[\t]u8[ ]channel_5g\[CHANNEL_MAX_NUMBER_5G\][ ]=' 'drivers/staging/rtl8821ae/rtl8821ae/\(hw\|phy\)\.c'
+    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G_8812\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/phy.c
+    blobname 'rtlwifi[/]rtl8821aefw\.bin' drivers/staging/rtl8821ae/rtl8821ae/sw.c
+    defsnc 'u32[ ]RTL88\(12\|21\)AE_\(\(PHY\|MAC\)_REG\|RADIO[AB]\|AGC_TAB\)_ARRAY\(_PG\)\?\[\][ ]=' drivers/staging/rtl8821ae/rtl8821ae/table.c
+    accept '#define[ ]CONFIG_PATH[\t]*["][/]etc[/]vntconfiguration[.]dat["]' drivers/staging/vt6656/device.h
+    defsnc 'static[ ]const[ ]u8[ ]TKIP_Sbox_\(Lower\|Upper\)\[256\][ ]=' drivers/staging/vt6656/tkip.c
+    blobname 'moxa[/]moxa-\(%04x\|[0-9a-f][0-9a-f][0-9a-f][0-9a-f]\)\.fw' drivers/usb/serial/mxuport.c
+    accept '#define[ \t]request_firmware_direct[ \t]request_firmware' include/linux/firmware.h
+    accept '[\t]report_missing_free_firmware[^\n]*[\n][\t]retval[ ]=[ ]request_firmware_direct[(]' include/linux/firmware.h
+    defsnc 'const[ ]u8[ ]crc7_be_syndrome_table\[256\][ ]=' lib/crc7.c
+    defsnc 'static[ ]struct[ ]bpf_test[ ]tests\[\][ ]=' lib/test_bpf.c
+    defsnc '[\t]static[ ]struct[ ]sock_filter[ ]ptp_filter\[\][ ]__initdata[ ]=' net/core/ptp_classifier.c
+    blobname 'adau1761\.bin' sound/soc/codecs/adau1761.c
+    accept '[\t][\t]ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][\n][\t ]*ADAU1761_FIRMWARE[)][;]' sound/soc/codecs/adau1761.c
+    blobname 'adau1[37]81\.bin' sound/soc/codecs/adau1781.c
+    accept '[\t][\t]firmware[ ]=[ ]ADAU1[37]81_FIRMWARE[;]\([\n][\n]*[\t][^\n]*\)*ret[ ]=[ ]adau17x1_load_firmware[(]adau[,][ ]codec->dev[,][ ]firmware[)][;]' sound/soc/codecs/adau1781.c
+    blobna 'adau17x1_load_firmware' sound/soc/codecs/adau17x1.c
+    accept 'int[ ]adau17x1_load_firmware[(]' 'sound/soc/codecs/adau17x1\.[ch]'
+    accept 'EXPORT_SYMBOL_GPL[(]adau17x1_load_firmware[)][;]' sound/soc/codecs/adau17x1.c
+    accept '[ 	]*ret[ ]=[ ]process_sigma_firmware_regmap[(]dev[,][ ]adau->regmap[,][ ]firmware[)][;]' sound/soc/codecs/adau17x1.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]adau1977_reg_defaults\[\][ ]=' sound/soc/codecs/adau1977.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak4641_reg_defaults\[\][ ]=' sound/soc/codecs/ak4641.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak464[28]_reg\[\][ ]=' sound/soc/codecs/ak4642.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5640_reg\[\][ ]=' sound/soc/codecs/rt5640.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5645_reg\[\][ ]=' sound/soc/codecs/rt5645.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5651_reg\[\][ ]=' sound/soc/codecs/rt5651.c
+    defsnc 'int[ ]_process_sigma_firmware[(]' sound/soc/codecs/sigmadsp.c
+    accept 'EXPORT_SYMBOL_GPL[(]_process_sigma_firmware[)]' sound/soc/codecs/sigmadsp.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]sta350_regs\[\][ ]=' sound/soc/codecs/sta350.c
+    defsnc 'static[ ]const[ ]struct[ ]aic31xx_rate_divs[ ]aic31xx_divs\[\][ ]=' sound/soc/codecs/tlv320aic31xx.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8974_reg_defaults\[\][ ]=' sound/soc/codecs/wm8974.c
+    blobname 'intel[/]IntcSST[12]\.bin' sound/soc/intel/sst-acpi.c
+    blobname 'intel[/]fw_sst_0f28\.bin-i2s_master' sound/soc/intel/sst-acpi.c
+    defsnc 'static[ ]unsigned[ ]char[ ]bcd2000_init_sequence\[\][ ]=' sound/usb/bcd2000/bcd2000.c
+    blobna '[ ][*][ ]xxd[ ]-r[ ]-p[ ]mXTXXX[^\n]*maxtouch\.fw[\n][ \t]*[*][/]' drivers/input/touchscreen/atmel_mxt_ts.c
+    blobname 's5p-mfc-v8\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
+
+    # New in 3.17
+    blobname 'radeon[/]\(%s\|kaveri\|KAVERI\)_mec2\.bin' drivers/gpu/drm/radeon/cik.c
+    blobname 'dvb-demod-si2168-\(\(a[23]\|b4\)0-01\|-02\)\.fw' drivers/media/dvb-frontends/si2168_priv.h
+    accept '[	]\[CODA_IMX6\(Q\|DL\)\][ ]=[ ][{][\n][	][	]\.firmware[ ]*=' drivers/media/platform/coda.c
+    blobname 'v4l-coda960-imx6\(q\|dl\)\.bin' drivers/media/platform/coda.c
+    blobname 's5p-mfc-v6-v2\.fw' drivers/media/platform/s5p-mfc/s5p_mfc.c
+    blobname 'dvb-fe-xc4000-1\.4\(\.1\)\?\.fw' drivers/media/tuners/xc4000.c
+    blobname 'ti-connectivity[/]TIInit_\(\(%d\|[0-9]\+\)[.]\)\+bts' drivers/misc/ti-st/st_kim.c
+    blobname 'fw-5\.bin' drivers/net/wireless/ath/ath6kl/core.h
+    blobname 'brcm[/]brcmfmac43569\.bin' drivers/net/wireless/brcm80211/brcmfmac/usb.c
+    blobname '3826\.eeprom' drivers/net/wireless/p54/p54spi.c
+    defsnc 'static[ ]const[ ]u64[ ]sha512_k\[\][ ]=' arch/arm/crypto/sha512_neon_glue.c
+    accept 'K_table:\([\n][ 	]*\.long[ 	]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/crc32c-pcl-intel-asm_64.S
+    accept '\.L_s[12345678]:\([\n][ 	]*\.quad[ 	]*0x[0-9a-f]*[,][ ]0x[0-9a-f]*\)*' arch/x86/crypto/des3_ede-asm_64.S
+    defsnc '[\t]const[ ]unsigned[ ]char[ ][*]K[ ]=[ ][(]unsigned[ ]char[ ][*][)]' crypto/drbg.c
+    accept '[\t]ret[ ]=[ ]_request_firmware[(]firmware_p[,][ ]name[,][ ]device[,]' drivers/base/firmware_class.c
+    defsnc 'static[ ]const[ ]uint64_t[ ]inst\[\][ ]=' drivers/crypto/qat/qat_common/qat_hal.c
+    defsnc 'gk110b_\(grctx\|graph\)_init_\(sm\|l1c\)_0\[\][ ]=' drivers/gpu/dm/nouveau/core/engine/graph/ctxgk110b.c
+    defsnc '[\t]const[ ]u16[ ]map\[\][ ]=' drivers/hwmon/asc7621.c
+    defsnc '[}][ ]samp_freq_table\[\][ ]=' drivers/iio/accel/kxcjk-1013.c
+    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/media/pci/solo6x10/solo6x10-jpeg.h
+    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_baseband_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_baseband_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
+    defsnc 'static[ ]u16[ ]r2057_rev\(4\|5a\?\|[789]\|14\)_init\[\]\[2\][ ]=' drivers/net/wireless/b43/radio_2057.c
+    defsnc 'static[ ]const[ ]u32[ ]b43_ntab_\(\(tmap\|noisevar\)_r7\|tx_gain_\(epa\|ipa\(_2057\)\?\)_rev\([34569]\|14\)_\(hi_pwr_\)\?\(2g\|5g\)\)\[\][ ]=' drivers/net/wireless/b43/tables_nphy.c
+    accept '[	]ret[ ]=[ ]request_firmware[(][&]pm8001_ha->fw_image,' drivers/scsi/pm8001/pm8001_ctl.c
+    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253InitTab_RFMD\[CB_VT3253_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_RFMD\[CB_VT3253B0_INIT_FOR_RFMD\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AGC4_RFMD2959\[CB_VT3253B0_AGC_FOR_RFMD2959\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AIROHA2230\[CB_VT3253B0_INIT_FOR_AIROHA2230\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_UW2451\[CB_VT3253B0_INIT_FOR_UW2451\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]unsigned[ ]char[ ]byVT3253B0_AGC\[CB_VT3253B0_AGC\]\[2\][ ]=' drivers/staging/vt6655/baseband.c
+    defsnc 'static[ ]u8[ ]al2230_init_table\[CB_AL2230_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
+    defsnc 'static[ ]u8[ ]\(al2230\|vt3226\)_channel_table[012]\[CB_MAX_CHANNEL_24G\]\[3\][ ]=' drivers/staging/vt6656/rf.c
+    defsnc 'static[ ]u8[ ]al7230_init_table\(_amode\)\?\[CB_AL7230_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
+    defsnc 'static[ ]u8[ ]\(al7230\|vt3342\)_channel_table[012]\[CB_MAX_CHANNEL\]\[3\][ ]=' drivers/staging/vt6656/rf.c
+    defsnc 'static[ ]u8[ ]vt3226\(d0\)\?_init_table\[CB_VT3226_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
+    defsnc 'static[ ]u8[ ]vt3342a0_init_table\[CB_VT3342_INIT_SEQ\]\[3\][ ]=' drivers/staging/vt6656/rf.c
+    defsnc 'static[ ]const[ ]u32[ ]al2230_power_table\[AL2230_PWR_IDX_LEN\][ ]=' drivers/staging/vt6656/rf.c
+    accept 'static[ ]inline[ ]int[ ]request_firmware_direct[(]const[ ]struct[ ]firmware[ ][*][*]fw[,]' include/linux/firmware.h
+    defsnc 'static[ ]u8[ ]const[ ]__aligned[(]8[)][ ]test_buf\[\][ ]__initconst[ ]=' lib/crc32.c
+    defsnc 'static[ ]struct[ ]crc_test[ ][{][^}]*[}][ ]const[ ]test\[\][ ]__initconst[ ]=' lib/crc32.c
+    accept '[\t]rc[ ]=[ ]request_firmware[(][&]test_firmware[,]' lib/test_firmware.c
+    defsnc 'static[ ]struct[ ]reg_default[ ]rt286_index_def\[\][ ]=' sound/soc/codecs/rt286.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt286_reg\[\][ ]=' sound/soc/codecs/rt286.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt5670_reg\[\][ ]=' sound/soc/codecs/rt5670.c
+    accept 'FW=["][$]FWPATH[/]test-firmware\.bin["]' 'tools/testing/selftests/firmware/fw_\(filesystem\|userhelper\)\.sh'
+    blobname 'qat_895xcc\.bin' drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
+    blobname 'dvb-demod-si2165\.fw' drivers/media/dvb-frontends/si2165_priv.h
+    blobname 'dvb-tuner-si2158-a20-01\.fw' drivers/media/tuners/si2157_priv.h
+    blobname 'brcm[/]brcmfmac43\(602\|5[46]\|570\)-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmac/pcie.c
+    blobname 'r8a779x_usb3_v1\.dlmem' drivers/usb/host/xhci-rcar.c
+    blobname 'iwlwifi-3165-' drivers/net/wireless/iwlwifi/iwl-7000.c
+
+    # New in 3.18.
+    accept '[\t	]*interrupts[ ]=[ ]<\([ \n\t]*0[ ][4567][0-9][ ]0xf04\)*>[;]' Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+    accept '[\t ]*<\([ \t\n]*[ 1-9][0-9 ][0-9]\)*>[;]' arch/arm/boot/dts/tegra124-nyan-big.dts
+    blobname 'keystone[/]qmss_pdsp_acc48_k2_le_1_0_0_8\.fw' Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+    defsnc 'static[ ]struct[ ]comp_testvec[ ]lz4\(hc\)\?_\(de\)\?comp_tv_template\[\][ ]=' crypto/testmgr.h
+    blobname 'mrvl[/]sd8887_uapsta\.bin' 'drivers/\(bluetooth/btmrvl_sdio\.c\|net/wireless/mwifiex/sdio.h\)'
+    blobname 'radeon[/]\(R600\|RS780\|RV770\)_uvd\.bin' drivers/gpu/drm/radeon/radeon_uvd.c
+    defsnc '[}][ ]wake_odr_data_rate_table\[\][ ]=' drivers/iio/accel/kxcjk-1013.c
+    defsnc 'static[ ]const[ ]struct[ ]linear_segments[ ]cnr_\(to_db\|\(64\|16\)qam\|qpsk\)_table\[\][ ]=' drivers/media/dvb-frontends/mb86a20s.c
+    defsnc 'static[ ]u8[ ]lgtdqcs001f_inittab\[\][ ]=' drivers/media/pci/mantis/mantis_vp1033.c
+    blobname 'go7007[/]go7007tv\.bin' drivers/media/pci/saa7134/saa7134-go7007.c
+    defsnc 'static[ ]const[ ]u8[ ]vivid_hdmi_edid\[256\][ ]=' drivers/media/platform/vivid/vivid-core.c
+    defsnc 'static[ ]const[ ]s8[ ]sin\[257\][ ]=' drivers/media/platform/vivid/vivid-tpg.c
+    defsnc 'static[ ]const[ ]struct[ ]shf[ ]shf_tab\[\][ ]=' drivers/media/tuners/mxl301rf.c
+    defsnc 'static[ ]const[ ]u8[ ]reg_initval\[QM1D1C0042_NUM_REGS\][ ]=' drivers/media/tuners/qm1d1c0042.c
+    accept '[\t]*priv->firmware[ ]=[ ]fw[;][\n][\t][}][ ]else[\n][\t]*fw[ ]=[ ]priv->firmware[;]' drivers/media/tuners/xc5000.c
+    blobname 'dvb-usb-it9303-01\.fw' drivers/media/usb/dvb-usb-v2/af9035.h
+    defsnc 'const[ ]u8[ ]tuning_blk_pattern_4bit\[MMC_TUNING_BLK_PATTERN_4BIT_SIZE\][ ]=' drivers/mmc/core/mmc.c
+    defsnc 'const[ ]u8[ ]tuning_blk_pattern_8bit\[MMC_TUNING_BLK_PATTERN_8BIT_SIZE\][ ]=' drivers/mmc/core/mmc.c
+    defsnc 'static[ ]const[ ]u16[ ]fm10k_crc_16b_table\[256\][ ]=' drivers/net/ethernet/intel/fm10k/fm10k_mbx.c
+    accept '[\t ]*[*][ ][ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0[ ]9[ ]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1[ ]0' drivers/net/ethernet/intel/fm10k/fm10k_mbx.h
+    blobname '83xx_post_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h
+    blobname 'rtl_nic[/]rtl\(8168h\|8107e\)-[12]\.fw' drivers/net/ethernet/realtek/r8169.c
+    blobname 'firmware-3\.bin' drivers/net/wireless/ath/ath10k/hw.h
+    blobname 'utf\.bin' drivers/net/wireless/ath/ath10k/testmode.c
+    accept '[ ][*][ ]wil_request_firmware[ ]-[ ]Request[ ]firmware' drivers/net/wireless/ath/wil6210/fw_inc.c
+    accept 'int[ ]wil_request_firmware[(]' 'drivers/net/wireless/ath/wil6210/\(fw_inc\.c\|wil6210\.h\)'
+    accept '[\t]*rc[ ]=[ ]wil_request_firmware[(]wil[,][ ]WIL_FW_NAME[)][;]' drivers/net/wireless/ath/wil6210/fw_inc.c
+    blobname 'wil6210\.fw' drivers/net/wireless/ath/wil6210/wil6210.h
+    blobname 'FW[ ]Version:[ ]%d_%d_%d' drivers/net/wireless/broadcom/bnx2x/bnx2x_main.c
+    blobname '\([,][\n \t]*BCM_5710_FW_\(MAJOR\|MINOR\|REVISION\)_VERSION\)\+' drivers/net/wireless/broadcom/bnx2x/bnx2x_main.c
+    blobname 'iwlwifi-8000' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname '["]-["][ ]__stringify[(]api[)][ ]["]\.ucode["]' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname '%s%s-%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
+    blobname 'rtlwifi[/]rtl8723efw\.bin' drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
+    defsnc 'u32[ ]RTL8723E_RADIOA_1TARRAY\[RTL8723ERADIOA_1TARRAYLENGTH\][ ]=' drivers/net/wireless/rtlwifi/rtl8723ae/table.c
+    defsnc '[\t]u8[ ]channel_all\[TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/net/wireless/rtlwifi/rtl8723be/phy.c
+    blobname 'rtlwifi[/]rtl88\(21\|12\)aefw\(_wowlan\)\?\.bin' drivers/net/wireless/rtlwifi/rtl8821ae/sw.c
+    defsnc 'static[ ]u8[ ]rtl88\(12\|21\)ae_delta_swing_table_idx_5g[ba]_[np]\[\]\[DEL_SW_IDX_SZ\][ ]=' drivers/net/wireless/rtlwifi/rtl8821ae/dm.c
+    defsnc '[\t]u8[ ]channel_all\[ODM_TARGET_CHNL_NUM_2G_5G\][ ]=' drivers/staging/rtl8188eu/hal/phy.c
+    # Present before 3.18, but changes to reject_firmware shell
+    # function to make it match request_firmware only require us to
+    # recognize these as false positives.
+    accept 'static[ ]int[ ]lp55xx_request_firmware[(]' drivers/leds/leds-lp55xx-common.c
+    accept '[\t]*ret[ ]=[ ]lp55xx_request_firmware[(]' drivers/leds/leds-lp55xx-common.c
+    accept 'static[ ]int[ ]flexcop_fe_request_firmware[(]' drivers/media/common/b2c2/flexcop-fe-tuner.c
+    accept '[\t]\.request_firmware[ ]=[ ]flexcop_fe_request_firmware[,]' drivers/media/common/b2c2/flexcop-fe-tuner.c
+    accept '[\t]if[ ][(][(]ret[ ]=[ ]st->config->request_firmware[(]' drivers/media/dvb-frontends/bcm3510.c
+    accept '[\t][\t]ret[ ]=[ ]config->request_firmware[(]' drivers/media/dvb-frontends/or51211.c
+    accept '[\t]if[ ][(]state->config->request_firmware[(]' drivers/media/dvb-frontends/sp8870.c
+    accept '[\t][\t]ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/sp887x.c
+    accept '[\t]int[ ][(][*]request_firmware[)][(]' drivers/media/dvb-frontends/sp887x.h
+    accept '[\t]ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/tda1004x.c
+    accept '[\t]if[ ][(]state->config->request_firmware[ ]' drivers/media/dvb-frontends/tda1004x.c
+    accept '[\t][\t][\t]*ret[ ]=[ ]state->config->request_firmware[(]' drivers/media/dvb-frontends/tda1004x.c
+    accept 'static[ ]int[ ]alps_tdhd1_204_request_firmware[(]' drivers/media/dvb-frontends/tdhd1.h
+    accept '[\t]\.request_firmware[ ]=[ ]alps_tdhd1_204_request_firmware' drivers/media/dvb-frontends/tdhd1.h
+    accept 'static[ ]int[ ]microtune_mt7202dtf_request_firmware[(]' drivers/media/pci/bt8xx/dvb-bt8xx.c
+    accept '[\t]\.request_firmware[ ]=[ ]microtune_mt7202dtf_request_firmware[,]' drivers/media/pci/bt8xx/dvb-bt8xx.c
+    accept 'static[ ]int[ ]or51211_request_firmware[(]' drivers/media/pci/bt8xx/dvb-bt8xx.c
+    accept '[\t]\.request_firmware[ ]=[ ]or51211_request_firmware[,]' drivers/media/pci/bt8xx/dvb-bt8xx.c
+    accept 'static[ ]int[ ]pluto2_request_firmware[(]' drivers/media/pci/pluto2/pluto2.c
+    accept '[\t]\.request_firmware[ ]=[ ]pluto2_request_firmware[,]' drivers/media/pci/pluto2/pluto2.c
+    accept 'static[ ]int[ ]philips_tda1004x_request_firmware[(]' drivers/media/pci/saa7134/saa7134-dvb.c
+    accept '[\t]\.request_firmware[ ]=[ ]philips_tda1004x_request_firmware' drivers/media/pci/saa7134/saa7134-dvb.c
+    accept 'static[ ]int[ ]alps_tdlb7_request_firmware[(]' drivers/media/pci/ttpci/av7110.c
+    accept '[\t]\.request_firmware[ ]=[ ]alps_tdlb7_request_firmware[,]' drivers/media/pci/ttpci/av7110.c
+    accept 'static[ ]int[ ]philips_tu1216_request_firmware[(]' drivers/media/pci/ttpci/budget-av.c
+    accept '[\t]\.request_firmware[ ]=[ ]philips_tu1216_request_firmware[,]' drivers/media/pci/ttpci/budget-av.c
+    accept 'static[ ]int[ ]philips_tdm1316l_request_firmware[(]' drivers/media/pci/ttpci/budget-ci.c
+    accept '[\t]\.request_firmware[ ]=[ ]philips_tdm1316l_request_firmware[,]' drivers/media/pci/ttpci/budget-ci.c
+    accept 'static[ ]int[ ]alps_tdhd1_204_request_firmware[(]' drivers/media/pci/ttpci/budget.c
+    accept 'static[ ]int[ ]fimc_is_request_firmware[(]' drivers/media/platform/exynos4-is/fimc-is.c
+    accept '[\t]ret[ ]=[ ]fimc_is_request_firmware[(]' drivers/media/platform/exynos4-is/fimc-is.c
+    accept 'static[ ]int[ ]philips_tdm1316l_request_firmware[(]' drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
+    accept '[\t]\.request_firmware[ ]=[ ]philips_tdm1316l_request_firmware[,]' drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
+    accept '[\t][\t]pr_err[(]["][ ]request_firmware[ ]failed' drivers/misc/ti-st/st_kim.c
+    accept 'typhoon_request_firmware[(]' drivers/net/ethernet/3com/typhoon.c
+    accept '[\t]err[ ]=[ ]typhoon_request_firmware[(]' drivers/net/ethernet/3com/typhoon.c
+    accept '[\t][\t]goto[ ]request_firmware_exit[;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+    accept '[\t]BNX2X_ALLOC_AND_SET[(]init_data[,][ ]request_firmware_exit[,]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+    accept 'request_firmware_exit:' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+    accept 'static[ ]int[ ]bnx2_request_firmware[(]' drivers/net/ethernet/broadcom/bnx2.c
+    accept '[\t]rc[ ]=[ ]bnx2_request_firmware[(]' drivers/net/ethernet/broadcom/bnx2.c
+    accept 'static[ ]int[ ]tg3_request_firmware[(]' drivers/net/ethernet/broadcom/tg3.c
+    accept '[\t][\t]err[ ]=[ ]tg3_request_firmware[(]' drivers/net/ethernet/broadcom/tg3.c
+    accept 'static[ ]const[ ]struct[ ]firmware[ ][*]e100_request_firmware[(]' drivers/net/ethernet/intel/e100.c
+    accept '[\t]fw[ ]=[ ]e100_request_firmware[(]' drivers/net/ethernet/intel/e100.c
+    accept '[/][*][ ]Call[ ]this[]function[ ]from[ ]process[ ]context[,][ ]it[ ]will[ ]sleep[ ]in[ ]request_firmware[.]' drivers/net/wireless/ipw2x00/ipw2200.c
+    accept '[ ][*][ ]@request_firmware_complete:' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[\t][\t]lbs_deb_fw[(]["]request_firmware_nowait[ ]error' drivers/net/wireless/libertas/firmware.c
+    accept 'void[ ]netxen_request_firmware[(]' 'drivers/net/ethernet/qlogic/netxen/netxen_nic\(\.h\|_init\.c\)'
+    accept '[\t]netxen_request_firmware[(]' drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+    accept 'void[ ]qlcnic_request_firmware[(]' 'drivers/net/ethernet/qlogic/qlcnic/qlcnic\(\.h\|_init\.c\)'
+    accept '[\t][\t]qlcnic_request_firmware[(]' drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+    accept 'static[ ]void[ ]rtl_request_firmware[(]' drivers/net/ethernet/realtek/r8169.c
+    accept '[\t]rtl_request_firmware[(]' drivers/net/ethernet/realtek/r8169.c
+    accept 'static[ ]void[ ]b43_request_firmware[(]' drivers/net/wireless/b43/main.c
+    accept '[\t]INIT_WORK[(][&]wl->firmware_load[,][ ]b43_request_firmware[)]' drivers/net/wireless/b43/main.c
+    accept 'static[ ]void[ ]b43legacy_request_firmware[(]' drivers/net/wireless/b43legacy/main.c
+    accept '[\t]INIT_WORK[(][&]wl->firmware_load[,][ ]b43legacy_request_firmware[)]' drivers/net/wireless/b43legacy/main.c
+    accept 'il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
+    accept '[\t]if[ ][(]il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
+    accept '[\t]err[ ]=[ ]il4965_request_firmware[(]' drivers/net/wireless/iwlegacy/4965-mac.c
+    accept 'static[ ]int[ ]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[\t]if[ ][(]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[\t]ret[ ]=[ ]iwl_request_firmware[(]' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[ ][*][ ]@request_firmware_complete:' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[\t]struct[ ]completion[ ]request_firmware_complete[;]' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[\t]\(complete\|\(init\|wait_for\)_completion\)[(][&]drv->request_firmware_complete[)]' drivers/net/wireless/iwlwifi/iwl-drv.c
+    accept '[\t][ ][*][ ]Obtain[ ]NVM[ ]image[ ]via[ ]request_firmware[.]' drivers/net/wireless/iwlwifi/mvm/nvm.c
+    accept 'static[ ]int[ ]mwl8k_request_firmware[(]' drivers/net/wireless/mwl8k.c
+    accept '[\t]rc[ ]=[ ]mwl8k_request_firmware[(]' drivers/net/wireless/mwl8k.c
+    accept 'static[ ]int[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
+    accept '[\t]ret[ ]=[ ]p54spi_request_firmware[(]' drivers/net/wireless/p54/p54spi.c
+    accept 'static[ ]int[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firwmare.c
+    accept '[\t][\t]retval[ ]=[ ]rt2x00lib_request_firmware[(]' drivers/net/wireless/rt2x00/rt2x00firmware.c
+    accept '[\t][\t]wl1271_error[(]["]request_firmware_nowait[ ]failed' drivers/net/wireless/ti/wlcore/main.c
+    accept '[\t][\t]nfc_err[(][&]drv->pdev->dev[,][ ]["]request_firmware[ ]failed' drivers/nfc/nfcwilink.c
+    accept '[\t][\t][\t]["]request_firmware[ ]returned' drivers/nfc/nfcwilink.c
+    accept '[\t][\t]dev_err[(][&]rproc->dev[,][ ]["]request_firmware_nowait[ ]err' drivers/remoteproc/remoteproc_core.c
+    accept '[\t][\t]dev_err[(]dev[,][ ]["]request_firmware[ ]failed' drivers/remoteproc/remoteproc_core.c
+    accept 'static[ ]int[ ]asd_request_firmware[(]' drivers/scsi/aic94xx/aic94xx_seq.c
+    accept '[\t]err[ ]=[ ]asd_request_firmware[(]' drivers/scsi/aic94xx/aic94xx_seq.c
+    accept '[\t]uint32_t[ ]cfg_request_firmware_upgrade[;]' drivers/scsi/lpfc/lpfc.h
+    accept '[ ][*][ ]lpfc_request_firmware_store[ ]-[ ]' drivers/scsi/lpfc/lpfc_attr.c
+    accept 'lpfc_request_firmware_upgrade_store[(]' drivers/scsi/lpfc/lpfc_attr.c
+    accept 'lpfc_param_show[(]request_firmware_upgrade[)]' drivers/scsi/lpfc/lpfc_attr.c
+    accept '[\t]rc[ ]=[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_attr.c
+    accept '[ ][*][ ]lpfc_request_firmware_upgrade_init[ ]-[ ]' drivers/scsi/lpfc/lpfc_attr.c
+    accept 'lpfc_request_firmware_upgrade_init[(]' drivers/scsi/lpfc/lpfc_attr.c
+    accept '[\t][\t]phba->cfg_request_firmware_upgrade[ ]=' drivers/scsi/lpfc/lpfc_attr.c
+    accept '[\t][\t][ ]*lpfc_request_firmware_upgrade_\(show\|store\)[,)]' drivers/scsi/lpfc/lpfc_attr.c
+    accept '[\t]lpfc_request_firmware_upgrade_init[(]' drivers/scsi/lpfc/lpfc_attr.c
+    accept 'int[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_crtn.h
+    accept '[ ][*][ ]@fw:[ ]pointer[ ]to[ ]firmware[ ]image[ ]returned[ ]from[ ]request_firmware[.]' drivers/scsi/lpfc/lpfc_init.c
+    accept '[ ][*][ ]lpfc_sli4_request_firmware_update[ ]-[ ]' drivers/scsi/lpfc/lpfc_init.c
+    accept 'lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
+    accept '[\t]if[ ][(]phba->cfg_request_firmware_upgrade[)]' drivers/scsi/lpfc/lpfc_init.c
+    accept '[\t][\t]ret[ ]=[ ]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
+    accept '[ ][*][ ]qla1280_request_firmware' drivers/scsi/qla1280.c
+    accept 'qla1280_request_firmware[(]' drivers/scsi/qla1280.c
+    accept '[\t]fw[ ]=[ ]qla1280_request_firmware[(]' drivers/scsi/qla1280.c
+    accept 'extern[ ]struct[ ]fw_blob[ ][*]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_gbl.h
+    accept '[\t]blob[ ]=[ ]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_init.c
+    accept '[\t]blob[ ]=[ ]ha->hablob[ ]=[ ]qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_nx.c
+    accept 'qla2x00_request_firmware[(]' drivers/scsi/qla2xxx/qla_os.c
+    accept '[\t]-[ ]change[ ]firmware[ ]loading[ ]for[ ]usb[ ]driver[ ]to[ ]proper[ ]kernel[ ]method[ ][(]request_firmware[)]' drivers/staging/ft1000/TODO
+    accept '[\t][\t]pr_err[(]["]rtl8723au:[ ]request_firmware[ ]load' drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+    accept '[\t ]*[*][ ]We[ ]call[ ]request_firmware_nowait[ ]instead[ ]of[ \t\n*]*request_firmware[ ]so[ ]that' drivers/tty/serial/ucc_uart.c
+    accept '[\t][\t]dev_err[(][&]dev->dev[,][ ]["]%d[,][ ]request_firmware[ ]failed' sound/pci/asihpi/hpidspcd.c
+    accept 'static[ ]int[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c
+    accept '[\t]err[ ]=[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c
+    # New in 3.19
+    blobname 'a420_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/adreno_device.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a4xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a4xx_gpu.c
+    defsnc 'static[ ]const[ ]u32[ ]gen9_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen9.c
+    defsnc 'nv50_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
+    defsnc 'nv84_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c
+    defsnc 'nvd0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\(300\)\?[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c
+    defsnc 'nve0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*300[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c
+    # This reads from user-supplied filenames.
+    accept 'shadow_fw_init[(]struct[ ]nouveau_bios[ ][*]bios[,][ ]const[ ]char[ ][*]name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]int[ ]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ]dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/shadow.c
+    defsnc 'static[ ]const[ ]u32[ ]coef_lut_\(a_legacy\|b\|[cdef]_[yc]_legacy\)\[NB_COEF\][ ]=' drivers/gpu/drm/sti/sti_hqvdp_lut.h
+    blobname 'hqvdp-stih407\.bin' drivers/gpu/drm/sti/sti_hqvdp.c
+    defsnc '[\t]static[ ]const[ ]union[ ]sixaxis_output_report_01[ ]default_report[ ]=' drivers/hid/hid-sony.c
+    blobname 'elan_i2c\.bin' drivers/input/mouse/elan_i2c_core.c
+    blobname 'elants_i2c\.bin' drivers/input/touchscreen/elants_i2c.c
+    defsnc '[}][ ]QAM256_mod_tab_zv_mode\[\][ ]=' drivers/media/dvb-frontends/au8522_dig.c
+    blobname 'dvb-demod-m88rs6000\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h
+    defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88rs6000_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h
+    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]\(luma\|chroma\)_ac_value\[162[ ][+][ ]2\][ ]=' drivers/media/platform/coda/coda-jpeg.c
+    defsnc 'static[ ]unsigned[ ]char[ ]\(luma\|chroma\)_q\[64\][ ]=' drivers/media/platform/coda/coda-jpeg.c
+    defsnc 'static[ ]const[ ]struct[ ]vin_coeff[ ]vin_coeff_set\[\][ ]=' drivers/media/platform/soc_camera/rcar_vin.c
+    defsnc 'const[ ]unsigned[ ]short[ ]tpg_\(rec709_to_linear\|linear_to_rec709\)\[255[ ][*][ ]16[ ][+][ ]1\][ ]=' drivers/media/platform/vivid/vivid-tpg-colors.c
+    defsnc '[\t]static[ ]const[ ]struct[ ]m88rs6000t_reg_val[ ]reg_vals\[\][ ]=' drivers/media/tuners/m88rs6000t.c
+    blobna '[/][*][ ]cal-<bus>-<id>\.bin[ ][*][/]' drivers/net/wireless/ath/ath10k/core.c
+    blobname 'cal-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c
+    defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_\(common_wo_xlna_rx\|modes_\(no_\)\?xpa_tx\)_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h
+    blobname 'mrvl[/]usb8766_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
+    defsc 'static[ ]const[ ]unsigned[ ]char[ ]opcode_ind_arr\[256\][ ]=' drivers/scsi/scsi_debug.c
+    defsnc 'static[ ]const[ ]struct[ ]quark_spi_rate[ ]quark_spi_rate_table\[\][ ]=' drivers/spi/spi-pxa2xx.c
+    blobname 'me4000_firmware\.bin' drivers/staging/comedi/drivers/me4000.c
+    defsnc '[\t]u8[ ]ConnectionMsg\[\][ ]=' drivers/staging/ft1000/ft1000-usb/ft1000_debug.c
+    accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]fw_file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c
+    blobname 'dvb-demod-mn88472-02\.fw' drivers/staging/media/mn88472/mn88472_priv.h
+    blobname 'dvb-demod-mn88473-01\.fw' drivers/staging/media/mn88473/mn88473_priv.h
+    accept '[\t][\t]goto[ ]err_request_firmware[;]' drivers/staging/media/mn88473/mn88473.c
+    accept 'err_request_firmware[:]' drivers/staging/media/mn88473/mn88473.c
+    blob 'The[ ]card[ ]requires[ ]firmware.*[\n]rm[ ]wd7296a\.sys' Documentation/scsi/wd719x.txt
+    blobname 'wd719x-\(wcs\|risc\)\.bin' drivers/scsi/wd719x.c
+    defsnc 'static[ ]const[ ]struct[ ]tsadc_table[ ]v2_code_table\[\][ ]=' drivers/thermal/rockchip_thermal.c
+    defsnc 'static[ ]const[ ]u8[ ]debug_pk\[64\][ ]=' net/bluetooth/smp.c
+    defsnc 'static[ ]const[ ]u8[ ]debug_sk\[32\][ ]=' net/bluetooth/smp.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ad1980_reg_defaults\[\][ ]=' sound/soc/codecs/ad1980.c
+    blobname 'rt5677_dsp_fw[12]\.bin' sound/soc/codecs/rt5677.c
+    accept 'int[ ]sst_request_firmware_async[(]' sound/soc/intel/sst/sst.h
+    blobname 'intel[/]fw_sst_0f28\.bin-48kHz_i2s_master' sound/soc/intel/sst-acpi.c
+    blobname '\(intel[/]\)\?fw_sst_\(0f28\|22a8\)\.bin' sound/soc/intel/sst/sst_acpi.c
+    blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][\n][ \t]*sst_drv_ctx->dev_id[,][ ]["]\.bin' sound/soc/intel/sst/sst_pci.c
+    accept '[\t]\?\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|[\t]call\(_path\)\?\)_file[ \t]*=[ ]open_output_file[(]["]\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|call\(_path\)\?\)_table\.bin["][)]' tools/perf/scripts/python/export-to-postgresql.py
+    # accept '\([*]\.\(bin\|elf\|fw\)\|\(setup\|wakeup\)\.\(bin\|elf\)\|vmlinux\.bin\.all\|tftpboot\.img\)[\n]' Documentation/dontdiff
+    # New in 4.0.
+    blobname 'intel[/]ibt-11-%u\.sfi' drivers/bluetooth/btusb.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf100_gr_init_\(main\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+    accept '[	][	]*gf100_gr_init_fw[(]priv[,][ ]0x4\(09\|1a\)000[,][ ][&]priv->fuc4\(09\|1a\)c[,][ \n	]*[&]priv->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+    accept '[	][	 ]*gf100_gr_dtor_fw[(]&priv->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveua/nvkm/engine/gr/gf100.c
+    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)gf100_gr_ctor_fw[(]priv[,][ ]["]fuc4\(09\|1a\)[cd]["][,][ ][&]priv->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveua/nvkm/engine/gr/gf100.c
+    blobname 'firmware-4\.bin' drivers/net/wireless/ath/ath10k/hw.h
+    blobname 'brcm[/]brcmfmac43340-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+    blobname 'iwlwifi-7260-' drivers/net/wireless/iwlwifi/pcie/7000.c
+    blobname 'iwlwifi-8000' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname 'iwl_nvm_8000B\.bin' drivers/net/wireless/iwlwifi/iwl-8000.c
+    blobname 'mrvl[/]sd8801_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
+    blobname 'mrvl[/]usb8801_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
+    blobname 'ti-connectivity[/]wl18xx-fw-4\.bin' drivers/net/wireless/ti/wl18xx/main.c
+    blobname 'intel[/]fw_sst_22a8\.bin' sound/soc/intel/sst_acpi.c
+    defsnc 'static[ ]const[ ]struct[ ]clk_div_table[ ]z_div_table\[\][ ]=' drivers/clk/shmobile/clk-sh73a0.c
+    defsnc 'uint32_t[ ]gf100_pce_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h
+    defsnc 'uint32_t[ ]gt215_pce_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gt215.fuc3.h
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]g84_disp_\(base\|core\|ovly\)_mthd_\(dac\|head\|base\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/g84.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]gf110_disp_\(base\|core\|ovly\)_mthd_\(dac\|head\|base\|sor\|pior\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/gf110.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]gk104_disp_\(core\|ovly\)_mthd_\(head\|base\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/gk104.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]nv50_disp_mthd_list[\n]gt200_disp_ovly_mthd_base[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/gt200.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf100_grctx_init_\(icmd\|9097\|902d\|90c0\|fe\|memfmt\|rstr2d\|prop\|setup\|crstr\|zcullr\|wwdx\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf104_grctx_init_\(tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf104.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf108_grctx_init_\(icmd\|9097\|setup\|wwdx\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf108.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf110_grctx_init_\(icmd\|setup\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf110.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf117_grctx_init_\(ds\|pd\|setup\|tex\|wwdx\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf119_grctx_init_\(\(icmd\|90c0\|fe\|ds\|prop\|setup\|crstr\|tex\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf119.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk104_grctx_init_\(icmd\|a097\|fe\|memfmt\|ds\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk110_grctx_init_\(icmd\|a197\|fe\|pd\|be\|setup\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk208_grctx_init_\(icmd\|fe\|ds\|pd\|rstr2d\|be\|prop\|setup\|crstr\|tex\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk208.c
+    defsnc 'uint32_t[ ]gf100_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf100.fuc3.h
+    defsnc 'uint32_t[ ]gf117_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgf117.fuc3.h
+    defsnc 'uint32_t[ ]gk104_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk104.fuc3.h
+    defsnc 'uint32_t[ ]gk110_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk110.fuc3.h
+    defsnc 'uint32_t[ ]gk208_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/gpcgk208.fuc5.h
+    defsnc 'uint32_t[ ]gf100_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf100.fuc3.h
+    defsnc 'uint32_t[ ]gf117_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgf117.fuc3.h
+    defsnc 'uint32_t[ ]gk104_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk104.fuc3.h
+    defsnc 'uint32_t[ ]gk110_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk110.fuc3.h
+    defsnc 'uint32_t[ ]gk208_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/fuc/hubgk208.fuc5.h
+    accept '[	]struct[ ]gf100_gr_fuc[ ]fuc4\(09\|1a\)[cd]' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf104_gr_init_\(ds\|tex\|pe\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf104.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf110_gr_init_sm_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf110.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gf119_gr_init_\(\(pd\|ds\|prop\|gpm\|tex\|pe\|wwdx\|sm\)_0\|\(tpccs\|gpc_unk\|fe\)_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf119.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk104_gr_init_\(\(main\|ds\|sked\|cwd\|tpccs\|pe\|l1c\|sm\|be\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk104.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk110_gr_init_\(\(fe\|ds\|sked\|cwd\|tex\|l1c\|sm\)_0\|gpc_unk_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk110b_gr_init_\(l1c\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110b.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gk208_gr_init_\(\(main\|ds\|gpc_unk\|tex\|l1c\)_0\|setup_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c
+    defsnc '\(static[ ]\)\?const[ ]struct[ ]gf100_gr_init[\n ]gm107_gr_init_\(\(main\|ds\|scc\|sked\|prop\|zcull\|tpccs\|tex\|pe\|l1c\|sm\|pes\|wwdx\|cbm\|be\)_0\|\(setup\|gpc_unk\|l1c\|sm\)_1\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/gm107.c
+    defsnc 'static[ ]u32[ \n]nv04_gr_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv04.c
+    defsnc 'static[ ]int[ \n]nv10_gr_ctx_regs\[\][ ]=' drivers/gpu/drm/nouveau/core/engine/graph/nv10.c
+    defsnc 'uint32_t[ ]g98_psec_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/sec/fuc/g98.fuc0s.h
+    accept 'shadow_fw_init[(]struct[ ]nvkm_bios[ ][*]bios[,][ ]const[ ]char[ ][*]name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]int[ ]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ]dev[)][;]' drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c
+    defsnc 'uint32_t[ ]gf100_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf100.fuc3.h
+    defsnc 'uint32_t[ ]gf110_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gf110.fuc4.h
+    defsnc 'uint32_t[ ]gk208_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gk208.fuc5.h
+    defsnc 'uint32_t[ ]gt215_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/subdev/pmu/fuc/gt215.fuc3.h
+    defsnc 'static[ ]const[ ]struct[ ]dw_hdmi_mpll_config[ ]rockchip_mpll_cfg\[\][ ]=' drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
+    defsnc '[}][ ]kmx61_\(samp_freq\|wake_up_odr\)_table\[\][ ]=' drivers/iio/imu/kmx61.c
+    defsnc 'static[ ]const[ ]u8[ ]jpeg_header\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-jpeg.h
+    defsnc 'static[ ]const[ ]u8[ ]jpeg_dqt\[4\]\[DQT_LEN\][ ]=' drivers/media/pci/solo6x10/solo6x10-jpeg.h
+    defsnc 'static[ ]u8[ ]vop_6010_\(ntsc\|pal\)_\(d1\|cif\)\[\][ ]=' drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
+    defsnc '[\t]static[ ]const[ ]struct[ ]rate_s[ ]rate_1\[\][ ]=' drivers/media/usb/gspca/ov534.c
+    defsnc 'static[ ]struct[ ]serdes_cfg[ ]cfg_phyb_10p3125g_\(156p25mhz_cmu1\|16bit_lane\|comlane\)\[\][ ]=' drivers/net/ethernet/ti/netcp_xgbepcsr.c
+    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_\(baseband\|radio\)_core\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_\(baseband\|radio\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_modes_\(no_\)\?xpa_\(low_ob_db_\|green_\)\?tx_gain_table\[\]\[3\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_common_rx_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
+    defsnc 'static[ ]const[ ]u32[ ]qca956x_1p0_xlna_only\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar956x_initvals.h
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]smc0_nor_pins\[\][ ]=' drivers/pinctrl/pinctrl-zynq.c
+    defsnc 'static[ ]const[ ]unsigned[ ]char[ ]gamma_correction_table\[\][ ]=' drivers/staging/fbtft/fb_agm1264k-fl.c
+    defsnc '[\t]write_reg[(]par[,][ ]0x2D[,]' drivers/staging/fbtft/fb_hx8353d.c
+    defsnc '[#]define[ ]DEFAULT_GAMMA' 'drivers/staging/fbtft/fb_ssd13[35]1\.c'
+    defsnc 'static[ ]struct[ ]fbtft_device_display[ ]displays\[\][ ]=' drivers/staging/fbtft/fbtft_device.c
+    defsnc 'struct[ ]ModeInit[ ]vgamode\[\][ ]=' drivers/staging/sm7xxfb/sm7xx.h
+    defsnc 'static[ ]const[ ]u8[ ]\(\(priv\|pub\)_[ab]\|dhkey\)_[123]\[\(32\|64\)\][ ]__initconst[ ]=' net/bluetooth/selftest.c
+    defsnc '[\t]const[ ]u8[ ][uvw]\[32\][ ]=' net/bluetooth/smp.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8995_reg_defaults\[\][ ]=' sound/soc/codecs/wm8995.c
+
+    # CYAPA_FW_NAME, defined to this string, is not used anywhere, and
+    # firmware requests are issued with user-supplied names.  So,
+    # deblob the unused name, but keep the request active.
+    blobname 'cyapa\.bin' drivers/input/mouse/cyapa.c
+    accept 'static[ ]int[ ]cyapa_firmware[(]struct[ ]cyapa[ ][*]cyapa[,][ ]const[ ]char[ ][*]fw_name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]error[ ]=[ ]request_firmware[(][&]fw[,][ ]fw_name[,][ ]dev[)][;]' drivers/input/mouse/cyapa.c
+
+    # There are blob names here, but no apparent load mechanism.
+    blobname 'ssp_B2\.fw' drivers/iio/common/ssp_sensors/ssp_dev.c
+    blobname 'ssp_crashed\.fw' drivers/iio/common/ssp_sensors/ssp_dev.c
+    blobname 'thermostat_B2\.fw' drivers/iio/common/ssp_sensors/ssp_dev.c
+
+    # New in 4.1.
+    defsnc 'uint8_t[ ]default_tx\[\][ ]=' Documentation/spi/spidev_test.c
+    accept '[#][ ]cat[ ][/]sys[/]kernel[/]debug[/]zsmalloc[/]zram0[/]classes[\n][\n][ ]class[^\n]*\([\n][ ][0-9. \t]*\)*' Documentation/vm/zsmalloc.txt
+    accept '[\t]*nvidia[,]emc-configuration[ ]=[ ][<][\n][\t]*\(0x[0-9a-f]*[\n][\t]*\)*[>][;]' 'arch/arm/boot/dts/tegra124-\(jetson-tk1\|nyan-\(big\|blaze\)\)-emc.dtsi'
+    initnc '\.Lsha256_rcon:[\n][\t]\.word[\t]*' arch/arm64/crypto/sha2-ce-core.S
+    accept 'K256:[\n]\.word[\t]0x428a2f98[,][0-9a-f0x,]*\([\n]\.word[\t][0-9a-f0x,]*\)*' 'arch/arm/crypto/sha256-\(armv4\.pl\|core\.S_shipped\)'
+    initnc 'PPC_AES_4K_DECTAB2:[\n][/][*][ ]decryption[ ]table[,][ ]same[ ]as[ ]crypto_il_tab[ ]in[ ]crypto[/]aes-generic\.c[ ][*][/]' arch/powerpc/crypto/aes-tab-4k.S
+    initnc 'PPC_SPE_SHA256_K:' arch/powerpc/crypto/sha256-spe-asm.S
+    defsnc 'static[ ]const[ ]u8[ ]initial_parm_block\[32\][ ]__initconst[ ]=' arch/s390/crypto/prng.c
+    defsnc '[\t]static[ ]const[ ]u8[ ]\(seed\|[VC]0\|random\)\[\][ ]__initconst[ ]=' arch/s390/crypto/prng.c
+    defsnc 'gm204_grctx_init_\(icmd\|b197\|fe\|ds\|pd\|be\|prop\|setup\|tex\|mpc\|sm\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c
+    defsnc 'gm204_gr_init_\(main\|tpccs\|pe\|sm\|be\)_0\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c
+    defsnc 'static[ ][ ]*\(const[ ]\)\?struct[ ]sensor_register[ ]ov2659_\(init_regs\|[us]\?xga\|[sq]\?vga\)\[\][ ]=' drivers/media/i2c/ov2659.c
+    defsnc 'static[ ]const[ ]struct[ ]pll_ctrl_reg[ ]ctrl1\[\][ ]=' drivers/media/i2c/ov2659.c
+    defsnc 'static[ ]const[ ]u16[ ]aic_lin_table\[ATH_AIC_MAX_AIC_LIN_TABLE\][ ]=' drivers/net/wireless/ath/ath9k/ar9003_aic.c
+    defsc 'static[ ]struct[ ]ModeInit[ ]vgamode\[\][ ]=' drivers/staging/sm7xxfb/sm7xx.h
+    defsnc 'static[ ]const[ ]s32[ ]sin_table\[\][ ]=' include/linux/fixp-arith.h
+    defsnc 'static[ ]int64_t[ ]__RH_LH_tbl\[128[*]2[+]2\][ ]=' net/ceph/crush/crush_ln_table.h
+    defsnc 'static[ ]int64_t[ ]__LL_tbl\[256\][ ]=' net/ceph/crush/crush_ln_table.h
+    blobname 'rtl_bt[/]rtl8723[ab]_fw\.bin' drivers/bluetooth/btusb.c
+    blobname 'rtl_bt[/]rtl8821a_fw\.bin' drivers/bluetooth/btusb.c
+    blobname 'rtl_bt[/]rtl8761a_fw\.bin' drivers/bluetooth/btusb.c
+    blobname 'brcm[/]\(%s\(-%4\.4x-%4\.4x\)\?[^ "\n]*\)\.hcd' drivers/bluetooth/btbcm.c
+    blobname 'cxgb4[/]aq1202_fw\.cld' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+    accept 'static[ ]int[ ]set_flash[(]struct[ ]net_device[ ][*]netdev[,][ ]struct[ ]ethtool_flash[ ][*]ef[)][\n][{]\([\n]\+[^\n}][^\n]*\)*ret[ ]=[ ]request_firmware[(][&]fw[,][ ]ef->data[,][ ]adap->pdev_dev[)][;]\([\n]\+[^\n}][^\n]*\)*[\n]\+[}][\n]' drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
+    blobname 'brcm[/]\(%s\|.*\)-\(%04x\|[0-9a-f]*\)-\(%04x\|[0-9a-f]*\)\.hcd' drivers/bluetooth/btusb.c
+    blobname 'qca[/]\(rampatch\|nv\(ra\)\?m\)_usb_\(%08x\|[0-9a-f]*\)\.bin' drivers/bluetooth/btusb.c
+    blobname 'elants_i2c_\(%04x\|[0-9a-f]*\)\.bin' drivers/input/touchscreen/elants_i2c.c
+    blobname 'ct2\?fw-3\.2\.5\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
+    blobname 'brcm[/]brcmfmac43\(4\(30\|55\)\|54\)-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/sdio.c
+    blobname 'iwlwifi-7265D-' drivers/net/wireless/iwlwifi/iwl-7000.c
+    blobname '%s%c-%s\.ucode' drivers/net/wireless/iwlwifi/iwl-drv.c
+    blobname 'intel[/]IntcPP01\.bin' sound/soc/intel/haswell/sst-haswell-ipc.c
+    accept '[\t]*rc[ ]=[ ]wil_request_firmware[(]wil[,][ ]WIL_FW2\?_NAME[)][;]' drivers/net/wireless/ath/wil6210/main.c
+    blobname 'nvmData-8000[BC]' drivers/net/wireless/iwlwifi/iwl-8000.c
+
+    # New in 4.2.
+    accept '[\t	]*interrupts[ ]=[ ]<\([ \n\t]*0x0[ ]0x1[0-9a-f][ ]0x4\)*>[;]' Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
+    accept '[\t]*bool[ ]["]vmlinu[xz]\.bin["]' arch/mips/Kconfig
+    defsnc 'static[ ]struct[ ]hash_testvec[ ]\(ghash\|poly1305\|crc32\)_tv_template\[\][ ]=' crypto/testmgr.h
+    defsnc 'static[ ]struct[ ]aead_testvec[ ]rfc7539\(esp\)\?_\(enc\|dec\)_tv_template\[\][ ]=' crypto/testmgr.h
+    defsnc 'static[ ]struct[ ]cipher_testvec[ ]chacha20_enc_tv_template\[\][ ]=' crypto/testmgr.h
+    defsnc 'static[ ]const[ ]struct[ ]iproc_pll_vco_param[ ]mipipll_vco_params\[\][ ]=' drivers/clk/bcm/clk-cygnus.c
+    defsnc 'static[ ]const[ ]struct[ ]clk_div_table[ ]ahb_div_table\[\][ ]=' drivers/clk/clk-stm32f4.c
+    defsnc '[\t]static[ ]u8[ ]padded_hash\[64\][ ]=' drivers/crypto/talitos.c
+    defsnc 'static[ ]const[ ]int[ ]stk3310_it_table\[\]\[2\][ ]=' drivers/iio/light/stk3310.c
+    defsnc 'static[ ]const[ ]u8[ ]drv2665_sine_wave_form\[\][ ]=' drivers/input/misc/drv2665.c
+    defsnc 'static[ ]const[ ]char[ ]ipr_bit\[\][ ]=' drivers/irqchip/irq-renesas-h8300h.c
+    defsnc 'static[ ]const[ ]struct[ ]multiplier[ ]multipliers\[\][ ]=' drivers/media/pci/cobalt/cobalt-cpld.c
+    defsnc 'static[ ]u8[ ]edid\[256\][ ]=' drivers/media/pci/cobalt/cobalt-driver.c
+    defsnc 'static[ ]const[ ]struct[ ]bdisp_filter_[hv]_spec[ ]bdisp_[hv]_spec\[\][ ]=' drivers/media/platform/sti/bdisp/bdisp-filter.h
+    defsnc '[\t]struct[ ]init_command[ ]genius_vcam_live_start_commands\[\][ ]=' drivers/media/usb/gspca/sn9c2028.c
+    defsnc '[\t]static[ ]const[ ]unsigned[ ]int[ ]t6_reg_ranges\[\][ ]=' drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+    defsnc 'static[ ]const[ ]struct[ ]mt76_reg_pair[ ]bbp_\(common\|chip\)_vals\[\][ ]=' drivers/net/wireless/mediatek/mt7601u/initvals.h
+    defsnc '[\t]static[ ]const[ ]u8[ ]freq_plan\[14\]\[FREQ_PLAN_REGS\][ ]=' drivers/net/wireless/mediatek/mt7601u/phy.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]\(lcd_vip_gpio\|visbus_dout\)_pins\[\][ ]=' drivers/pinctrl/sirf/pinctrl-atlas7.c
+    defsnc 'static[ ]const[ ]u32[ ]bq24257_vbat_map\[\][ ]=' drivers/power/bq24257_charger.c
+    defsnc 'static[ ]const[ ]int[ ]rt9455_\(voreg\|boost_voltage\)_values\[\][ ]=' drivers/power/rt9455_charger.c
+    defsnc '[\t]write_reg[(]par[,][ ]HX8357D_SETGAMMA[,][\n][\t][\t]' drivers/staging/fbtft/fb_hx8357d.c
+    defsnc '[}][ ]isl29018_scales\[4\]\[4\][ ]=' drivers/staging/iio/light/isl29018.c
+    defsnc 'const[ ]u32[ ]dm_tx_bb_gain\[TxBBGainTableLength\][ ]=' drivers/staging/rtl8192e/rtl8192e/rtl_dm.c
+    defsnc 'const[ ]u8[ ]dm_cck_tx_bb_gain\(_ch14\)\?\[CCKTxBBGainTableLength\]\[8\][ ]=' drivers/staging/rtl8192e/rtl8192e/rtl_dm.c
+    defsnc 'static[ ]const[ ]struct[ ]vesa_mode[ ]vesa_mode_table\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
+    defsnc 'static[ ]const[ ]struct[ ]modeinit[ ]vgamode\[\][ ]=' drivers/staging/sm7xxfb/sm7xxfb.c
+    defsnc 'static[ ]const[ ]uint8_t[ ]crc7_syndrome_table\[256\][ ]=' drivers/staging/wilc1000/wilc_spi.c
+    defsnc 'static[ ]__s64[ ]__RH_LH_tbl\[128[*]2[+]2\][ ]=' net/ceph/crush/crush_ln_table.h
+    defsnc 'static[ ]__s64[ ]__LL_tbl\[256\][ ]=' net/ceph/crush/crush_ln_table.h
+    defsnc 'static[ ]const[ ]u8[ ]vol_quot_table\[\][ ]=' sound/soc/codecs/sgtl5000.c
+    blobname 'radeon[/]TAHITI_vce\.bin' drivers/gpu/drm/radeon/radeon_vce.c
+    blobname 'elan_i2c_["][ ]ETP_PRODUCT_ID_FORMAT_STRING[ ]["]\.bin' drivers/input/mouse/elan_i2c.h
+    # Is this too broad?
+    blobname '%s%s%s_%s%s' drivers/net/ethernet/cavium/liquidio/libquidio_main.c
+    accept '#define[ ]LIO_FW_NAME_SUFFIX[\t ]*["]\.bin["]' drivers/net/ethernet/cavium/liquidio/liquidio_image.h
+    blobname 'cxgb4[/]\(t6fw\|bcm8483\)\.bin' drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+    blobname 'board-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c
+    accept '[\t][/][*][ ]Don.t[ ]trust[ ]error[ ]code[ ]from[ ]otp\.bin[ ][*][/]' drivers/net/wireless/ath/ath10k/core.h
+    blobname 'firmware-5\.bin' drivers/net/wireless/ath/ath10k/hw.h
+    blobname 'brcm[/]brcmfmac4358-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmacpcie.c
+    blobname 'brcm[/]brcmfmac43241b5-sdio\.bin' drivers/net/wireless/brcm80211/brcmfmac/sdio.c
+    # http://arago-project.org/git/projects/?p=am33x-cm3.git contains
+    # source code and the license even looks like a Free Software
+    # license, but there are provisions about trade secrets that might
+    # be contained in blobs therein.  Furthermore, the license hasn't
+    # been reviewed by the FSF.  So let's keep on assuming it's
+    # non-Free, until we get a definitive answer.
+    blobname 'am335x-pm-firmware\.elf' Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
+    blobname 'rtl_bt[/]rtl\(8723[ab]\|8821a\|8761a\)_fw\.bin' drivers/bluetooth/btrtl.c
+    blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\)_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+    blobname 'amdgpu[/]\(tonga\|carrizo\)_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+    blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\)_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+    blobname 'amdgpu[/]\(tonga\|carrizo\)_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+    blobname 'radeon[/]\(bonaire\|hawaii\|%s\)_smc\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c
+    blobname 'radeon[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\|%s\)_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+    accept '[\t][/][*][ ]request_firmware[ ][*][/]' drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
+    blobname 'amdgpu[/]\(bonaire\|kabini\|kaveri\|hawaii\|mullins\|%s\)_\(pfp\|me\|ce\|rlc\|mec2\?\|mc\)\.bin' drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+    blobname 'amdgpu[/]\(tonga\|topaz\|%s\)_mc\.bin' drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+    blobname 'amdgpu[/]topaz_smc\.bin' drivers/gpu/drm/amd/amdgpu/iceland_dpm.c
+    blobname 'amdgpu[/]\(topaz\|%s\)_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+    blobname 'amdgpu[/]\(tonga\|carrizo\|%s\)_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+    blobname 'amdgpu[/]tonga_smc\.bin' drivers/gpu/drm/amd/amdgpu/tonga_dpm.c
+    blobname 'i915[/]skl_dmc_ver1\.bin' drivers/gpu/drm/i915/intel_csr.c
+    blobname 'wdt87xx_\(fw\|cfg\)\.bin' drivers/input/touchscreen/wdt87xx_i2c.c
+    blobname 'dvb-fe-cx24120-1\.20\.58\.2\.fw' drivers/media/dvb-frontends/cx24120.c
+    # FIXME: LIO_... drivers/net/ethernet/cavium/liquidio/lio_main.c
+    blobname 'mt7601u\.bin' drivers/net/wireless/media/tek/mt7601u/usb.h
+    accept '[\t ]*["]request_firmware_nowait[ ]error' drivers/net/wireless/mwifiex/main.c
+    blobname 'atmel[/]wilc1000\(_ap\|_p2p\)\?_fw\.bin' drivers/staging/wilc1000/Makefile
+    blobname 'wifi_firmware\(_ap\|_p2p_concurrency\)\?\.bin' drivers/staging/wilc1000/linux_wlan.c
+    blob 'This[ ]directory[ ]is[ ]_NOT_[ ]for[ ]adding[ ]arbitrary[ ]new[ ]firmware[ ]images.*git[ ]pull[ ]request[ ]to:[\n][^\n]*linux-firmware\@kernel\.org[\n][^\n]*mailing[ ]lists\.' firmware/README.AddingFirmware
+
+    # New in 4.2.1 and 4.1.8.
+    defsnc '[}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
+
+    # New in 4.3.
+    accept '[\t]*operating-points[ ]=[ ]<[\n\t 0-9]*>[;]' arch/arm/boot/dts/exynos5250.dtsi
+    defsnc 'static[ ]struct[ ]aead_testvec[ ]aes_ccm_rfc4309_\(enc\|dec\)_tv_template\[\][ \t]=' crypt/testmgr.h
+    defsnc 'static[ ]const[ ]u8[ ]const_tab\[1024\][ ]=' drivers/crypt/qat/qat_common/adf_admin.c
+    defsnc '[\t]static[ ]const[ ]int[ ]even_dividers\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
+    defsnc 'static[ ]const[ ]struct[ ]bxt_clk_div[ ]bxt_dp_clk_val\[\][ ]=' drivers/gpu/drm/i915/intel_ddi.c
+    defsnc 'uint32_t[ ]gf100_ce_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf100.fuc3.h
+    defsnc 'uint32_t[ ]gt215_ce_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf215.fuc3.h
+    defsnc 'gf119_disp_\(base\|core\|ovly\)_mthd_\(base\|head\)[ ]=' drivers/gpu/drm/nouveau/nvkm/engine/disp/basegf119.c
+    defsnc 'uint32_t[ ]g98_sec_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf98.fuc0s.h
+    defsnc 'uint32_t[ ]gf119_pmu_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvkm/engine/ce/fuc/gf119.fuc4.h
+    defsnc '[\t]static[ ]const[ ]u16[ ]\(display_mode\|gamma\)_settings\[\][ ]=' drivers/gpu/drm/panel/panel-lg-lg4573.c
+    defsnc 'static[ ]const[ ]struct[ ]cxd2841er_cnr_data[ ]s2\?_cn_data\[\][ ]=' drivers/media/dvb-frontends/cxd2841er.c
+    defsnc 'static[ ]const[ ]struct[ ]dvb_pll_desc[ ]dvb_pll_\(unknown_1\|opera1\|samsung_dtos403ih102a\)[ ]=' drivers/media/dvb-frontends/dvb-pll.c
+    defsnc 'static[ ]const[ ]u8[ ]zigzag\[\][ ]=' drivers/media/platform/rcar_jpu.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]qtbl_\(lum\|chr\)\[JPU_MAX_QUALITY\]\[QTBL_SIZE\][ ]=' drivers/media/platform/rcar_jpu.c
+    defsnc 'static[ ]const[ ]unsigned[ ]int[ ]hactbl_\(lum\|chr\)\[HACTBL_SIZE\][ ]=' drivers/media/platform/rcar_jpu.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_sequence[ ]wm5102_rev[ab]_patch\[\][ ]=' drivers/mfd/wm5102-tables.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_sequence[ ]wm5110_rev[abd]_patch\[\][ ]=' drivers/mfd/wm5110-tables.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm8998_rev_a_patch\[\][ ]=' drivers/mfd/wm8998-tables.c
+    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]hwecc4_4096[ ]=' drivers/mtd/nand/davinci_nand.c
+    defsnc 'static[ ]const[ ]unsigned[ ]adinter_\(pins\|muxvals\)\[\][ ]=' drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c
+    defsnc '[\t]write_csr[(]dd[,][ ]DCC_CFG_SC_VL_TABLE_\(15_0\|31_16\)' drivers/staging/rdma/hfi1/chip.c
+    defsnc '\(static[ ]\)\?const[ ]u8[ ]pcie_\(serdes\|pcs\)_addrs\[2\]\[NUM_PCIE_SERDES\][ ]=' drivers/staging/rdma/hfi1/firmware.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak4643_reg\[\][ ]=' sound/soc/codecs/ak4642.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]da7210_reg_defaults\[\][ ]=' sound/soc/codecs/da7210.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]da9055_reg_defaults\[\][ ]=' sound/soc/codecs/da9055.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]isabelle_reg_defs\[\][ ]=' sound/soc/codecs/isabelle.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]lm49453_reg_defs\[\][ ]=' sound/soc/codecs/lm49453.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]rt286_index_def\[\][ ]=' sound/soc/codecs/rt286.c
+    defsnc 'static[ ]\(const[ ]\)\?struct[ ]reg_default[ ]rt298_\(index_def\|reg\)\[\][ ]=' sound/soc/codecs/rt298.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_sequence[ ]wm2200_reva_patch\[\][ ]=' sound/soc/codecs/wm2200.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_reve_patch\[\][ ]=' sound/soc/codecs/wm5110.c
+    blobname 'qat_mmp\.bin' drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h
+    blobname 'amdgpu[/]fiji_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+    blobname 'amdgpu[/]fiji_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+    blobname 'amdgpu[/]fiji_\(ce\|pfp\|me\(c2\?\)\?\|rlc\)\.bin' drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+    blobname 'amdgpu[/]fiji_mc\.bin' drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+    blobname 'amdgpu[/]fiji_sdma1\?\.bin' drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+    accept '[	][	]*gf100_gr_init_fw[(]gr[,][ ]0x4\(09\|1a\)000[,][ ][&]gr->fuc4\(09\|1a\)c[,][ \n	]*[&]gr->fuc4\(09\|1a\)d[)][;]' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+    accept '[	][	 ]*gf100_gr_dtor_fw[(]&gr->fuc4\(09\|1a\)[cd][)][;]' drivers/gpu/drm/nouveua/nvkm/engine/gr/gf100.c
+    accept '[	][	 ]*\(if[ ][(]\|[ ][ ][ ][ ]\)gf100_gr_ctor_fw[(]gr[,][ ]["]\(fecs\|gpccs\)_\(inst\|data\)["][,][ ][&]gr->fuc4\(09\|1a\)[cd][)]' drivers/gpu/drm/nouveua/nvkm/engine/gr/gf100.c
+    blobname 'nvidia[/]%s[/]%s\.bin' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+    accept '[\t]gr->firmware[ ]=[ ]nvkm_boolopt' drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+    blobname 'mrvl[/]pcie8997_uapsta\.bin' drivers/net/wireless/mwifiex/pcie.h
+    accept 'static[ ]const[ ]struct[ ]mwifiex_pcie_device[ ]mwifiex_pcie8997[ ]=[ ][{][\n][	]\.firmware[ 	]*=' drivers/net/wireless/mwifiex/pcie.h
+    blobname 'mrvl[/]sd8997_uapsta\.bin' drivers/net/wireless/mwifiex/sdio.h
+    blobname 'mrvl[/]usb8997_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h
+    blobname 'intel[/]ibt-11-5\.\(sfi\|ddc\)' drivers/bluetooth/btintel.c
+    blobname 'qca[/]\(rampatch\|nvm\)_%08x\.bin' drivers/bluetooth/btqca.c
+    blobname 'intel[/]ibt-11-%u\.sfi' drivers/bluetooth/hci_intel.c
+    blobname 'amdgpu[/]fiji_smc\.bin' drivers/gpu/drm/adm/amdgpu/fiji_dpm.c
+    blobname 'pti_memdma_h407\.elf' drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
+    blobname 'sec_s3fwrn5_\(firmware\|rfreg\)\.bin' drivers/nfc/s3fwrn5/core.c
+    blobname 'hfi_dc8051\.bin' drivers/staging/rdma/hfi1/firmware.c
+    blobname 'hfi1_\(dc8051\|fabric\|sbus\|pcie\)\.fw' drivers/staging/rdma/hfi1/firmware.c
+    blobname 'hfi1_platform\.dat' drivers/staging/rdma/hfi1/firmware.c
+    blobname 'dsp_fw_release\.bin' sound/soc/intel/skylake/skl-sst.c
+    accept '[\t]*dev_err[(]fei->dev[,][ ]["]request_firmware_nowait[ ]err:' drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c
+    accept 'static[ ]int[ ]s3fwrn5_fw_request_firmware[(]struct[ ]s3fwrn5_fw_info' drivers/nfc/s3fwrn5/firmware.c
+    accept '[\t]ret[ ]=[ ]s3fwrn5_fw_request_firmware[(]fw_info[)][;]' drivers/nfc/s3fwrn5/firmware.c
+
+    # New in 4.4.
+    blobna 'More[ ]description[ ]on[ ]the[ ]firmware.*make[ ]sure[ ]to[ ]copy[ ]firmware[\n]to[ ]file[ ]system[ ]before[ ]using[ ]these[ ]queue[ ]types[.]' Documentation/arm/keystone/knav-qmss.txt
+    accept '[\t	]*interrupts[ ]=[ ]<\([\n\t ]*\([0-9xa-f ]*\|[/][*]\([^*]\|[*]*[^*/]\)*[*][*]*[/]\)\)*>[;]' arch/arm64/boot/dts/hisilicon/hip05_hns.dtis
+    accept '[ ][ ][ ][ ]run_cmd[ ]dd[ ]if=["][$]ofile\.bin["][ ]of=["][$]ofile\.bin["]' arch/powerpc/boot/wrapper
+    accept '#define[ ]XCHAL_BYTE0_FORMAT_LENGTHS[ \t23,\\\n]*' arch/xtensa/variants/de212/include/variant/tie.h
+    defsnc 'static[ ]const[ ]struct[ ]reg_sequence[ ]wm8998_rev_a_patch\[\][ ]=' drivers/mfd/wm8998-tables.c
+    defsnc 'static[ ]struct[ ]nand_ecclayout[ ]vf610_nfc_ecc\(45\|60\)[ ]=' drivers/mtd/nand/vf610_nfc.c
+    defsnc 'static[ ]const[ ]struct[ ]iro[ ]iro_arr\[31\][ ]=' drivers/net/ethernet/qlogic/qed/qed_hsi.h
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg8val[ ]rtl8723a_mac_init_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_reg32val[ ]rtl\(\(8723a_phy_1t\|8192cu_phy_2t\)_init\|8188ru_phy_1t_highpa\|8xxx_agc_\(standard\|highpa\)\)_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    defsnc 'static[ ]struct[ ]rtl8xxxu_rfregval[ ]rtl\(\(8723au_radioa_1t\|8192cu_radio[ab]_[12]t\)_init\|8188ru_radioa_1t_highpa\)_table\[\][ ]=' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    defsnc 'static[ ]const[ ]int[ ]base_to_fuse_addr_mappings\[\]\[2\][ ]=' drivers/nvmem/vf610-ocotp.c
+    defsnc 'static[ ]const[ ]u8[ ]crc7_syndrome_table\[256\][ ]=' drivers/staging/wilc1000/wilc_spi.c
+    defsnc 'static[ ]const[ ]struct[ ]tsadc_table[ ]v3_code_table\[\][ ]=' drivers/thermal/rockchip_thermal.c
+    defsnc 'omap3[46]xx_adc_to_temp\[128\][ ]=' drivers/thermal/ti-soc-thermal/omap3-thermal-data.c
+    accept '[\t]*[ ][*][ ]*0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1[ ]2[ ]3[ ]4[ ]5[ ]6[ ]7[ ]8[ ]9[ ]0[ ]1' net/6lowpan/iphc.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ak4613_reg\[\][ ]=' sound/soc/codecs/ak4613.c
+    accept '[	]\.helper[ 	]*=[ ]NULL[,][\n][	]*\.firmware' drivers/bluetooth/btmrvl_sdio.c
+    blobname 'amdgpu[/]stoney_uvd\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+    blobname 'amdgpu[/]stoney_vce\.bin' drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+    blobname 'i915[/]bxt_dmc_ver1\.bin' drivers/gpu/drm/i915/intel_csr.c
+    blobname '\(utf\|board\)\(-2\)\?\.bin' drivers/net/wireless/ath/ath10k/hw.h
+    blobname 'brcm[/]brcmfmac43\(50\|6[56]b\|71\)-pcie\.bin' drivers/net/wireless/brcm80211/brcmfmac/pcie.c
+    accept '[\t]g_linux_wlan->firmware[ ]=' drivers/staging/wilc1000/linux_wlan.c
+    accept '#define[ \t]*FILE_SUFFIX_BINARY_TABLE[\t ]*["]\.dat["]' drivers/acpi/acpica/acapps.h
+    blobname 'i915[/]skl_guc_ver4\.bin' drivers/gpu/drm/i915/intel_guc_loader.c
+    blobname 'bu21023\.bin' drivers/input/touchscreen/rohm_bu21023.c
+    # These are user-supplied.
+    accept '[\t]cdev->firmware[ ]=[ ]kmalloc' drivers/misc/mic/cosm/cosm_sysfs.c
+    accept '[\t]rc[ ]=[ ]request_firmware[(][&]fw[,][ ]mdev->cosm_dev->' drivers/misc/mic/host/mic_x100.c
+    accept '[\t]if[ ][(]bnxt_dir_type_is_executable[^\n]*[\n][\t]*return[ ]-EINVAL[;][\n][\n]*[\t]rc[ ]=[ ]request_firmware[(][&]' drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+    blobname 'qed[/]qed_init_values_zipped-["][ ]FW_FILE_VERSION[ ]["]\.bin' drivers/net/ethernet/qlogic/qed/qed_main.c
+    accept 'MODULE_FIRMWARE[(]HTC_7010_MODULE_FW[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
+    accept 'MODULE_FIRMWARE[(]HTC_9271_MODULE_FW[)][;]' drivers/net/wireless/ath/ath9k/hif_usb.c
+    accept '\(static[ ]int[ ]\|[\t]*ret[ ]=[ ]\)ath9k_hif_request_firmware[(]' drivers/net/wireless/ath/ath9k/hif_usb.c
+    accept '[\t ]*["]%s[/]htc_%s-%d\.%s\.0\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.c
+    accept '#define[ ]HTC_\(9271\|7010\)_MODULE_FW[ \t]*HTC_FW_PATH[ ]["][/]htc_\(9271\|7010\)-["][ ][\\][\n][ \t]*__stringify[(]MAJOR_VERSION_REQ[)][ ][\\][\n][ \t]*["]\.["][ ]__stringify[(]FIRMWARE_MINOR_IDX_MAX[)][ ]["]\.0\.fw["]' drivers/net/wireless/ath/ath9k/hif_usb.h
+    blobname 'rtlwifi[/]rtl8723aufw_\(A\|B\|B_NoBT\)\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    blobname 'rtlwifi[/]rtl8192cufw_\(A\|B\|TMSC\)\.bin' drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+    blobname '\(otp\|ram\)\.bin' drivers/nfc/fdp/fdp.c
+    accept '\(static[ ]int[ ]\|[\t]r[ ]=[ ]\)fdp_nci_request_firmware[(]' drivers/nfc/fdp/fdp.c
+    accept '[\t][\t]lpfc_sli4_request_firmware_update[(]' drivers/scsi/lpfc/lpfc_init.c
+    blobname 'ks2_qmss_pdsp_acc48\.bin' drivers/soc/ti/knav_qmss_queue.c
+    blobname 'dfw_sst\.bin' sound/soc/intel/skylake/skl-topology.c
+    # This seems to be designed to load a user-supplied fpga
+    # configuration file, but there aren't any callers to this
+    # function in the kernel tree.  Presumably users who program FPGAs
+    # are supposed to write their own drivers and call this function.
+    accept '[\t]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]image_name[,][ ]' drivers/fpga/fpga-mgr.c
+    blobname 'fpga_mgr_firmware_load' drivers/fpga/fpga-mgr.c
+    accept '[\t ]*\(int\|ret[ ]=\)[ ]fpga_mgr_firmware_load[(]' drivers/fpga/fpga-mgr.[ch]
+    accept '[ ][*][ ]fpga_mgr_firmware_load[ ]-' drivers/fpga/fpga-mgr.c
+    accept 'EXPORT_SYMBOL_GPL[(]fpga_mgr_firmware_load[)][;]' drivers/fpga/fpga-mgr.c
+    accept '[\t ]*CHIP_IS_E2[(]bp[)][ ][?][ ]["]everest2["][ ]:[ ]["]everest3["][/][*][(]DEBLOBBED[)][*][/][)][;]' drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
     ;;
 
   */*freedo*.patch | */*logo*.patch)
     accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm
     ;;
 
+  */patch-4.[12].* | */*drm-qxl-validate-monitors-config-modes.patch)
+    defsnc '[}][ ]common_modes\[\][ ]=' drivers/gpu/drm/qxl/qxl_display.c
+    ;;
+
+  */*firmware-Drop-WARN-from-usermodehelper*.patch)
+    accept '_request_firmware[+]0x'
+    accept '\[<[0-9a-f]*>\][ ]_\?request_firmware[+]'
+    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware'
+    ;;
+
+  */patch*-3.1[467].*)
+    # False positives in patch-3.17.2, 3.16.7, 3.14.23 and newer.
+    accept '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]_request_firmware[(]const[ ]struct[ ]firmware' drivers/base/firmware_class.c
+    accept '[	]ret[ ]=[ ]_request_firmware_prepare[(]' drivers/base/firmware_class.c
+    # False positive in patch-3.17.6 and newer.
+    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]rt5670_reg\[\][ ]=[ ][{][*][/][;]' sound/soc/codecs/rt5670.c
+    ;;
+
+  */patch-3.13*)
+    # Introduced in 3.13.2.
+    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
+    initnc '[;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]static[ ]const[ ]struct[ ]reg_default[ ]wm5110_s[*][/][;]' sound/soc/codecs/wm5110.c
+    # New in 3.13.7.
+    accept '[\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\([\n][\t][{]0x00009e[1234][048c]\([,][ ]0x[0-9a-f]*\)*[}]\)*' drivers/net/wireless/ath/ath9k/ar9462_2p0_initvals.h
+    ;;
+
   */patch-3.12*)
+    # Introduced in 3.12.10.
+    accept '[\t][\t][\t]err[ ]=[ ]request_firmware[(][&]firmware[,][ \t\n]*rtlpriv->cfg' drivers/net/wireless/rtlwifi/core.c
+    defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]wm5110_sysclk_revd_patch\[\][ ]=' sound/soc/codecs/wm5110.c
     # New in 3.13
     defsnc 'static[ ]const[ ]u32[ ]hawaii_\(golden_registers\|mgcg_cgcg_init\)\[\][ ]=' drivers/gpu/drm/radeon/cik.c
     defsnc 'static[ ]const[ ]u32[ ]hawaii_io_mc_regs\[HAWAII_IO_MC_REGS_SIZE\]\[2\][ ]=' drivers/gpu/drm/radeon/cik.c
@@ -3616,7 +4418,7 @@ set_except () {
     blobname 'radeon[/]HAWAII_\(pfp\|[mc]e\|me\?c\|rlc\|sdma\|smc\)\.bin' drivers/gpu/drm/radeon/cik.c
     blobname 'ti-connectivity[/]wl1251-\(fw\|nvs\)\.bin' 'drivers/net/wireless/wl12\(51\|xx\)/wl1251.h'
     # Matches from earlier releases, for the patch from 3.12.
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
+    accept '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
     accept '[	]ar->firmware[ ]=[ ]\(NULL\|ath10k_fetch_fw_file\)' drivers/net/wireless/ath/ath10k/core.c
     defsnc 'static[ ]const[ ]u32[ ]ar9485_1_[01]_\(mac\|baseband\)_postamble\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
     defsnc 'static[ ]const[ ]u32[ ]ar9485\(M\|_m\)odes_\(high\|low\|green\)\(est\)\?_\(power\|ob_db\)_tx_gain_1_[01]\[\]\[5\][ ]=' drivers/net/wireless/ath/ath9k/ar9485_initvals.h
@@ -3656,12 +4458,12 @@ set_except () {
     blobname 'ct2\?fw-3\.2\.1\.1\.bin' drivers/net/ethernet/brocade/bna/cna.h
     blobname 'c[bt]2\?fw-3\.2\.1\.1\.bin' drivers/scsi/bfa/bfad.c
     blobname '84xx_fw\.bin' drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
-    defsnc '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
+    accept '[	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' arch/powerpc/boot/dts/fsl/qoriq-mpic4\.3\.dtsi
     defsnc '__visible[ ]const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
     defsnc '__visible[ ]const[ ]u32[ ]crypto_[fi][tl]_tab\[4\]\[256\][ ]=' crypto/aes_generic.c
     defsnc '__visible[ ]const[ ]u32[ ]cast_s[1234]\[256\][ ]=' crypto/cast_common.c
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
-    defsnc '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
+    accept '[	]*interrupts[ ]=[ ]<[ ]*\(0[ ]2[012][0-9][ ]4[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/shdma.txt
+    accept '[	][	]interrupts[ ]=[ ]<\([\n][	]*0x\([ef]\|1[01]\)[0-9a-f][ ]0[ ]0[ ]0\)*>[;]' Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt
     defsnc 'static[ ]const[ ]int[ ]a370_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-370.c
     defsnc 'static[ ]const[ ]int[ ]axp_\(nb\|h\|dram\)clk_ratios\[32\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/armada-xp.c
     defsnc 'static[ ]const[ ]int[ ]\(dove\|kirkwood\)_cpu_ddr_ratios\[16\]\[2\][ ]__initconst[ ]=' drivers/clk/mvebu/clk-core.c
@@ -4582,9 +5384,9 @@ set_except () {
     accept '[	]hif_dev->firmware[ ]=[ ]NULL[;]' drivers/net/wireless/ath/ath9k/hif_usb.c
     # New in 3.4.
     accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0[ 	\n]*\)*>' Documentation/devicetree/bindings/arm/tegra/emc.txt
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
+    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[345][0-9][ ]0x04[ 	\n]*\)*>[;]' Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
     accept '[	]*nvidia,emc-registers[ ]=[ ]<[ ]\(0x[0-9a-f]*[ 	\n]*\)*>' arch/arm/boot/dts/tegra-seaboard.dts
-    defsnc '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
+    accept '[	]*interrupts[ ]=[ ]<[ ]\(0[ ]1[0-4][0-9][ ]0x04[ 	\n]*\)*>[;]' 'arch/arm/boot/dts/tegra[23]0\.dtsi'
     defsnc 'static[ ]struct[ ]clk_pll_freq_table[ ]tegra_pll_[cu]_freq_table\[\][ ]=' arch/arm/mach-tegra/tegra30_clocks.c
     defsnc '[	]static[ ]const[ ]u8[ ]snum_init_[74]6\[\][ ]=' arch/powerpc/sysdev/qe_lib/qe.c
     defsnc 'const[ ]u64[ ]camellia_sp\(10011110\|22000222\|03303033\|00444404\|02220222\|30333033\|44044404\|11101110\)\[256\][ ]=' arch/x86/crypto/camellia_glue.c
@@ -4901,7 +5703,7 @@ set_except () {
     # Sources for these are in the corresponding .fuc files.
     defsnc 'uint32_t[ ]nvc0_grgpc_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grgpc.fuc.h
     defsnc 'uint32_t[ ]nvc0_grhub_\(data\|code\)\[\][ ]=' drivers/gpu/drm/nouveau/nvc0_grhub.fuc.h
-    defsnc '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
+    accept '[	][	][	]interrupts[ ]=[ ]<\([\n][	]*0x[ef][0-9a-f][ ]0[ ]0[ ]0\)*>[;]' 'arch/powerpc/boot/dts/p\(2040\|3041\|4080\|5020\)si\.dtsi'
     blobname 'dvb-netup-altera-04\.fw' drivers/media/video/cx23885/cx23885-cards.c
     blobname 'rtl_nic[/]rtl8168e-3\.fw' drivers/net/r8169.c
     defsnc '[	]static[ ]const[ ]struct[ ]ephy_info[ ]e_info_8168e_1\[\][ ]=' drivers/net/r8169.c
@@ -5136,7 +5938,7 @@ set_except () {
     initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?\(static[ ]\)\?const[ ]u32[ ]b43_ntab_framestruct\[\][ ]=\([ ][{][*][/][;]\)\?' drivers/net/wireless/b43/tables_nphy.c
     initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?int[ ]tones\[2048\][ ]=\([ ][{][*][/][;]\)\?' drivers/staging/easycap/easycap_testcard.c
     initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]\(yy\)\?const[ ]\(yytype\|flex\)_u\?int\(8\|16\|32\)\(_t\)\?[ ]yy[^\n []*\[[0-9]*\][ ]=\([*][/][;]\)\?' '.*\.tab\.c_shipped'
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
+    accept "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
     accept '[	]p7500->firmware[ ]=' drivers/media/dvb/dvb-usb/dw2102.c
     defsnc 'static[ ]\(const[ ]\)\?\(__\)\?u8[ ]\(mt9v111\|sp80708\|hv7131[rd]\|mi0360b\?\|mo4000\|ov76\([36]0\|48\)\|om6802\)_sensor_\(init\|param1\)\[\]\[8\][ ]=' drivers/media/video/gspca/sonixj.c
     initnc '\(uint16_t\|u16\)[ ]e1000_igp_2_cable_length_table\[IGP02E1000_AGC_LENGTH_TABLE_SIZE\][ ]=' drivers/net/e1000/e1000_hw.c # u16 on 2.6.26
@@ -5825,7 +6627,7 @@ set_except () {
 
   */patch*-2.6.26-rc*)
     initnc 'static[ ]u64[ ]vec2off\[68\][ ]=' arch/ia64/kvm/process.c
-    initnc "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
+    accept "[	][	][	]interrupts[ ]=[ ]<\\(0x\\)\\?3[ ]\\(0x\\)\\?0[ ]\\(0x\\)\\?0[ ][ ]$blobpat*>[;]" 'arch/powerpc/boot/dts/\(cm5200\|lite5200b\?\|kuroboxHG\|pcm030\|tqm5200\).dts'
     initnc 'static[ ]const[ ]u32[ ]crctab32\[\][ ]=' arch/x86/boot/tools/build.c
     initnc 'static[ ]const[ ]u64[ ]sha512_K\[80\][ ]=' 'crypto/sha512\(_generic\)\?.c'
     initnc 'static[ ]struct[ ]hash_testvec[ ]\(hmac_sha\(224\|256\)\|aes_xcbc128\|crc32c\)_tv_template\[\][ ]=' crypto/tcrypt.h
@@ -7557,7 +8359,19 @@ BAD regular expression:
   # Extract or otherwise munge...
   case /$input in
   *.tar*)
-    cmd="tar -xf - --to-command='echo \";/*begin \$TAR_FILENAME*/;\"; cat; echo; echo \";/*end \$TAR_FILENAME*/;\"'"
+    tarwrap=`mktemp -t deblob-check-tarwrap-XXXXXX`
+    tempfiles="$tempfiles $tarwrap"
+    
+    cat >> $tarwrap <<EOF
+#! /bin/sh
+echo='$echo' &&
+\$echo ";/*begin \$1*/;" &&
+cat &&
+echo &&
+\$echo ";/*end \$1*/;"
+EOF
+    chmod +x $tarwrap
+    cmd="tar -xf - --to-command='$tarwrap \"\$TAR_FILENAME\"'"
     ;;
   *.patch | *.patch.*z* | */patch-* | *.diff | *.diff.*z*)
     if $reverse_patch; then
diff --git a/helpers/DATA/linux-lts-vivid/deblob-main b/helpers/DATA/linux/deblob-main
old mode 100644
new mode 100755
similarity index 100%
rename from helpers/DATA/linux-lts-vivid/deblob-main
rename to helpers/DATA/linux/deblob-main
diff --git a/helpers/DATA/linux/firmware/.gitignore b/helpers/DATA/linux/firmware/.gitignore
deleted file mode 100644
index d9c69017b..000000000
--- a/helpers/DATA/linux/firmware/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.gen.S
-*.fw
-*.bin
-*.csp
-*.dsp
-ihex2fw
diff --git a/helpers/DATA/linux/firmware/Makefile b/helpers/DATA/linux/firmware/Makefile
deleted file mode 100644
index f3d9a7b6e..000000000
--- a/helpers/DATA/linux/firmware/Makefile
+++ /dev/null
@@ -1,251 +0,0 @@
-#
-# kbuild file for firmware/
-#
-
-# Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
-# leading /, it's relative to $(srctree).
-fwdir := $(subst ",,$(CONFIG_EXTRA_FIRMWARE_DIR))
-fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))
-
-fw-external-y := $(subst ",,$(CONFIG_EXTRA_FIRMWARE))
-
-# There are three cases to care about:
-# 1. Building kernel with CONFIG_FIRMWARE_IN_KERNEL=y -- $(fw-shipped-y) should
-#    include the firmware files to include, according to .config
-# 2. 'make modules_install', which will install firmware for modules, and 
-#    _also_ for the in-kernel drivers when CONFIG_FIRMWARE_IN_KERNEL=n
-# 3. 'make firmware_install', which installs all firmware, unconditionally.
-
-# For the former two cases we want $(fw-shipped-y) and $(fw-shipped-m) to be
-# accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all).
-# But be aware that the config file might not be included at all.
-
-ifdef CONFIG_ACENIC_OMIT_TIGON_I
-acenic-objs := $(DEBLOBBED)
-fw-shipped- += $(DEBLOBBED)
-else
-acenic-objs := $(DEBLOBBED) $(DEBLOBBED)
-endif
-fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
-fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += $(DEBLOBBED) \
-					 $(DEBLOBBED)
-fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
-fw-shipped-$(CONFIG_ATM_AMBASSADOR) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_BNX2X) += $(DEBLOBBED) \
-			      $(DEBLOBBED) \
-			      $(DEBLOBBED)
-fw-shipped-$(CONFIG_BNX2) += $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED) \
-			     $(DEBLOBBED)
-fw-shipped-$(CONFIG_CASSINI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_CHELSIO_T3) += $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_MGA) += $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_R128) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_DRM_RADEON) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
-fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_E100) += $(DEBLOBBED) $(DEBLOBBED) \
-			     $(DEBLOBBED)
-fw-shipped-$(CONFIG_MYRI_SBUS) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_PCNET) += $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_3C589) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_3C574) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SERIAL_8250_CS) += $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED) $(DEBLOBBED) \
-				       $(DEBLOBBED)
-fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_ADVANSYS) += $(DEBLOBBED) $(DEBLOBBED) \
-				      $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += $(DEBLOBBED) $(DEBLOBBED) \
-					 $(DEBLOBBED)
-fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_INFINIBAND_QIB) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_KORG1212) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_MAESTRO3) += $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_SB16_CSP) += $(DEBLOBBED) $(DEBLOBBED) \
-				     $(DEBLOBBED) \
-				     $(DEBLOBBED) \
-				     $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_YMFPCI) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED)
-fw-shipped-$(CONFIG_SND_WAVEFRONT) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_TEHUTI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_TIGON3) += $(DEBLOBBED) $(DEBLOBBED) \
-			       $(DEBLOBBED)
-fw-shipped-$(CONFIG_TYPHOON) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_EMI26) += $(DEBLOBBED) $(DEBLOBBED) \
-				  $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_EMI62) += $(DEBLOBBED) $(DEBLOBBED) \
-				  $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_KAWETH) += $(DEBLOBBED) $(DEBLOBBED) \
-				   $(DEBLOBBED) \
-				   $(DEBLOBBED)
-ifdef CONFIG_FIRMWARE_IN_KERNEL
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += $(DEBLOBBED)
-else
-fw-shipped- += $(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)	\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)		\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)		\
-	$(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)
-endif
-fw-shipped-$(CONFIG_USB_SERIAL_TI) += $(DEBLOBBED) $(DEBLOBBED) \
-				      $(DEBLOBBED) $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += $(DEBLOBBED) $(DEBLOBBED) \
-					    $(DEBLOBBED) $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += $(DEBLOBBED) $(DEBLOBBED) \
-					   # $(DEBLOBBED)
-fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
-fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
-fw-shipped-$(CONFIG_USB_VICAM) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_VIDEO_CPIA2) += $(DEBLOBBED)
-fw-shipped-$(CONFIG_YAM) += $(DEBLOBBED) $(DEBLOBBED)
-
-fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
-
-# Directories which we _might_ need to create, so we have a rule for them.
-firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
-
-quiet_cmd_mkdir = MKDIR   $(patsubst $(objtree)/%,%,$@)
-      cmd_mkdir = mkdir -p $@
-
-quiet_cmd_ihex  = IHEX    $@
-      cmd_ihex  = $(OBJCOPY) -Iihex -Obinary $< $@
-
-quiet_cmd_ihex2fw  = IHEX2FW $@
-      cmd_ihex2fw  = $(objtree)/$(obj)/ihex2fw $< $@
-
-quiet_cmd_h16tofw  = H16TOFW $@
-      cmd_h16tofw  = $(objtree)/$(obj)/ihex2fw -w $< $@
-
-quiet_cmd_fwbin = MK_FW   $@
-      cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)";		     \
-		  FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst	     \
-				firmware/%.gen.S,%,$@))))";		     \
-		  ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long);		     \
-		  ASM_ALIGN=$(if $(CONFIG_64BIT),3,2);			     \
-		  PROGBITS=$(if $(CONFIG_ARM),%,@)progbits;		     \
-		  echo "/* Generated by firmware/Makefile */"		> $@;\
-		  echo "    .section .rodata"				>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "_fw_$${FWSTR}_bin:"				>>$@;\
-		  echo "    .incbin \"$(2)\""				>>$@;\
-		  echo "_fw_end:"					>>$@;\
-		  echo "   .section .rodata.str,\"aMS\",$${PROGBITS},1"	>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "_fw_$${FWSTR}_name:"				>>$@;\
-		  echo "    .string \"$$FWNAME\""			>>$@;\
-		  echo "    .section .builtin_fw,\"a\",$${PROGBITS}"	>>$@;\
-		  echo "    .p2align $${ASM_ALIGN}"			>>$@;\
-		  echo "    $${ASM_WORD} _fw_$${FWSTR}_name"		>>$@;\
-		  echo "    $${ASM_WORD} _fw_$${FWSTR}_bin"		>>$@;\
-		  echo "    $${ASM_WORD} _fw_end - _fw_$${FWSTR}_bin"	>>$@;
-
-# One of these files will change, or come into existence, whenever
-# the configuration changes between 32-bit and 64-bit. The .S files
-# need to change when that happens.
-wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h \
-		include/config/ppc32.h include/config/ppc64.h \
-		include/config/superh32.h include/config/superh64.h \
-		include/config/x86_32.h include/config/x86_64.h)
-
-# Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
-# It'll end up depending on these targets, so make them a PHONY rule which
-# depends on _all_ the directories in $(firmware-dirs), and it'll work out OK.
-PHONY += $(objtree)/$$(%) $(objtree)/$(obj)/$$(%)
-$(objtree)/$$(%) $(objtree)/$(obj)/$$(%): $(firmware-dirs)
-	@true
-
-# For the $$(dir %) trick, where we need % to be expanded first.
-.SECONDEXPANSION:
-
-$(patsubst %,$(obj)/%.gen.S, $(fw-shipped-y)): %: $(wordsize_deps) \
-		| $(objtree)/$$(dir %)
-	$(call cmd,fwbin,$(patsubst %.gen.S,%,$@))
-$(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \
-		include/config/extra/firmware/dir.h | $(objtree)/$$(dir %)
-	$(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@))
-
-# The .o files depend on the binaries directly; the .S files don't.
-$(patsubst %,$(obj)/%.gen.o, $(fw-shipped-y)): %.gen.o: %
-$(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
-
-# .ihex is used just as a simple way to hold binary files in a source tree
-# where binaries are frowned upon. They are directly converted with objcopy.
-$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,ihex)
-
-# Don't depend on ihex2fw if we're installing and it already exists.
-# Putting it after | in the dependencies doesn't seem sufficient when
-# we're installing after a cross-compile, because ihex2fw has dependencies
-# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and 
-# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
-# is exported read-only for someone to run 'make install'.
-ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
-ihex2fw_dep :=
-else
-ihex2fw_dep := $(obj)/ihex2fw
-endif
-
-# .HEX is also Intel HEX, but where the offset and length in each record
-# is actually meaningful, because the firmware has to be loaded in a certain
-# order rather than as a single binary blob. Thus, we convert them into our
-# more compact binary representation of ihex records (<linux/ihex.h>)
-$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,ihex2fw)
-
-# .H16 is our own modified form of Intel HEX, with 16-bit length for records.
-$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
-	$(call cmd,h16tofw)
-
-$(firmware-dirs):
-	$(call cmd,mkdir)
-
-obj-y				 += $(patsubst %,%.gen.o, $(fw-external-y))
-obj-$(CONFIG_FIRMWARE_IN_KERNEL) += $(patsubst %,%.gen.o, $(fw-shipped-y))
-
-# Remove .S files and binaries created from ihex
-# (during 'make clean' .config isn't included so they're all in $(fw-shipped-))
-targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
-				$(shell find $(obj) -name \*.gen.S 2>/dev/null))
-
-# Without this, built-in.o won't be created when it's empty, and the
-# final vmlinux link will fail.
-obj-n := dummy
-
-hostprogs-y := ihex2fw
diff --git a/helpers/DATA/linux/firmware/README.AddingFirmware b/helpers/DATA/linux/firmware/README.AddingFirmware
deleted file mode 100644
index 463b1e42b..000000000
--- a/helpers/DATA/linux/firmware/README.AddingFirmware
+++ /dev/null
@@ -1,23 +0,0 @@
-
-	DO NOT ADD FIRMWARE TO THIS DIRECTORY.
-	======================================
-
-This directory is only here to contain firmware images extracted from old
-device drivers which predate the common use of request_firmware().
-
-As we update those drivers to use request_firmware() and keep a clean
-separation between code and firmware, we put the extracted firmware
-here.
-
-/*(DEBLOBBED)*/
-      Ben Hutchings <ben@decadent.org.uk>
-
-Your commit should include an update to the WHENCE file clearly
-identifying the licence under which the firmware is available, and
-that it is redistributable. If the licence is long and involved, it's
-permitted to include it in a separate file and refer to it from the
-WHENCE file.
-
-Ideally, your commit should contain a Signed-Off-By: from someone
-authoritative on the licensing of the firmware in question (i.e. from
-within the company that owns the code).
diff --git a/helpers/DATA/linux/firmware/WHENCE b/helpers/DATA/linux/firmware/WHENCE
deleted file mode 100644
index dd74f94c1..000000000
--- a/helpers/DATA/linux/firmware/WHENCE
+++ /dev/null
@@ -1,61 +0,0 @@
-             **********
-             * WHENCE *
-             **********
-
-This file attempts to document the origin and licensing information,
-if known, for each piece of firmware distributed for use with the Linux
-kernel.
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: keyspan_pda -- USB Keyspan PDA single-port serial device
-
-File: keyspan_pda/keyspan_pda.fw
-Source: keyspan_pda/keyspan_pda.S
-
-File: keyspan_pda/xircom_pgs.fw
-Source: keyspan_pda/xircom_pgs.S
-
-Licence: GPLv2+
-
-Compiled from original 8051 source into Intel HEX, used in our binary ihex form.
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: ATARI_DSP56K - Atari DSP56k support
-
-File: dsp56k/bootstrap.bin
-Source: dsp56k/bootstrap.asm
-
-Licence: GPLv2 or later
-
-DSP56001 assembler, possibly buildable with a56 from 
-http://www.zdomain.com/a56.html
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
-
-Driver: DVB AV7110 -- AV7110 cards
-
-File: av7110/bootcode.bin
-
-Licence: GPLv2 or later
-
-ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
-
---------------------------------------------------------------------------
-
-/*(DEBLOBBED)*/
-
---------------------------------------------------------------------------
diff --git a/helpers/DATA/linux/firmware/adaptec/starfire_rx.bin.ihex b/helpers/DATA/linux/firmware/adaptec/starfire_rx.bin.ihex
deleted file mode 100644
index dfb2abc3f..000000000
--- a/helpers/DATA/linux/firmware/adaptec/starfire_rx.bin.ihex
+++ /dev/null
@@ -1 +0,0 @@
-:/*(DEBLOBBED)*/
diff --git a/helpers/DATA/linux/firmware/adaptec/starfire_tx.bin.ihex b/helpers/DATA/linux/firmware/adaptec/starfire_tx.bin.ihex
deleted file mode 100644
index dfb2abc3f..000000000
--- a/helpers/DATA/linux/firmware/adaptec/starfire_tx.bin.ihex
+++ /dev/null
@@ -1 +0,0 @@
-:/*(DEBLOBBED)*/
diff --git a/helpers/DATA/linux/firmware/atmsar11.HEX b/helpers/DATA/linux/firmware/atmsar11.HEX
deleted file mode 100644
index c9b880e0b..000000000
--- a/helpers/DATA/linux/firmware/atmsar11.HEX
+++ /dev/null
@@ -1,14 +0,0 @@
-:/*(DEBLOBBED)*/
-/*
-  Madge Ambassador ATM Adapter microcode.
-  Copyright (C) 1995-1999  Madge Networks Ltd.
-
-  This microcode data is placed under the terms of the GNU General
-  Public License. The GPL is contained in /usr/doc/copyright/GPL on a
-  Debian system and in the file COPYING in the Linux kernel source.
-
-  We would prefer you not to distribute modified versions without
-  consultation and not to ask for assembly/other microcode source.
-*/
-
-First record is start address in a __be32.
diff --git a/helpers/DATA/linux/firmware/av7110/Boot.S b/helpers/DATA/linux/firmware/av7110/Boot.S
deleted file mode 100644
index d562fdc29..000000000
--- a/helpers/DATA/linux/firmware/av7110/Boot.S
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-   Boot.S: boot loader for Siemens DVB-S card
-
-   Copyright (C) 2001 Convergence integrated media GmbH
-	              Written by Ralph Metzler
-		                 <rjkm@convergence.de>
-   Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
-
-   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 the Free Software Foundation; either version 2
-   of the License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
-
-*/
-
-/*
-	check AV711x_3_1.pdf for some hardware infos
-	build it with :
-	$ cc -mbig-endian -c Boot.S
-	$ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
-	$ objcopy -Obinary Boot
-*/
-
-	.text
-	.align
-	.globl _start
-_start:
-	b reset			// reset vector
-	movs  pc, r14           // undefined
-	subs  pc, r14, #4       // SWI
-	subs  pc, r14, #4       // prefetch abort
-	subs  pc, r14, #8       // data abort
-	subs  pc, r14, #4       // reserved
-	subs  pc, r14, #4       // IRQ
-	subs  pc, r14, #4       // FIQ
-
-	.word tbl               // table needed by firmware ROM
-tbl:	.word (endtbl - tbl)
-	.word 0
-  	.word conf
-endtbl:	.word 0
-conf:	.word 0xa5a55a5a
-	.word 0x001f1555
-	.word 0x00000009
-
-reset:	ldr	r13, buffer
-	ldr	r4, flag
-	mov	r0, #0
-	str	r0, [r4]
-	str	r0, [r4, #4]
-
-	ldr		r1, wait_address
-	ldr		r2, flag_address
-	ldr		r3, sram
-
-copycode: // copy the code HW Sram
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
-	cmp		r1, r2
-	ble 	copycode
-	ldr		pc, sram // jump to the copied code
-
-wait:	ldrh	r1, [r4]        // wait for flag!=0
- 	cmp	r1, #0
-	beq	wait
-
-	mov	r1, r13         // buffer address
- 	ldr	r3, [r4,#4]     // destaddr
-
- 	ldrh	r2, [r4,#2]     // get segment length
-	add     r2, r2, #63     // round length to next 64 bytes
-	movs	r2, r2, lsr #6  // and divide by 64
-	moveq	r0, #2          // if 0, set flag to 2, else signal
-	strh	r0, [r4]        // that buffer is accepted by setting to 0
-        beq wait
-	
-copyloop:
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
-	ldmia	r1!, {r5-r12}
-	stmia	r3!, {r5-r12}
- 	subs	r2, r2, #1
- 	bne	copyloop
-
-	eor     r13, r13, #0x1400    // switch to other buffer
-	b	wait
-
-// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
-// destaddr at 0x2c0003fc
-
-flag:	.word	0x2c0003f8
-
-
-// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
-
-buffer:	.word	0x2c000400
-
-sram: .word   0x9e000800
-wait_address: .word   wait
-flag_address: .word   flag
diff --git a/helpers/DATA/linux/firmware/av7110/bootcode.bin.ihex b/helpers/DATA/linux/firmware/av7110/bootcode.bin.ihex
deleted file mode 100644
index 26a2993e0..000000000
--- a/helpers/DATA/linux/firmware/av7110/bootcode.bin.ihex
+++ /dev/null
@@ -1,15 +0,0 @@
-:10000000EA00000EE1B0F00EE25EF004E25EF00401
-:10001000E25EF008E25EF004E25EF004E25EF0040C
-:100020002C0000240000000C000000002C00003414
-:1000300000000000A5A55A5A001F15550000000930
-:10004000E59FD07CE59F4074E3A00000E5840000BC
-:10005000E5840004E59F1070E59F2070E59F306403
-:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
-:10007000E59FF050E1D410B0E35100000AFFFFFC0F
-:10008000E1A0100DE5943004E1D420B2E282203FDB
-:10009000E1B0232203A00002E1C400B00AFFFFF494
-:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
-:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
-:1000C0002C0003F82C0004009E0008002C00007493
-:0400D0002C0000C040
-:00000001FF
diff --git a/helpers/DATA/linux/firmware/cis/.gitignore b/helpers/DATA/linux/firmware/cis/.gitignore
deleted file mode 100644
index 1de39847f..000000000
--- a/helpers/DATA/linux/firmware/cis/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.cis
diff --git a/helpers/DATA/linux/firmware/cpia2/stv0672_vp4.bin.ihex b/helpers/DATA/linux/firmware/cpia2/stv0672_vp4.bin.ihex
deleted file mode 100644
index 866b76faa..000000000
--- a/helpers/DATA/linux/firmware/cpia2/stv0672_vp4.bin.ihex
+++ /dev/null
@@ -1,21 +0,0 @@
-:/*(DEBLOBBED)*/
-
-  Copyright 2001, STMicrolectronics, Inc.
-  Contact:  steve.miller@st.com
-
-  Description:
-     This file contains patch data for the CPiA2 (stv0672) VP4.
-
-  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
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/helpers/DATA/linux/firmware/dsp56k/bootstrap.asm b/helpers/DATA/linux/firmware/dsp56k/bootstrap.asm
deleted file mode 100644
index a411047e6..000000000
--- a/helpers/DATA/linux/firmware/dsp56k/bootstrap.asm
+++ /dev/null
@@ -1,98 +0,0 @@
-; Author: Frederik Noring <noring@nocrew.org>
-;
-; This file is subject to the terms and conditions of the GNU General Public
-; License.  See the file COPYING in the main directory of this archive
-; for more details.
-
-; DSP56k loader
-
-; Host Interface
-M_BCR   EQU     $FFFE           ; Port A Bus Control Register
-M_PBC   EQU     $FFE0           ; Port B Control Register
-M_PBDDR EQU     $FFE2           ; Port B Data Direction Register
-M_PBD   EQU     $FFE4           ; Port B Data Register
-M_PCC   EQU     $FFE1           ; Port C Control Register
-M_PCDDR EQU     $FFE3           ; Port C Data Direction Register
-M_PCD   EQU     $FFE5           ; Port C Data Register
-
-M_HCR   EQU     $FFE8           ; Host Control Register
-M_HSR   EQU     $FFE9           ; Host Status Register
-M_HRX   EQU     $FFEB           ; Host Receive Data Register
-M_HTX   EQU     $FFEB           ; Host Transmit Data Register
-
-; SSI, Synchronous Serial Interface
-M_RX    EQU     $FFEF           ; Serial Receive Data Register
-M_TX    EQU     $FFEF           ; Serial Transmit Data Register
-M_CRA   EQU     $FFEC           ; SSI Control Register A
-M_CRB   EQU     $FFED           ; SSI Control Register B
-M_SR    EQU     $FFEE           ; SSI Status Register
-M_TSR   EQU     $FFEE           ; SSI Time Slot Register
-
-; Exception Processing
-M_IPR   EQU     $FFFF           ; Interrupt Priority Register
-
-        org     P:$0
-start   jmp     <$40
-
-        org     P:$40
-;       ; Zero 16384 DSP X and Y words
-;       clr     A #0,r0
-;       clr     B #0,r4
-;       do      #64,<_block1
-;       rep     #256
-;       move    A,X:(r0)+ B,Y:(r4)+
-;_block1        ; Zero (32768-512) Program words
-;       clr     A #512,r0
-;       do      #126,<_block2
-;       rep     #256
-;       move    A,P:(r0)+
-;_block2
-
-        ; Copy DSP program control
-        move    #real,r0
-        move    #upload,r1
-        do      #upload_end-upload,_copy
-        movem    P:(r0)+,x0
-        movem    x0,P:(r1)+
-_copy   movep   #4,X:<<M_HCR
-        movep   #$c00,X:<<M_IPR
-        and     #<$fe,mr
-        jmp     upload
-
-real
-        org     P:$7ea9
-upload
-        movep   #1,X:<<M_PBC
-        movep   #0,X:<<M_BCR
-
-next    jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,A
-        move    #>3,x0
-        cmp     x0,A #>1,x0
-        jeq     <$0
-_get_address
-        jclr    #0,X:<<M_HSR,_get_address
-        movep   X:<<M_HRX,r0
-_get_length
-        jclr    #0,X:<<M_HSR,_get_length
-        movep   X:<<M_HRX,y0
-        cmp     x0,A #>2,x0
-        jeq     load_X
-        cmp     x0,A
-        jeq     load_Y
-
-load_P  do      y0,_load_P
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,P:(r0)+
-_load_P jmp     next
-load_X  do      y0,_load_X
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,X:(r0)+
-_load_X jmp     next
-load_Y  do      y0,_load_Y
-        jclr    #0,X:<<M_HSR,*
-        movep   X:<<M_HRX,Y:(r0)+
-_load_Y jmp     next
-
-upload_end
-        end
diff --git a/helpers/DATA/linux/firmware/dsp56k/bootstrap.bin.ihex b/helpers/DATA/linux/firmware/dsp56k/bootstrap.bin.ihex
deleted file mode 100644
index 233f21fe7..000000000
--- a/helpers/DATA/linux/firmware/dsp56k/bootstrap.bin.ihex
+++ /dev/null
@@ -1,26 +0,0 @@
-:100000000C004000000000000000000000000000A4
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C00060F40000004F61F400007EA9062E80005D
-:1000D000004707D88407598408F4A800000408F4EE
-:1000E000BF000C0000FEB80AF080007EA908F4A052
-:1000F00000000108F4BE0000000AA980007EAD08DF
-:100100004E2B44F40000000344F4450000010EA00F
-:10011000000AA980007EB508502B0AA980007EB88D
-:1001200008462B44F4450000020AF0AA007EC920CC
-:1001300000450AF0AA007ED006C600007EC60AA9C5
-:1001400080007EC408586B0AF080007EAD06C600B1
-:10015000007ECD0AA980007ECB0858AB0AF0800053
-:100160007EAD06C600007ED40AA980007ED2085863
-:07017000EB0AF080007EADF8
-:00000001FF
-/* DSP56001 bootstrap code */
diff --git a/helpers/DATA/linux/firmware/edgeport/boot.H16 b/helpers/DATA/linux/firmware/edgeport/boot.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux/firmware/edgeport/boot.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux/firmware/edgeport/boot2.H16 b/helpers/DATA/linux/firmware/edgeport/boot2.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux/firmware/edgeport/boot2.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux/firmware/edgeport/down.H16 b/helpers/DATA/linux/firmware/edgeport/down.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux/firmware/edgeport/down.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux/firmware/edgeport/down2.H16 b/helpers/DATA/linux/firmware/edgeport/down2.H16
deleted file mode 100644
index 80df4119e..000000000
--- a/helpers/DATA/linux/firmware/edgeport/down2.H16
+++ /dev/null
@@ -1,10 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport/4 Binary Image
-//* Generated by HEX2C v1.06
-//* Copyright (C) 1998 Inside Out Networks, All rights reserved.
-//*	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
-//*	the Free Software Foundation; either version 2 of the License, or
-//*	(at your option) any later version.
-//**************************************************************
diff --git a/helpers/DATA/linux/firmware/edgeport/down3.bin.ihex b/helpers/DATA/linux/firmware/edgeport/down3.bin.ihex
deleted file mode 100644
index 6597b8df0..000000000
--- a/helpers/DATA/linux/firmware/edgeport/down3.bin.ihex
+++ /dev/null
@@ -1,6 +0,0 @@
-:/*(DEBLOBBED)*/
-//**************************************************************
-//* Edgeport Binary Image (for TI based products)
-//* Generated by TIBin2C v2.00 (watchport)
-//* Copyright (C) 2001 Inside Out Networks, All rights reserved.
-//**************************************************************
diff --git a/helpers/DATA/linux/firmware/ihex2fw.c b/helpers/DATA/linux/firmware/ihex2fw.c
deleted file mode 100644
index cf38e1591..000000000
--- a/helpers/DATA/linux/firmware/ihex2fw.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Parser/loader for IHEX formatted data.
- *
- * Copyright © 2008 David Woodhouse <dwmw2@infradead.org>
- * Copyright © 2005 Jan Harkes <jaharkes@cs.cmu.edu>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <stdint.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-
-struct ihex_binrec {
-	struct ihex_binrec *next; /* not part of the real data structure */
-        uint32_t addr;
-        uint16_t len;
-        uint8_t data[];
-};
-
-/**
- * nybble/hex are little helpers to parse hexadecimal numbers to a byte value
- **/
-static uint8_t nybble(const uint8_t n)
-{
-       if      (n >= '0' && n <= '9') return n - '0';
-       else if (n >= 'A' && n <= 'F') return n - ('A' - 10);
-       else if (n >= 'a' && n <= 'f') return n - ('a' - 10);
-       return 0;
-}
-
-static uint8_t hex(const uint8_t *data, uint8_t *crc)
-{
-       uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);
-       *crc += val;
-       return val;
-}
-
-static int process_ihex(uint8_t *data, ssize_t size);
-static void file_record(struct ihex_binrec *record);
-static int output_records(int outfd);
-
-static int sort_records = 0;
-static int wide_records = 0;
-static int include_jump = 0;
-
-static int usage(void)
-{
-	fprintf(stderr, "ihex2fw: Convert ihex files into binary "
-		"representation for use by Linux kernel\n");
-	fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n");
-	fprintf(stderr, "       -w: wide records (16-bit length)\n");
-	fprintf(stderr, "       -s: sort records by address\n");
-	fprintf(stderr, "       -j: include records for CS:IP/EIP address\n");
-	return 1;
-}
-
-int main(int argc, char **argv)
-{
-	int infd, outfd;
-	struct stat st;
-	uint8_t *data;
-	int opt;
-
-	while ((opt = getopt(argc, argv, "wsj")) != -1) {
-		switch (opt) {
-		case 'w':
-			wide_records = 1;
-			break;
-		case 's':
-			sort_records = 1;
-			break;
-		case 'j':
-			include_jump = 1;
-			break;
-			return usage();
-		}
-	}
-
-	if (optind + 2 != argc)
-		return usage();
-
-	if (!strcmp(argv[optind], "-"))
-	    infd = 0;
-	else
-		infd = open(argv[optind], O_RDONLY);
-	if (infd == -1) {
-		fprintf(stderr, "Failed to open source file: %s",
-			strerror(errno));
-		return usage();
-	}
-	if (fstat(infd, &st)) {
-		perror("stat");
-		return 1;
-	}
-	data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, infd, 0);
-	if (data == MAP_FAILED) {
-		perror("mmap");
-		return 1;
-	}
-
-	if (!strcmp(argv[optind+1], "-"))
-	    outfd = 1;
-	else
-		outfd = open(argv[optind+1], O_TRUNC|O_CREAT|O_WRONLY, 0644);
-	if (outfd == -1) {
-		fprintf(stderr, "Failed to open destination file: %s",
-			strerror(errno));
-		return usage();
-	}
-	if (process_ihex(data, st.st_size))
-		return 1;
-
-	return output_records(outfd);
-}
-
-static int process_ihex(uint8_t *data, ssize_t size)
-{
-	struct ihex_binrec *record;
-	uint32_t offset = 0;
-	uint32_t data32;
-	uint8_t type, crc = 0, crcbyte = 0;
-	int i, j;
-	int line = 1;
-	int len;
-
-	i = 0;
-next_record:
-	/* search for the start of record character */
-	while (i < size) {
-		if (data[i] == '\n') line++;
-		if (data[i++] == ':') break;
-	}
-
-	/* Minimum record length would be about 10 characters */
-	if (i + 10 > size) {
-		fprintf(stderr, "Can't find valid record at line %d\n", line);
-		return -EINVAL;
-	}
-
-	len = hex(data + i, &crc); i += 2;
-	if (wide_records) {
-		len <<= 8;
-		len += hex(data + i, &crc); i += 2;
-	}
-	record = malloc((sizeof (*record) + len + 3) & ~3);
-	if (!record) {
-		fprintf(stderr, "out of memory for records\n");
-		return -ENOMEM;
-	}
-	memset(record, 0, (sizeof(*record) + len + 3) & ~3);
-	record->len = len;
-
-	/* now check if we have enough data to read everything */
-	if (i + 8 + (record->len * 2) > size) {
-		fprintf(stderr, "Not enough data to read complete record at line %d\n",
-			line);
-		return -EINVAL;
-	}
-
-	record->addr  = hex(data + i, &crc) << 8; i += 2;
-	record->addr |= hex(data + i, &crc); i += 2;
-	type = hex(data + i, &crc); i += 2;
-
-	for (j = 0; j < record->len; j++, i += 2)
-		record->data[j] = hex(data + i, &crc);
-
-	/* check CRC */
-	crcbyte = hex(data + i, &crc); i += 2;
-	if (crc != 0) {
-		fprintf(stderr, "CRC failure at line %d: got 0x%X, expected 0x%X\n",
-			line, crcbyte, (unsigned char)(crcbyte-crc));
-		return -EINVAL;
-	}
-
-	/* Done reading the record */
-	switch (type) {
-	case 0:
-		/* old style EOF record? */
-		if (!record->len)
-			break;
-
-		record->addr += offset;
-		file_record(record);
-		goto next_record;
-
-	case 1: /* End-Of-File Record */
-		if (record->addr || record->len) {
-			fprintf(stderr, "Bad EOF record (type 01) format at line %d",
-				line);
-			return -EINVAL;
-		}
-		break;
-
-	case 2: /* Extended Segment Address Record (HEX86) */
-	case 4: /* Extended Linear Address Record (HEX386) */
-		if (record->addr || record->len != 2) {
-			fprintf(stderr, "Bad HEX86/HEX386 record (type %02X) at line %d\n",
-				type, line);
-			return -EINVAL;
-		}
-
-		/* We shouldn't really be using the offset for HEX86 because
-		 * the wraparound case is specified quite differently. */
-		offset = record->data[0] << 8 | record->data[1];
-		offset <<= (type == 2 ? 4 : 16);
-		goto next_record;
-
-	case 3: /* Start Segment Address Record */
-	case 5: /* Start Linear Address Record */
-		if (record->addr || record->len != 4) {
-			fprintf(stderr, "Bad Start Address record (type %02X) at line %d\n",
-				type, line);
-			return -EINVAL;
-		}
-
-		memcpy(&data32, &record->data[0], sizeof(data32));
-		data32 = htonl(data32);
-		memcpy(&record->data[0], &data32, sizeof(data32));
-
-		/* These records contain the CS/IP or EIP where execution
-		 * starts. If requested output this as a record. */
-		if (include_jump)
-			file_record(record);
-		goto next_record;
-
-	default:
-		fprintf(stderr, "Unknown record (type %02X)\n", type);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static struct ihex_binrec *records;
-
-static void file_record(struct ihex_binrec *record)
-{
-	struct ihex_binrec **p = &records;
-
-	while ((*p) && (!sort_records || (*p)->addr < record->addr))
-		p = &((*p)->next);
-
-	record->next = *p;
-	*p = record;
-}
-
-static int output_records(int outfd)
-{
-	unsigned char zeroes[6] = {0, 0, 0, 0, 0, 0};
-	struct ihex_binrec *p = records;
-
-	while (p) {
-		uint16_t writelen = (p->len + 9) & ~3;
-
-		p->addr = htonl(p->addr);
-		p->len = htons(p->len);
-		if (write(outfd, &p->addr, writelen) != writelen)
-			return 1;
-		p = p->next;
-	}
-	/* EOF record is zero length, since we don't bother to represent
-	   the type field in the binary version */
-	if (write(outfd, zeroes, 6) != 6)
-		return 1;
-	return 0;
-}
diff --git a/helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.HEX b/helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.HEX
deleted file mode 100644
index 6fcf02bb4..000000000
--- a/helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.HEX
+++ /dev/null
@@ -1,83 +0,0 @@
-:03000000020200F9
-:0400230002055F0073
-:0400430002010000B6
-:050030000000000000CB
-:10010000020296000200000002000000020000004F
-:1001100002000000020000000200000002000000D7
-:1001200002000000020000000204610002048900D5
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC7402907F9DF07400907FC0
-:1002300097F07486907F9EF0907F957403F0907F86
-:10024000AFE0D2E0F07401907FABF0907FAEF09021
-:100250007FAC7404F0907FAD7404F0907FC9F074AB
-:1002600084907F98F07400F59875C8307B059120D4
-:10027000D2CA759850D2E8D2AFD2AC7400F586904D
-:100280007FD67402F0792E7A007B00DBFEDAFAD991
-:10029000F67406F080FEC086C082C083C084C0852C
-:1002A000C0E0E591C2E4F591907FAB7401F0907FDE
-:1002B000E8E0F9A3E0FAA3E0FBA3E0FCE95460B4B2
-:1002C0000003020339B4406EBA000B12042040034D
-:1002D00002040202040ABA010302040ABA02030277
-:1002E000040ABA0303020444BA041EBB000A907F46
-:1002F00095E04402F0020402907F98E054FDF090F3
-:100300007F95E054FDF0020402BA050302040ABA24
-:100310000619BB0008E533D395320203DEBB0108A2
-:10032000E532C395330203DE02040ABA07058B34B3
-:1003300002040202040A02040ABA0020B9801090E2
-:100340007F00E4F0A3F0907FB57402F0020402B9DC
-:10035000820280EBB9810280E602040ABA010FBB77
-:10036000000302040ABB010302040202040ABA03E6
-:100370000FBB000302040ABB010302040202040AC9
-:10038000BA0656BC010F907FD47406F0907FD574E6
-:1003900012F0020402BC0212BB006F907FD47406FC
-:1003A000F0907FD57424F0020402BC03297404C3C6
-:1003B0009B40576055EB2B9006442582F5827400D4
-:1003C0003583F583E0F9A3E0FA907FD4E9F0907FDC
-:1003D000D5EAF002040202040ABA080F7401907F01
-:1003E00000F07401907FB5F0020402BA0903020420
-:1003F00002BA0A0574000203DEBA0B030204020209
-:10040000040A907FB47402F08009907FB4E0440144
-:10041000F08000D0E0D085D084D083D082D08632E6
-:10042000EB20E71EC3940A5019EB2324FEF58274D7
-:10043000053400F583E0F5CBF5CDA3E0F5CAF5CCA6
-:10044000C322D322B94111EB64FF5484FB907F98FF
-:10045000E0547B4BF0020402907F9BE064FF0203B8
-:10046000DEC086C082C083C084C085C0E0E591C282
-:10047000E4F591907FA97404F01205A0D0E0D08536
-:10048000D084D083D082D08632C086C082C083C060
-:1004900084C085C0E0E591C2E4F591907FAA740420
-:1004A000F0907FC9E0F9E4F586907DC075851085F0
-:1004B0003284E005860584F0E584B53302800905C1
-:1004C000320586A3D9EC8000907FC9F0B131D0E02D
-:1004D000D085D084D083D082D08632E4F586907FD8
-:1004E000BCE020E14B907D00E532F0A3E533F0A3C2
-:1004F000E530F0A3E531F0A3E430000104F0A305FA
-:10050000869010007910E0A30586F0A30586D9F641
-:10051000058674FCF0A305869011007910E0A30510
-:1005200086F0A30586D9F6E4F586907FBD7426F0A3
-:1005300022200013E532B53301220533758310857F
-:100540003382E0F599D2007400B5340122E533D34B
-:100550009532C3953440F5753400D2010205A0C030
-:1005600086C082C083C084C085C0E0309907C2992C
-:10057000C20012053430980512058AC298D0E0D026
-:1005800085D084D083D082D0863275831185308225
-:100590000582E599F0E582B53101220530B1A0224E
-:1005A000907FB8E020E138200136E530B5310122F6
-:1005B000E4F5867583110586907E00F0A3058679A3
-:1005C00001E530B5310280100531853182E00586C4
-:1005D000F0A3058609B940E9907FB9E96001F022EE
-:1005E000C201E4F586907E007401F0A37402F090DD
-:1005F0007FB9F022C299F5993099FDC29922E55E42
-:10060000F63CFD8FFEC8FF64FFB2FFD9FFEDFFF39C
-:10061000FFFA12010001FFFFFF40CD06040189AB84
-:1006200001020301090220000101008032090400D7
-:100630000002FFFFFF0007058203400001070502DB
-:1006400002400000064C0650067206A0040300009B
-:100650002203410043004D00450020007500730057
-:100660006200200077006900640067006500740084
-:1006700073002E03410043004D004500200055004B
-:1006800053004200200073006500720069006100A1
-:100690006C0020007700690064006700650074004A
-:0606A000060334003700E0
-:00000001FF
diff --git a/helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.S b/helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.S
deleted file mode 100644
index f3acc197a..000000000
--- a/helpers/DATA/linux/firmware/keyspan_pda/keyspan_pda.S
+++ /dev/null
@@ -1,1124 +0,0 @@
-/*  $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- * 
- *  Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- *  the EzUSB microcontroller.
- * 
- *  (C) Copyright 2000 Brian Warner <warner@lothar.com>
- * 
- * 	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
- * 	the Free Software Foundation; either version 2 of the License, or
- * 	(at your option) any later version.
- * 
- *  "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- *  company.
- * 
- *  This serial adapter is basically an EzUSB chip and an RS-232 line driver
- *  in a little widget that has a DB-9 on one end and a USB plug on the other.
- *  It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- *  as a baud-rate generator. The wiring is:
- *   PC0/RxD0 <- rxd (DB9 pin 2)         PC4 <- dsr pin 6
- *   PC1/TxD0 -> txd pin 3               PC5 <- ri  pin 9
- *   PC2      -> rts pin 7               PC6 <- dcd pin 1
- *   PC3      <- cts pin 8               PC7 -> dtr pin 4
- *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
- * 
- * THEORY OF OPERATION:
- *
- *   There are two 256-byte ring buffers, one for tx, one for rx.
- *
- *   EP2out is pure tx data. When it appears, the data is copied into the tx
- *   ring and serial transmission is started if it wasn't already running. The
- *   "tx buffer empty" interrupt may kick off another character if the ring
- *   still has data. If the host is tx-blocked because the ring filled up,
- *   it will request a "tx unthrottle" interrupt. If sending a serial character
- *   empties the ring below the desired threshold, we set a bit that will send
- *   up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- *   EP2in (interrupt) is used to send both rx chars and rx status messages
- *   (only "tx unthrottle" at this time) back up to the host. The first byte
- *   of the rx message indicates data (0) or status msg (1). Status messages
- *   are sent before any data.
- *
- *   Incoming serial characters are put into the rx ring by the serial
- *   interrupt, and the EP2in buffer sent if it wasn't already in transit.
- *   When the EP2in buffer returns, the interrupt prompts us to send more
- *   rx chars (or status messages) if they are pending.
- *
- *   Device control happens through "vendor specific" control messages on EP0.
- *   All messages are destined for the "Interface" (with the index always 0,
- *   so that if their two-port device might someday use similar firmware, we
- *   can use index=1 to refer to the second port). The messages defined are:
- *
- *    bRequest = 0 : set baud/bits/parity
- *               1 : unused
- *               2 : reserved for setting HW flow control (CTSRTS)
- *               3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- *               4 : set break (on/off)
- *               5 : reserved for requesting interrupts on pin state change
- *               6 : query buffer room or chars in tx buffer
- *               7 : request tx unthrottle interrupt
- *
- *  The host-side driver is set to recognize the device ID values stashed in
- *  serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- *  start it running. This firmware will use EzUSB's "renumeration" trick by
- *  simulating a bus disconnect, then reconnect with a different device ID
- *  (encoded in the desc_device descriptor below). The host driver then
- *  recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- *  EzUSB Technical Reference Manual: <http://www.cypress.com/>
- *  8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- *   basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- *   use totally different registers!
- *  USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- *  AnchorChips, for making such an incredibly useful little microcontroller.
- *  KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- *           apart and trace with an ohmmeter.
- *
- * TODO:
- *  lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- *  control. Interrupting host upon change in DCD, etc, counting transitions.
- *  Need to find a safe device id to use (the one used by the Keyspan firmware
- *  under Windows would be ideal.. can anyone figure out what it is?). Parity.
- *  More baud rates. Oh, and the string-descriptor-length silicon bug
- *  workaround should be implemented, but I'm lazy, and the consequence is
- *  that the device name strings that show up in your kernel log will have
- *  lots of trailing binary garbage in them (appears as ????). Device strings
- *  should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- *  -Brian Warner <warner@lothar.com>
- *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTCCFG #0x7f95
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
-	.org 0
-	ljmp start
-	;; interrupt vectors
-	.org 23H
-	ljmp serial_int
-	.byte 0
-	
-	.org 43H
-	ljmp USB_Jump_Table
-	.byte 0			; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
-rx_ring_in:	.byte 0
-rx_ring_out:	.byte 0
-tx_ring_in:	.byte 0
-tx_ring_out:	.byte 0
-tx_unthrottle_threshold:	.byte 0
-		
-	.org 0x100H		; wants to be on a page boundary
-USB_Jump_Table:
-	ljmp	ISR_Sudav	; Setup Data Available
-	.byte 0
-	ljmp	0		; Start of Frame
-	.byte 0
-	ljmp	0		; Setup Data Loading
-	.byte 0
-	ljmp	0		; Global Suspend
-	.byte 	0
-	ljmp	0		; USB Reset  	
-	.byte	0
-	ljmp	0		; Reserved
-	.byte	0
-	ljmp	0		; End Point 0 In
-	.byte	0
-	ljmp	0		; End Point 0 Out
-	.byte	0
-	ljmp	0		; End Point 1 In
-	.byte	0
-	ljmp	0		; End Point 1 Out
-	.byte	0
-	ljmp	ISR_Ep2in
-	.byte	0
-	ljmp	ISR_Ep2out
-	.byte	0
-
-
-	.org 0x200
-		
-start:	mov SP,STACK-1 ; set stack
-	;; clear local variables
-	clr a
-	mov tx_ring_in, a
-	mov tx_ring_out, a
-	mov rx_ring_in, a
-	mov rx_ring_out, a
-	mov tx_unthrottle_threshold, a
-	clr TX_RUNNING
-	clr DO_TX_UNTHROTTLE
-	
-	;; clear fifo with "fe"
-	mov r1, 0
-	mov a, #0xfe
-	mov dptr, #tx_ring
-clear_tx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_tx_ring_loop
-
-	mov a, #0xfd
-	mov dptr, #rx_ring
-clear_rx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-	;; set OEB.1
-	mov a, #02H
-	mov dptr,OEB
-	movx @dptr,a
-	;; clear PB1
-	mov a, #00H
-	mov dptr,OUTB
-	movx @dptr,a
-	;; set OEC.[127]
-	mov a, #0x86
-	mov dptr,OEC
-	movx @dptr,a
-	;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
-	mov dptr, PORTCCFG
-	mov a, #0x03
-	movx @dptr, a
-	
-	;; set up interrupts, autovectoring
-	mov dptr, USBBAV
-	movx a,@dptr
-	setb acc.0		; AVEN bit to 0
-	movx @dptr, a
-
-	mov a,#0x01		; enable SUDAV:	setup data available (for ep0)
-	mov dptr, USBIRQ
-	movx @dptr, a		; clear SUDAVI
-	mov dptr, USBIEN
-	movx @dptr, a
-	
-	mov dptr, IN07IEN
-	mov a,#0x04		; enable IN2 int
-	movx @dptr, a
-	
-	mov dptr, OUT07IEN
-	mov a,#0x04		; enable OUT2 int
-	movx @dptr, a
-	mov dptr, OUT2BC
-	movx @dptr, a		; arm OUT2
-
-	mov a, #0x84		; turn on RTS, DTR
-	mov dptr,OUTC
-	movx @dptr, a
-	;; setup the serial port. 9600 8N1.
-	mov a,#01010011		; mode 1, enable rx, clear int
-	mov SCON, a
-	;;  using timer2, in 16-bit baud-rate-generator mode
-	;;   (xtal 12MHz, internal fosc 24MHz)
-	;;  RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
-	;;  57600: 0xFFF2.F, say 0xFFF3
-	;;   9600: 0xFFB1.E, say 0xFFB2
-	;;    300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
-	mov r3, #5
-	acall set_baud
-	setb TR2
-	mov SCON, #050h
-	
-#if 0
-	mov r1, #0x40
-	mov a, #0x41
-send:	
-	mov SBUF, a
-	inc a
-	anl a, #0x3F
-	orl a, #0x40
-;	xrl a, #0x02
-wait1:	
-	jnb TI, wait1
-	clr TI
-	djnz r1, send
-;done:	sjmp done
-
-#endif
-	
-	setb EUSB
-	setb EA
-	setb ES0
-	;acall dump_stat
-
-	;; hey, what say we RENUMERATE! (TRM p.62)
-	mov a, #0
-	mov dps, a
-	mov dptr, USBCS
-	mov a, #0x02		; DISCON=0, DISCOE=0, RENUM=1
-	movx @dptr, a
-	;; now presence pin is floating, simulating disconnect. wait 0.5s
-	mov r1, #46
-renum_wait1:
-	mov r2, #0
-renum_wait2:
-	mov r3, #0
-renum_wait3:
-	djnz r3, renum_wait3
-	djnz r2, renum_wait2
-	djnz r1, renum_wait1	; wait about n*(256^2) 6MHz clocks
-	mov a, #0x06		; DISCON=0, DISCOE=1, RENUM=1
-	movx @dptr, a
-	;; we are back online. the host device will now re-query us
-	
-	
-main:	sjmp main
-
-	
-
-ISR_Sudav:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
-	movx @dptr,a
-
-	;; get request type
-	mov dptr, SETUPDAT
-	movx a, @dptr
-	mov r1, a		; r1 = bmRequestType
-	inc dptr
-	movx a, @dptr
-	mov r2, a		; r2 = bRequest
-	inc dptr
-	movx a, @dptr
-	mov r3, a		; r3 = wValueL
-	inc dptr
-	movx a, @dptr
-	mov r4, a		; r4 = wValueH
-
-	;; main switch on bmRequest.type: standard or vendor
-	mov a, r1
-	anl a, #0x60
-	cjne a, #0x00, setup_bmreq_type_not_standard
-	;; standard request: now main switch is on bRequest
-	ljmp setup_bmreq_is_standard
-	
-setup_bmreq_type_not_standard:	
-	;; a still has bmreq&0x60
-	cjne a, #0x40, setup_bmreq_type_not_vendor
-	;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
-	;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
-	cjne r2, #0x00, setup_ctrl_not_00
-	;; 00 is set baud, wValue[0] has baud rate index
-	lcall set_baud		; index in r3, carry set if error
-	jc setup_bmreq_type_not_standard__do_stall
-	ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
-	ljmp setup_stall
-setup_ctrl_not_00:
-	cjne r2, #0x01, setup_ctrl_not_01
-	;; 01 is reserved for set bits (parity). TODO
-	ljmp setup_stall
-setup_ctrl_not_01:
-	cjne r2, #0x02, setup_ctrl_not_02
-	;; 02 is set HW flow control. TODO
-	ljmp setup_stall
-setup_ctrl_not_02:
-	cjne r2, #0x03, setup_ctrl_not_03
-	;; 03 is control pins (RTS, DTR).
-	ljmp control_pins	; will jump to setup_done_ack,
-				;  or setup_return_one_byte
-setup_ctrl_not_03:
-	cjne r2, #0x04, setup_ctrl_not_04
-	;; 04 is send break (really "turn break on/off"). TODO
-	cjne r3, #0x00, setup_ctrl_do_break_on
-	;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	orl a, #0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_do_break_on:
-	;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
-	mov dptr, OUTC
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_not_04:
-	cjne r2, #0x05, setup_ctrl_not_05
-	;; 05 is set desired interrupt bitmap. TODO
-	ljmp setup_stall
-setup_ctrl_not_05:
-	cjne r2, #0x06, setup_ctrl_not_06
-	;; 06 is query room
-	cjne r3, #0x00, setup_ctrl_06_not_00
-	;; 06, wValue[0]=0 is query write_room
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in	; out-1-in = 255 - (in-out)
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
-	cjne r3, #0x01, setup_ctrl_06_not_01
-	;; 06, wValue[0]=1 is query chars_in_buffer
-	mov a, tx_ring_in
-	clr c
-	subb a, tx_ring_out	; in-out
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_01:	
-	ljmp setup_stall
-setup_ctrl_not_06:
-	cjne r2, #0x07, setup_ctrl_not_07
-	;; 07 is request tx unthrottle interrupt
-	mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
-	ljmp setup_done_ack
-setup_ctrl_not_07:
-	ljmp setup_stall
-	
-setup_bmreq_type_not_vendor:
-	ljmp setup_stall
-
-
-setup_bmreq_is_standard:	
-	cjne r2, #0x00, setup_breq_not_00
-	;; 00:	Get_Status (sub-switch on bmRequestType: device, ep, int)
-	cjne r1, #0x80, setup_Get_Status_not_device
-	;; Get_Status(device)
-	;;  are we self-powered? no. can we do remote wakeup? no
-	;;   so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
-	mov dptr, IN0BUF
-	clr a
-	movx @dptr, a
-	inc dptr
-	movx @dptr, a
-	mov dptr, IN0BC
-	mov a, #2
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Status_not_device:
-	cjne r1, #0x82, setup_Get_Status_not_endpoint
-	;; Get_Status(endpoint)
-	;;  must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
-	;; for now: cheat. TODO
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
-	cjne r1, #0x81, setup_Get_Status_not_interface
-	;; Get_Status(interface): return two zeros
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:	
-	ljmp setup_stall
-	
-setup_breq_not_00:
-	cjne r2, #0x01, setup_breq_not_01
-	;; 01:	Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Clear_Feature_not_stall
-	;; Clear_Feature(stall). should clear a stall bit. TODO
-	ljmp setup_stall
-setup_Clear_Feature_not_stall:
-	cjne r3, #0x01, setup_Clear_Feature_not_rwake
-	;; Clear_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_01:
-	cjne r2, #0x03, setup_breq_not_03
-	;; 03:	Set_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Set_Feature_not_stall
-	;; Set_Feature(stall). Should set a stall bit. TODO
-	ljmp setup_stall
-setup_Set_Feature_not_stall:
-	cjne r3, #0x01, setup_Set_Feature_not_rwake
-	;; Set_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_03:	
-	cjne r2, #0x06, setup_breq_not_06
-	;; 06:	Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
-	cjne r4, #0x01, setup_Get_Descriptor_not_device
-	;; Get_Descriptor(device)
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_device)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_device)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
-	cjne r4, #0x02, setup_Get_Descriptor_not_config
-	;; Get_Descriptor(config[n])
-	cjne r3, #0x00, setup_stall; only handle n==0
-	;; Get_Descriptor(config[0])
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_config1)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_config1)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
-	cjne r4, #0x03, setup_Get_Descriptor_not_string
-	;; Get_Descriptor(string[wValueL])
-	;;  if (wValueL >= maxstrings) stall
-	mov a, #((desc_strings_end-desc_strings)/2)
-	clr c
-	subb a,r3		; a=4, r3 = 0..3 . if a<=0 then stall
-	jc  setup_stall
-	jz  setup_stall
-	mov a, r3
-	add a, r3		; a = 2*wValueL
-	mov dptr, #desc_strings
-	add a, dpl
-	mov dpl, a
-	mov a, #0
-	addc a, dph
-	mov dph, a		; dph = desc_strings[a]. big endian! (handy)
-	;; it looks like my adapter uses a revision of the EZUSB that
-	;; contains "rev D errata number 8", as hinted in the EzUSB example
-	;; code. I cannot find an actual errata description on the Cypress
-	;; web site, but from the example code it looks like this bug causes
-	;; the length of string descriptors to be read incorrectly, possibly
-	;; sending back more characters than the descriptor has. The workaround
-	;; is to manually send out all of the data. The consequence of not
-	;; using the workaround is that the strings gathered by the kernel
-	;; driver are too long and are filled with trailing garbage (including
-	;; leftover strings). Writing this out by hand is a nuisance, so for
-	;; now I will just live with the bug.
-	movx a, @dptr
-	mov r1, a
-	inc dptr
-	movx a, @dptr
-	mov r2, a
-	mov dptr, SUDPTRH
-	mov a, r1
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, r2
-	movx @dptr, a
-	;; done
-	ljmp setup_done_ack
-	
-setup_Get_Descriptor_not_string:
-	ljmp setup_stall
-	
-setup_breq_not_06:
-	cjne r2, #0x08, setup_breq_not_08
-	;; Get_Configuration. always 1. return one byte.
-	;; this is reusable
-	mov a, #1
-setup_return_one_byte:	
-	mov dptr, IN0BUF
-	movx @dptr, a
-	mov a, #1
-	mov dptr, IN0BC
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_breq_not_08:
-	cjne r2, #0x09, setup_breq_not_09
-	;; 09: Set_Configuration. ignored.
-	ljmp setup_done_ack
-setup_breq_not_09:
-	cjne r2, #0x0a, setup_breq_not_0a
-	;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
-	;;  since we only have one interface, ignore wIndexL, return a 0
-	mov a, #0
-	ljmp setup_return_one_byte
-setup_breq_not_0a:
-	cjne r2, #0x0b, setup_breq_not_0b
-	;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
-	ljmp setup_done_ack
-setup_breq_not_0b:
-	ljmp setup_stall
-
-		
-setup_done_ack:	
-	;; now clear HSNAK
-	mov dptr, EP0CS
-	mov a, #0x02
-	movx @dptr, a
-	sjmp setup_done
-setup_stall:	
-	;; unhandled. STALL
-	;EP0CS |= bmEPSTALL
-	mov dptr, EP0CS
-	movx a, @dptr
-	orl a, EP0STALLbit
-	movx @dptr, a
-	sjmp setup_done
-	
-setup_done:	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-;;; ==============================================================
-	
-set_baud:			; baud index in r3
-	;; verify a < 10
-	mov a, r3
-	jb ACC.7, set_baud__badbaud
-	clr c
-	subb a, #10
-	jnc set_baud__badbaud
-	mov a, r3
-	rl a			; a = index*2
-	add a, #LOW(baud_table)
-	mov dpl, a
-	mov a, #HIGH(baud_table)
-	addc a, #0
-	mov dph, a
-	;; TODO: shut down xmit/receive
-	;; TODO: wait for current xmit char to leave
-	;; TODO: shut down timer to avoid partial-char glitch
-	movx a,@dptr		; BAUD_HIGH
-	mov RCAP2H, a
-	mov TH2, a
-	inc dptr
-	movx a,@dptr		; BAUD_LOW
-	mov RCAP2L, a
-	mov TL2, a
-	;; TODO: restart xmit/receive
-	;; TODO: reenable interrupts, resume tx if pending
-	clr c			; c=0: success
-	ret
-set_baud__badbaud:
-	setb c			; c=1: failure
-	ret
-	
-;;; ==================================================
-control_pins:
-	cjne r1, #0x41, control_pins_in
-control_pins_out:
-	mov a, r3 ; wValue[0] holds new bits:	b7 is new DTR, b2 is new RTS
-	xrl a, #0xff		; 1 means active, 0V, +12V ?
-	anl a, #0x84
-	mov r3, a
-	mov dptr, OUTC
-	movx a, @dptr		; only change bits 7 and 2
-	anl a, #0x7b		; ~0x84
-	orl a, r3
-	movx @dptr, a		; other pins are inputs, bits ignored
-	ljmp setup_done_ack
-control_pins_in:
-	mov dptr, PINSC
-	movx a, @dptr
-	xrl a, #0xff
-	ljmp setup_return_one_byte
-
-;;; ========================================
-	
-ISR_Ep2in:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-	lcall start_in
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-ISR_Ep2out:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-
-	;; copy data into buffer. for now, assume we will have enough space
-	mov dptr, OUT2BC	; get byte count
-	movx a,@dptr
-	mov r1, a
-	clr a
-	mov dps, a
-	mov dptr, OUT2BUF	; load DPTR0 with source
-	mov dph1, #HIGH(tx_ring)	; load DPTR1 with target
-	mov dpl1, tx_ring_in
-OUT_loop:
-	movx a,@dptr		; read
-	inc dps			; switch to DPTR1: target
-	inc dpl1		; target = tx_ring_in+1
-	movx @dptr,a		; store
-	mov a,dpl1
-	cjne a, tx_ring_out, OUT_no_overflow
-	sjmp OUT_overflow
-OUT_no_overflow:	
-	inc tx_ring_in		; tx_ring_in++
-	inc dps			; switch to DPTR0: source
-	inc dptr
-	djnz r1, OUT_loop
-	sjmp OUT_done
-OUT_overflow:
-	;; signal overflow
-	;; fall through
-OUT_done:	
-	;; ack
-	mov dptr,OUT2BC
-	movx @dptr,a
-
-	;; start tx
-	acall maybe_start_tx
-	;acall dump_stat
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-dump_stat:
-	;; fill in EP4in with a debugging message:
-	;;   tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
-	;;   tx_active
-	;;   tx_ring[0..15]
-	;;   0xfc
-	;;   rx_ring[0..15]
-	clr a
-	mov dps, a
-	
-	mov dptr, IN4CS
-	movx a, @dptr
-	jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
-	mov dptr, IN4BUF
-	
-	mov a, tx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, tx_ring_out
-	movx @dptr, a
-	inc dptr
-
-	mov a, rx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, rx_ring_out
-	movx @dptr, a
-	inc dptr
-	
-	clr a
-	jnb TX_RUNNING, dump_stat__no_tx_running
-	inc a
-dump_stat__no_tx_running:
-	movx @dptr, a
-	inc dptr
-	;; tx_ring[0..15]
-	inc dps
-	mov dptr, #tx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__tx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__tx_ring_loop
-	inc dps
-	
-	mov a, #0xfc
-	movx @dptr, a
-	inc dptr
-	
-	;; rx_ring[0..15]
-	inc dps
-	mov dptr, #rx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__rx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__rx_ring_loop
-	
-	;; now send it
-	clr a
-	mov dps, a
-	mov dptr, IN4BC
-	mov a, #38
-	movx @dptr, a
-dump_stat__done:	
-	ret
-		
-;;; ============================================================
-	
-maybe_start_tx:
-	;; make sure the tx process is running.
-	jb TX_RUNNING, start_tx_done
-start_tx:
-	;; is there work to be done?
-	mov a, tx_ring_in
-	cjne a,tx_ring_out, start_tx__work
-	ret			; no work
-start_tx__work:	
-	;; tx was not running. send the first character, setup the TI int
-	inc tx_ring_out		; [++tx_ring_out]
-	mov dph, #HIGH(tx_ring)
-	mov dpl, tx_ring_out
-	movx a, @dptr
-	mov sbuf, a
-	setb TX_RUNNING
-start_tx_done:
-	;; can we unthrottle the host tx process?
-	;;  step 1: do we care?
-	mov a, #0
-	cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
-	;; nope
-start_tx_really_done:
-	ret
-start_tx__maybe_unthrottle_tx:
-	;;  step 2: is there now room?
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in
-	;; a is now write_room. If thresh >= a, we can unthrottle
-	clr c
-	subb a, tx_unthrottle_threshold
-	jc start_tx_really_done	; nope
-	;; yes, we can unthrottle. remove the threshold and mark a request
-	mov tx_unthrottle_threshold, #0
-	setb DO_TX_UNTHROTTLE
-	;; prod rx, which will actually send the message when in2 becomes free
-	ljmp start_in
-	
-
-serial_int:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	jnb TI, serial_int__not_tx
-	;; tx finished. send another character if we have one
-	clr TI			; clear int
-	clr TX_RUNNING
-	lcall start_tx
-serial_int__not_tx:
-	jnb RI, serial_int__not_rx
-	lcall get_rx_char
-	clr RI			; clear int
-serial_int__not_rx:	
-	;; return
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-get_rx_char:
-	mov dph, #HIGH(rx_ring)
-	mov dpl, rx_ring_in
-	inc dpl			; target = rx_ring_in+1
-	mov a, sbuf
-	movx @dptr, a
-	;; check for overflow before incrementing rx_ring_in
-	mov a, dpl
-	cjne a, rx_ring_out, get_rx_char__no_overflow
-	;; signal overflow
-	ret
-get_rx_char__no_overflow:	
-	inc rx_ring_in
-	;; kick off USB INpipe
-	acall start_in
-	ret
-
-start_in:
-	;; check if the inpipe is already running.
-	mov dptr, IN2CS
-	movx a, @dptr
-	jb acc.1, start_in__done; int will handle it
-	jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
-	;; see if there is any work to do. a serial interrupt might occur
-	;; during this sequence?
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_in__have_work
-	ret			; nope
-start_in__have_work:	
-	;; now copy as much data as possible into the pipe. 63 bytes max.
-	clr a
-	mov dps, a
-	mov dph, #HIGH(rx_ring)	; load DPTR0 with source
-	inc dps
-	mov dptr, IN2BUF	; load DPTR1 with target
-	movx @dptr, a		; in[0] signals that rest of IN is rx data
-	inc dptr
-	inc dps
-	;; loop until we run out of data, or we have copied 64 bytes
-	mov r1, #1		; INbuf size counter
-start_in__loop:
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
-	sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
-	inc rx_ring_out
-	mov dpl, rx_ring_out
-	movx a, @dptr
-	inc dps
-	movx @dptr, a		; write into IN buffer
-	inc dptr
-	inc dps
-	inc r1
-	cjne r1, #64, start_in__loop; loop
-start_in__kick:
-	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
-	;; kick off IN
-	mov dptr, IN2BC
-	mov a, r1
-	jz start_in__done
-	movx @dptr, a
-	;; done
-start_in__done:
-	;acall dump_stat
-	ret
-start_in__do_tx_unthrottle:
-	;; special sequence: send a tx unthrottle message
-	clr DO_TX_UNTHROTTLE
-	clr a
-	mov dps, a
-	mov dptr, IN2BUF
-	mov a, #1
-	movx @dptr, a
-	inc dptr
-	mov a, #2
-	movx @dptr, a
-	mov dptr, IN2BC
-	movx @dptr, a
-	ret
-	
-putchar:
-	clr TI
-	mov SBUF, a
-putchar_wait:
-	jnb TI, putchar_wait
-	clr TI
-	ret
-
-	
-baud_table:			; baud_high, then baud_low
-	;; baud[0]: 110
-	.byte BAUD_HIGH(110)
-	.byte BAUD_LOW(110)
-	;; baud[1]: 300
-	.byte BAUD_HIGH(300)
-	.byte BAUD_LOW(300)
-	;; baud[2]: 1200
-	.byte BAUD_HIGH(1200)
-	.byte BAUD_LOW(1200)
-	;; baud[3]: 2400
-	.byte BAUD_HIGH(2400)
-	.byte BAUD_LOW(2400)
-	;; baud[4]: 4800
-	.byte BAUD_HIGH(4800)
-	.byte BAUD_LOW(4800)
-	;; baud[5]: 9600
-	.byte BAUD_HIGH(9600)
-	.byte BAUD_LOW(9600)
-	;; baud[6]: 19200
-	.byte BAUD_HIGH(19200)
-	.byte BAUD_LOW(19200)
-	;; baud[7]: 38400
-	.byte BAUD_HIGH(38400)
-	.byte BAUD_LOW(38400)
-	;; baud[8]: 57600
-	.byte BAUD_HIGH(57600)
-	.byte BAUD_LOW(57600)
-	;; baud[9]: 115200
-	.byte BAUD_HIGH(115200)
-	.byte BAUD_LOW(115200)
-
-desc_device:
-	.byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
-	.byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-	
-desc_config1:
-	.byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
-	.byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
-	.byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
-	.byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
-	.word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids:	.byte string_langids_end-string_langids
-	.byte 3
-	.word 0
-string_langids_end:
-
-	;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
-	;; *that* is a pain in the ass to encode. And they are little-endian
-	;; too. Use this perl snippet to get the bytecodes:
-	/* while (<>) {
-	    @c = split(//);
-	    foreach $c (@c) {
-	     printf("0x%02x, 0x00, ", ord($c));
-	    }
-	   }
-	*/
-
-string_mfg:	.byte string_mfg_end-string_mfg
-	.byte 3
-;	.byte "ACME usb widgets"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-	
-string_product:	.byte string_product_end-string_product
-	.byte 3
-;	.byte "ACME USB serial widget"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-	
-string_serial:	.byte string_serial_end-string_serial
-	.byte 3
-;	.byte "47"
-	.byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-		
-;;; ring buffer memory
-	;; tx_ring_in+1 is where the next input byte will go
-	;; [tx_ring_out] has been sent
-	;; if tx_ring_in == tx_ring_out, theres no work to do
-	;; there are (tx_ring_in - tx_ring_out) chars to be written
-	;; dont let _in lap _out
-	;;   cannot inc if tx_ring_in+1 == tx_ring_out
-	;;  write [tx_ring_in+1] then tx_ring_in++
-	;;   if (tx_ring_in+1 == tx_ring_out), overflow
-	;;   else tx_ring_in++
-	;;  read/send [tx_ring_out+1], then tx_ring_out++
-
-	;; rx_ring_in works the same way
-	
-	.org 0x1000
-tx_ring:
-	.skip 0x100		; 256 bytes
-rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
diff --git a/helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.HEX b/helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.HEX
deleted file mode 100644
index e9b00d702..000000000
--- a/helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.HEX
+++ /dev/null
@@ -1,87 +0,0 @@
-:03000000020200F9
-:0400230002059B0037
-:050030000000000000CB
-:0400430002010000B6
-:100100000202BA000200000002000000020000002B
-:1001100002000000020000000200000002000000D7
-:100120000200000002000000020485000204B90081
-:1002000075815EE4F532F533F530F531F534C20031
-:10021000C201A90074FE901000F0A3D9FC74FD90F7
-:100220001100F0A3D9FC907F9474BFF0907F957477
-:10023000EFF07410907F9EF07400907F98F07440FF
-:10024000907F9DF07400907F97F07482907F9EF075
-:10025000907F957403F0907FAFE0D2E0F07401904E
-:100260007FABF0907FAEF0907FAC7404F0907FADE8
-:100270007404F0907FC9F07407907FAFF074209001
-:100280007F9CF07480907F98F07453F59875C83017
-:100290007B059144D2CA759850D2E8D2AFD2AC74E3
-:1002A00000F586907FD67402F0792E7A007B00DB11
-:1002B000FEDAFAD9F67406F080FEC086C082C083EA
-:1002C000C084C085C0E0E591C2E4F591907FAB7435
-:1002D00001F0907FE8E0F9A3E0FAA3E0FBA3E0FCE3
-:1002E000E95460B4000302035DB4406EBA000B121F
-:1002F0000444400302042602042EBA010302042E21
-:10030000BA020302042EBA0303020468BA041EBB35
-:10031000000A907F95E04402F0020426907F98E066
-:1003200054FDF0907F95E054FDF0020426BA0503D9
-:1003300002042EBA0619BB0008E533D39532020435
-:1003400002BB0108E532C3953302040202042EBA4F
-:1003500007058B3402042602042E02042EBA002064
-:10036000B98010907F00E4F0A3F0907FB57402F0A4
-:10037000020426B9820280EBB9810280E602042ED3
-:10038000BA010FBB000302042EBB010302042602C4
-:10039000042EBA030FBB000302042EBB01030204A8
-:1003A0002602042EBA0656BC010F907FD47406F0C4
-:1003B000907FD5745AF0020426BC0212BB006F90E5
-:1003C0007FD47406F0907FD5746CF0020426BC03D1
-:1003D000297404C39B40576055EB2B90068C2582F3
-:1003E000F58274003583F583E0F9A3E0FA907FD4B9
-:1003F000E9F0907FD5EAF002042602042EBA080F35
-:100400007401907F00F07401907FB5F0020426BA69
-:100410000903020426BA0A057400020402BA0B0397
-:1004200002042602042E907FB47402F08009907FAB
-:10043000B4E04401F08000D0E0D085D084D083D0F7
-:1004400082D08632EB20E71EC3940A5019EB232496
-:1004500046F58274063400F583E0F5CBF5CDA3E0D4
-:10046000F5CAF5CCC322D322B94111EB64FF548005
-:10047000FB907F98E0547F4BF0020426907F9BE036
-:1004800064FF020402C086C082C083C084C085C0ED
-:10049000E0E591C2E4F591907FA97404F074209096
-:1004A0007F9CF01205DC7420907F9CF0D0E0D0851A
-:1004B000D084D083D082D08632C086C082C083C030
-:1004C00084C085C0E07410907F9CF0E591C2E4F593
-:1004D00091907FAA7404F0907FC9E0F9E4F58690CA
-:1004E0007DC0758510853284E005860584F0E5843D
-:1004F000B53302800905320586A3D9EC8000907FD0
-:10050000C9F0B16D7420907F9CF0D0E0D085D0848C
-:10051000D083D082D08632E4F586907FBCE020E1A3
-:100520004B907D00E532F0A3E533F0A3E530F0A376
-:10053000E531F0A3E430000104F0A305869010003B
-:100540007910E0A30586F0A30586D9F6058674FC2C
-:10055000F0A305869011007910E0A30586F0A305AD
-:1005600086D9F6E4F586907FBD7426F0222000132C
-:10057000E532B53301220533758310853382E0F50A
-:1005800099D2007400B5340122E533D39532C39576
-:100590003440F5753400D2010205DCC086C082C04B
-:1005A00083C084C085C0E0309907C299C20012059B
-:1005B000703098051205C6C298D0E0D085D084D09E
-:1005C00083D082D086327583118530820582E59989
-:1005D000F0E582B53101220530B1DC227410907F44
-:1005E0009CF0907FB8E020E13E20013CE530B53141
-:1005F0000122E4F5867583110586907E00F0A3053F
-:10060000867901E530B5310280100531853182E00F
-:100610000586F0A3058609B940E97410907F9CF027
-:10062000907FB9E96001F022C201E4F586907E0076
-:100630007401F0A37402F0907FB9F022C299F59989
-:100640003099FDC29922E55EF63CFD8FFEC8FF643D
-:10065000FFB2FFD9FFEDFFF3FFFA12010001FFFF28
-:10066000FF40CD06040189AB01020301090220000D
-:1006700001010080320904000002FFFFFF000705AE
-:10068000820340000107050202400000069406981C
-:1006900006BA06E8040300002203410043004D00AF
-:1006A000450020007500730062002000770069009B
-:1006B000640067006500740073002E03410043006E
-:1006C0004D004500200055005300420020007300FB
-:1006D00065007200690061006C002000770069000D
-:0E06E0006400670065007400060334003700F4
-:00000001FF
diff --git a/helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.S b/helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.S
deleted file mode 100644
index 0b79bbf0a..000000000
--- a/helpers/DATA/linux/firmware/keyspan_pda/xircom_pgs.S
+++ /dev/null
@@ -1,1192 +0,0 @@
-/*  $Id: loop.s,v 1.23 2000/03/20 09:49:06 warner Exp $
- * 
- *  Firmware for the Keyspan PDA Serial Adapter, a USB serial port based on
- *  the EzUSB microcontroller.
- * 
- *  (C) Copyright 2000 Brian Warner <warner@lothar.com>
- * 
- * 	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
- * 	the Free Software Foundation; either version 2 of the License, or
- * 	(at your option) any later version.
- * 
- *  "Keyspan PDA Serial Adapter" is probably a copyright of Keyspan, the
- *  company.
- * 
- *  This serial adapter is basically an EzUSB chip and an RS-232 line driver
- *  in a little widget that has a DB-9 on one end and a USB plug on the other.
- *  It uses the EzUSB's internal UART0 (using the pins from Port C) and timer2
- *  as a baud-rate generator. The wiring is:
- *   PC0/RxD0 <- rxd (DB9 pin 2)         PC4 <- dsr pin 6
- *   PC1/TxD0 -> txd pin 3               PC5 <- ri  pin 9
- *   PC2      -> rts pin 7               PC6 <- dcd pin 1
- *   PC3      <- cts pin 8               PC7 -> dtr pin 4
- *   PB1 -> line driver standby
- *
- *  The EzUSB register constants below come from their excellent documentation
- *  and sample code (which used to be available at www.anchorchips.com, but
- *  that has now been absorbed into Cypress' site and the CD-ROM contents
- *  don't appear to be available online anymore). If we get multiple
- *  EzUSB-based drivers into the kernel, it might be useful to pull them out
- *  into a separate .h file.
- * 
- * THEORY OF OPERATION:
- *
- *   There are two 256-byte ring buffers, one for tx, one for rx.
- *
- *   EP2out is pure tx data. When it appears, the data is copied into the tx
- *   ring and serial transmission is started if it wasn't already running. The
- *   "tx buffer empty" interrupt may kick off another character if the ring
- *   still has data. If the host is tx-blocked because the ring filled up,
- *   it will request a "tx unthrottle" interrupt. If sending a serial character
- *   empties the ring below the desired threshold, we set a bit that will send
- *   up the tx unthrottle message as soon as the rx buffer becomes free.
- *
- *   EP2in (interrupt) is used to send both rx chars and rx status messages
- *   (only "tx unthrottle" at this time) back up to the host. The first byte
- *   of the rx message indicates data (0) or status msg (1). Status messages
- *   are sent before any data.
- *
- *   Incoming serial characters are put into the rx ring by the serial
- *   interrupt, and the EP2in buffer sent if it wasn't already in transit.
- *   When the EP2in buffer returns, the interrupt prompts us to send more
- *   rx chars (or status messages) if they are pending.
- *
- *   Device control happens through "vendor specific" control messages on EP0.
- *   All messages are destined for the "Interface" (with the index always 0,
- *   so that if their two-port device might someday use similar firmware, we
- *   can use index=1 to refer to the second port). The messages defined are:
- *
- *    bRequest = 0 : set baud/bits/parity
- *               1 : unused
- *               2 : reserved for setting HW flow control (CTSRTS)
- *               3 : get/set "modem info" (pin states: DTR, RTS, DCD, RI, etc)
- *               4 : set break (on/off)
- *               5 : reserved for requesting interrupts on pin state change
- *               6 : query buffer room or chars in tx buffer
- *               7 : request tx unthrottle interrupt
- *
- *  The host-side driver is set to recognize the device ID values stashed in
- *  serial EEPROM (0x06cd, 0x0103), program this firmware into place, then
- *  start it running. This firmware will use EzUSB's "renumeration" trick by
- *  simulating a bus disconnect, then reconnect with a different device ID
- *  (encoded in the desc_device descriptor below). The host driver then
- *  recognizes the new device ID and glues it to the real serial driver code.
- *
- * USEFUL DOCS:
- *  EzUSB Technical Reference Manual: <http://www.cypress.com/>
- *  8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is
- *   basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports
- *   use totally different registers!
- *  USB 1.1 spec: www.usb.org
- *
- * HOW TO BUILD:
- *  gcc -x assembler-with-cpp -P -E -o keyspan_pda.asm keyspan_pda.s
- *  as31 -l keyspan_pda.asm
- *  mv keyspan_pda.obj keyspan_pda.hex
- *  perl ezusb_convert.pl keyspan_pda < keyspan_pda.hex > keyspan_pda_fw.h
- * Get as31 from <http://www.pjrc.com/tech/8051/index.html>, and hack on it
- * a bit to make it build.
- *
- * THANKS:
- *  Greg Kroah-Hartman, for coordinating the whole usb-serial thing.
- *  AnchorChips, for making such an incredibly useful little microcontroller.
- *  KeySpan, for making a handy, cheap ($40) widget that was so easy to take
- *           apart and trace with an ohmmeter.
- *
- * TODO:
- *  lots. grep for TODO. Interrupt safety needs stress-testing. Better flow
- *  control. Interrupting host upon change in DCD, etc, counting transitions.
- *  Need to find a safe device id to use (the one used by the Keyspan firmware
- *  under Windows would be ideal.. can anyone figure out what it is?). Parity.
- *  More baud rates. Oh, and the string-descriptor-length silicon bug
- *  workaround should be implemented, but I'm lazy, and the consequence is
- *  that the device name strings that show up in your kernel log will have
- *  lots of trailing binary garbage in them (appears as ????). Device strings
- *  should be made more accurate.
- *
- * Questions, bugs, patches to Brian.
- *
- *  -Brian Warner <warner@lothar.com>
- *
- */
-	
-#define HIGH(x) (((x) & 0xff00) / 256)
-#define LOW(x) ((x) & 0xff)
-
-#define dpl1 0x84
-#define dph1 0x85
-#define dps 0x86
-
-;;; our bit assignments
-#define TX_RUNNING 0
-#define DO_TX_UNTHROTTLE 1
-	
-	;; stack from 0x60 to 0x7f: should really set SP to 0x60-1, not 0x60
-#define STACK #0x60-1
-
-#define EXIF 0x91
-#define EIE 0xe8
-	.flag EUSB, EIE.0
-	.flag ES0, IE.4
-
-#define EP0CS #0x7fb4
-#define EP0STALLbit #0x01
-#define IN0BUF #0x7f00
-#define IN0BC #0x7fb5
-#define OUT0BUF #0x7ec0
-#define OUT0BC #0x7fc5		
-#define IN2BUF #0x7e00
-#define IN2BC #0x7fb9
-#define IN2CS #0x7fb8
-#define OUT2BC #0x7fc9
-#define OUT2CS #0x7fc8
-#define OUT2BUF #0x7dc0
-#define IN4BUF #0x7d00
-#define IN4BC #0x7fbd
-#define IN4CS #0x7fbc
-#define OEB #0x7f9d
-#define OUTB #0x7f97
-#define OEC #0x7f9e
-#define OUTC #0x7f98
-#define PINSC #0x7f9b
-#define PORTBCFG #0x7f94
-#define PORTCCFG #0x7f95
-#define OEA	#0x7f9c
-#define IN07IRQ #0x7fa9
-#define OUT07IRQ #0x7faa
-#define IN07IEN #0x7fac
-#define OUT07IEN #0x7fad
-#define USBIRQ #0x7fab
-#define USBIEN #0x7fae
-#define USBBAV #0x7faf
-#define USBCS #0x7fd6
-#define SUDPTRH #0x7fd4
-#define SUDPTRL #0x7fd5
-#define SETUPDAT #0x7fe8
-		
-	;; usb interrupt : enable is EIE.0 (0xe8), flag is EXIF.4 (0x91)
-
-	.org 0
-	ljmp start
-	;; interrupt vectors
-	.org 23H
-	ljmp serial_int
-	.byte 0
-	
-	.org 43H
-	ljmp USB_Jump_Table
-	.byte 0			; filled in by the USB core
-
-;;; local variables. These are not initialized properly: do it by hand.
-	.org 30H
-rx_ring_in:	.byte 0
-rx_ring_out:	.byte 0
-tx_ring_in:	.byte 0
-tx_ring_out:	.byte 0
-tx_unthrottle_threshold:	.byte 0
-		
-	.org 0x100H		; wants to be on a page boundary
-USB_Jump_Table:
-	ljmp	ISR_Sudav	; Setup Data Available
-	.byte 0
-	ljmp	0		; Start of Frame
-	.byte 0
-	ljmp	0		; Setup Data Loading
-	.byte 0
-	ljmp	0		; Global Suspend
-	.byte 	0
-	ljmp	0		; USB Reset  	
-	.byte	0
-	ljmp	0		; Reserved
-	.byte	0
-	ljmp	0		; End Point 0 In
-	.byte	0
-	ljmp	0		; End Point 0 Out
-	.byte	0
-	ljmp	0		; End Point 1 In
-	.byte	0
-	ljmp	0		; End Point 1 Out
-	.byte	0
-	ljmp	ISR_Ep2in
-	.byte	0
-	ljmp	ISR_Ep2out
-	.byte	0
-
-
-	.org 0x200
-		
-start:	mov SP,STACK-1 ; set stack
-	;; clear local variables
-	clr a
-	mov tx_ring_in, a
-	mov tx_ring_out, a
-	mov rx_ring_in, a
-	mov rx_ring_out, a
-	mov tx_unthrottle_threshold, a
-	clr TX_RUNNING
-	clr DO_TX_UNTHROTTLE
-	
-	;; clear fifo with "fe"
-	mov r1, 0
-	mov a, #0xfe
-	mov dptr, #tx_ring
-clear_tx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_tx_ring_loop
-
-	mov a, #0xfd
-	mov dptr, #rx_ring
-clear_rx_ring_loop:
-	movx @dptr, a
-	inc dptr
-	djnz r1, clear_rx_ring_loop
-
-;;; turn on the RS-232 driver chip (bring the STANDBY pin low)
-;;; on Xircom the STANDBY is wired to PB6 and PC4 
-	mov dptr, PORTBCFG
-        mov a, #0xBf
-        movx @dptr, a
-	mov dptr, PORTCCFG
-        mov a, #0xef
-        movx @dptr, a
-	
-	;; set OEC.4
-        mov a, #0x10
-        mov dptr,OEC
-        movx @dptr,a
-
-        ;; clear PC4
-        mov a, #0x00
-        mov dptr,OUTC
-        movx @dptr,a
-
-	;; set OEB.6
-	mov a, #0x40
-	mov dptr,OEB
-	movx @dptr,a
-
-	;; clear PB6
-	mov a, #0x00
-	mov dptr,OUTB
-	movx @dptr,a
-
-	;; set OEC.[17]
-	mov a, #0x82
-	mov dptr,OEC
-	movx @dptr,a
-
-
-	;; set PORTCCFG.[01] to route TxD0,RxD0 to serial port
-	mov dptr, PORTCCFG
-	mov a, #0x03
-	movx @dptr, a
-	
-	;; set up interrupts, autovectoring
-	;; set BKPT
-	mov dptr, USBBAV
-	movx a,@dptr
-	setb acc.0		; AVEN bit to 0
-	movx @dptr, a
-
-	mov a,#0x01		; enable SUDAV:	setup data available (for ep0)
-	mov dptr, USBIRQ
-	movx @dptr, a		; clear SUDAVI
-	mov dptr, USBIEN
-	movx @dptr, a
-	
-	mov dptr, IN07IEN
-	mov a,#0x04		; enable IN2 int
-	movx @dptr, a
-	
-	mov dptr, OUT07IEN
-	mov a,#0x04		; enable OUT2 int
-	movx @dptr, a
-	mov dptr, OUT2BC
-	movx @dptr, a		; arm OUT2
-
-;;	mov a, #0x84		; turn on RTS, DTR
-;;	mov dptr,OUTC
-;;	movx @dptr, a
-
-	mov a, #0x7             ; turn on  DTR
-        mov dptr,USBBAV
-        movx @dptr, a
-
-	mov a, #0x20             ; turn on the RED led 
-        mov dptr,OEA
-        movx @dptr, a
-
-	mov a, #0x80            ; turn on  RTS
-        mov dptr,OUTC
-        movx @dptr, a
-
-	;; setup the serial port. 9600 8N1.
-	mov a,#0x53		; mode 1, enable rx, clear int
-	mov SCON, a
-	;;  using timer2, in 16-bit baud-rate-generator mode
-	;;   (xtal 12MHz, internal fosc 24MHz)
-	;;  RCAP2H,RCAP2L = 65536 - fosc/(32*baud)
-	;;  57600: 0xFFF2.F, say 0xFFF3
-	;;   9600: 0xFFB1.E, say 0xFFB2
-	;;    300: 0xF63C
-#define BAUD 9600
-#define BAUD_TIMEOUT(rate) (65536 - (24 * 1000 * 1000) / (32 * rate))
-#define BAUD_HIGH(rate) HIGH(BAUD_TIMEOUT(rate))
-#define BAUD_LOW(rate) LOW(BAUD_TIMEOUT(rate))
-		
-	mov T2CON, #030h	; rclk=1,tclk=1,cp=0,tr2=0(enable later)
-	mov r3, #5
-	acall set_baud
-	setb TR2
-	mov SCON, #050h
-	
-#if 0
-	mov r1, #0x40
-	mov a, #0x41
-send:	
-	mov SBUF, a
-	inc a
-	anl a, #0x3F
-	orl a, #0x40
-;	xrl a, #0x02
-wait1:	
-	jnb TI, wait1
-	clr TI
-	djnz r1, send
-;done:	sjmp done
-
-#endif
-	
-	setb EUSB
-	setb EA
-	setb ES0
-	;acall dump_stat
-
-	;; hey, what say we RENUMERATE! (TRM p.62)
-	mov a, #0
-	mov dps, a
-	mov dptr, USBCS
-	mov a, #0x02		; DISCON=0, DISCOE=0, RENUM=1
-	movx @dptr, a
-	;; now presence pin is floating, simulating disconnect. wait 0.5s
-	mov r1, #46
-renum_wait1:
-	mov r2, #0
-renum_wait2:
-	mov r3, #0
-renum_wait3:
-	djnz r3, renum_wait3
-	djnz r2, renum_wait2
-	djnz r1, renum_wait1	; wait about n*(256^2) 6MHz clocks
-	mov a, #0x06		; DISCON=0, DISCOE=1, RENUM=1
-	movx @dptr, a
-	;; we are back online. the host device will now re-query us
-	
-	
-main:	sjmp main
-
-	
-
-ISR_Sudav:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, USBIRQ	; clear USB int
-	mov a,#01h
-	movx @dptr,a
-
-	;; get request type
-	mov dptr, SETUPDAT
-	movx a, @dptr
-	mov r1, a		; r1 = bmRequestType
-	inc dptr
-	movx a, @dptr
-	mov r2, a		; r2 = bRequest
-	inc dptr
-	movx a, @dptr
-	mov r3, a		; r3 = wValueL
-	inc dptr
-	movx a, @dptr
-	mov r4, a		; r4 = wValueH
-
-	;; main switch on bmRequest.type: standard or vendor
-	mov a, r1
-	anl a, #0x60
-	cjne a, #0x00, setup_bmreq_type_not_standard
-	;; standard request: now main switch is on bRequest
-	ljmp setup_bmreq_is_standard
-	
-setup_bmreq_type_not_standard:	
-	;; a still has bmreq&0x60
-	cjne a, #0x40, setup_bmreq_type_not_vendor
-	;; Anchor reserves bRequest 0xa0-0xaf, we use small ones
-	;; switch on bRequest. bmRequest will always be 0x41 or 0xc1
-	cjne r2, #0x00, setup_ctrl_not_00
-	;; 00 is set baud, wValue[0] has baud rate index
-	lcall set_baud		; index in r3, carry set if error
-	jc setup_bmreq_type_not_standard__do_stall
-	ljmp setup_done_ack
-setup_bmreq_type_not_standard__do_stall:
-	ljmp setup_stall
-setup_ctrl_not_00:
-	cjne r2, #0x01, setup_ctrl_not_01
-	;; 01 is reserved for set bits (parity). TODO
-	ljmp setup_stall
-setup_ctrl_not_01:
-	cjne r2, #0x02, setup_ctrl_not_02
-	;; 02 is set HW flow control. TODO
-	ljmp setup_stall
-setup_ctrl_not_02:
-	cjne r2, #0x03, setup_ctrl_not_03
-	;; 03 is control pins (RTS, DTR).
-	ljmp control_pins	; will jump to setup_done_ack,
-				;  or setup_return_one_byte
-setup_ctrl_not_03:
-	cjne r2, #0x04, setup_ctrl_not_04
-	;; 04 is send break (really "turn break on/off"). TODO
-	cjne r3, #0x00, setup_ctrl_do_break_on
-	;; do break off: restore PORTCCFG.1 to reconnect TxD0 to serial port
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	orl a, #0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_do_break_on:
-	;; do break on: clear PORTCCFG.0, set TxD high(?) (b1 low)
-	mov dptr, OUTC
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	mov dptr, PORTCCFG
-	movx a, @dptr
-	anl a, #0xfd		; ~0x02
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_ctrl_not_04:
-	cjne r2, #0x05, setup_ctrl_not_05
-	;; 05 is set desired interrupt bitmap. TODO
-	ljmp setup_stall
-setup_ctrl_not_05:
-	cjne r2, #0x06, setup_ctrl_not_06
-	;; 06 is query room
-	cjne r3, #0x00, setup_ctrl_06_not_00
-	;; 06, wValue[0]=0 is query write_room
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in	; out-1-in = 255 - (in-out)
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_00:
-	cjne r3, #0x01, setup_ctrl_06_not_01
-	;; 06, wValue[0]=1 is query chars_in_buffer
-	mov a, tx_ring_in
-	clr c
-	subb a, tx_ring_out	; in-out
-	ljmp setup_return_one_byte
-setup_ctrl_06_not_01:	
-	ljmp setup_stall
-setup_ctrl_not_06:
-	cjne r2, #0x07, setup_ctrl_not_07
-	;; 07 is request tx unthrottle interrupt
-	mov tx_unthrottle_threshold, r3; wValue[0] is threshold value
-	ljmp setup_done_ack
-setup_ctrl_not_07:
-	ljmp setup_stall
-	
-setup_bmreq_type_not_vendor:
-	ljmp setup_stall
-
-
-setup_bmreq_is_standard:	
-	cjne r2, #0x00, setup_breq_not_00
-	;; 00:	Get_Status (sub-switch on bmRequestType: device, ep, int)
-	cjne r1, #0x80, setup_Get_Status_not_device
-	;; Get_Status(device)
-	;;  are we self-powered? no. can we do remote wakeup? no
-	;;   so return two zero bytes. This is reusable
-setup_return_two_zero_bytes:
-	mov dptr, IN0BUF
-	clr a
-	movx @dptr, a
-	inc dptr
-	movx @dptr, a
-	mov dptr, IN0BC
-	mov a, #2
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Status_not_device:
-	cjne r1, #0x82, setup_Get_Status_not_endpoint
-	;; Get_Status(endpoint)
-	;;  must get stall bit for ep[wIndexL], return two bytes, bit in lsb 0
-	;; for now: cheat. TODO
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_endpoint:
-	cjne r1, #0x81, setup_Get_Status_not_interface
-	;; Get_Status(interface): return two zeros
-	sjmp setup_return_two_zero_bytes
-setup_Get_Status_not_interface:	
-	ljmp setup_stall
-	
-setup_breq_not_00:
-	cjne r2, #0x01, setup_breq_not_01
-	;; 01:	Clear_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Clear_Feature_not_stall
-	;; Clear_Feature(stall). should clear a stall bit. TODO
-	ljmp setup_stall
-setup_Clear_Feature_not_stall:
-	cjne r3, #0x01, setup_Clear_Feature_not_rwake
-	;; Clear_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Clear_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_01:
-	cjne r2, #0x03, setup_breq_not_03
-	;; 03:	Set_Feature (sub-switch on wValueL: stall, remote wakeup)
-	cjne r3, #0x00, setup_Set_Feature_not_stall
-	;; Set_Feature(stall). Should set a stall bit. TODO
-	ljmp setup_stall
-setup_Set_Feature_not_stall:
-	cjne r3, #0x01, setup_Set_Feature_not_rwake
-	;; Set_Feature(remote wakeup). ignored.
-	ljmp setup_done_ack
-setup_Set_Feature_not_rwake:
-	ljmp setup_stall
-	
-setup_breq_not_03:	
-	cjne r2, #0x06, setup_breq_not_06
-	;; 06:	Get_Descriptor (s-switch on wValueH: dev, config[n], string[n])
-	cjne r4, #0x01, setup_Get_Descriptor_not_device
-	;; Get_Descriptor(device)
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_device)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_device)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_device:
-	cjne r4, #0x02, setup_Get_Descriptor_not_config
-	;; Get_Descriptor(config[n])
-	cjne r3, #0x00, setup_stall; only handle n==0
-	;; Get_Descriptor(config[0])
-	mov dptr, SUDPTRH
-	mov a, #HIGH(desc_config1)
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, #LOW(desc_config1)
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_Get_Descriptor_not_config:
-	cjne r4, #0x03, setup_Get_Descriptor_not_string
-	;; Get_Descriptor(string[wValueL])
-	;;  if (wValueL >= maxstrings) stall
-	mov a, #((desc_strings_end-desc_strings)/2)
-	clr c
-	subb a,r3		; a=4, r3 = 0..3 . if a<=0 then stall
-	jc  setup_stall
-	jz  setup_stall
-	mov a, r3
-	add a, r3		; a = 2*wValueL
-	mov dptr, #desc_strings
-	add a, dpl
-	mov dpl, a
-	mov a, #0
-	addc a, dph
-	mov dph, a		; dph = desc_strings[a]. big endian! (handy)
-	;; it looks like my adapter uses a revision of the EZUSB that
-	;; contains "rev D errata number 8", as hinted in the EzUSB example
-	;; code. I cannot find an actual errata description on the Cypress
-	;; web site, but from the example code it looks like this bug causes
-	;; the length of string descriptors to be read incorrectly, possibly
-	;; sending back more characters than the descriptor has. The workaround
-	;; is to manually send out all of the data. The consequence of not
-	;; using the workaround is that the strings gathered by the kernel
-	;; driver are too long and are filled with trailing garbage (including
-	;; leftover strings). Writing this out by hand is a nuisance, so for
-	;; now I will just live with the bug.
-	movx a, @dptr
-	mov r1, a
-	inc dptr
-	movx a, @dptr
-	mov r2, a
-	mov dptr, SUDPTRH
-	mov a, r1
-	movx @dptr, a
-	mov dptr, SUDPTRL
-	mov a, r2
-	movx @dptr, a
-	;; done
-	ljmp setup_done_ack
-	
-setup_Get_Descriptor_not_string:
-	ljmp setup_stall
-	
-setup_breq_not_06:
-	cjne r2, #0x08, setup_breq_not_08
-	;; Get_Configuration. always 1. return one byte.
-	;; this is reusable
-	mov a, #1
-setup_return_one_byte:	
-	mov dptr, IN0BUF
-	movx @dptr, a
-	mov a, #1
-	mov dptr, IN0BC
-	movx @dptr, a
-	ljmp setup_done_ack
-setup_breq_not_08:
-	cjne r2, #0x09, setup_breq_not_09
-	;; 09: Set_Configuration. ignored.
-	ljmp setup_done_ack
-setup_breq_not_09:
-	cjne r2, #0x0a, setup_breq_not_0a
-	;; 0a: Get_Interface. get the current altsetting for int[wIndexL]
-	;;  since we only have one interface, ignore wIndexL, return a 0
-	mov a, #0
-	ljmp setup_return_one_byte
-setup_breq_not_0a:
-	cjne r2, #0x0b, setup_breq_not_0b
-	;; 0b: Set_Interface. set altsetting for interface[wIndexL]. ignored
-	ljmp setup_done_ack
-setup_breq_not_0b:
-	ljmp setup_stall
-
-		
-setup_done_ack:	
-	;; now clear HSNAK
-	mov dptr, EP0CS
-	mov a, #0x02
-	movx @dptr, a
-	sjmp setup_done
-setup_stall:	
-	;; unhandled. STALL
-	;EP0CS |= bmEPSTALL
-	mov dptr, EP0CS
-	movx a, @dptr
-	orl a, EP0STALLbit
-	movx @dptr, a
-	sjmp setup_done
-	
-setup_done:	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-;;; ==============================================================
-	
-set_baud:			; baud index in r3
-	;; verify a < 10
-	mov a, r3
-	jb ACC.7, set_baud__badbaud
-	clr c
-	subb a, #10
-	jnc set_baud__badbaud
-	mov a, r3
-	rl a			; a = index*2
-	add a, #LOW(baud_table)
-	mov dpl, a
-	mov a, #HIGH(baud_table)
-	addc a, #0
-	mov dph, a
-	;; TODO: shut down xmit/receive
-	;; TODO: wait for current xmit char to leave
-	;; TODO: shut down timer to avoid partial-char glitch
-	movx a,@dptr		; BAUD_HIGH
-	mov RCAP2H, a
-	mov TH2, a
-	inc dptr
-	movx a,@dptr		; BAUD_LOW
-	mov RCAP2L, a
-	mov TL2, a
-	;; TODO: restart xmit/receive
-	;; TODO: reenable interrupts, resume tx if pending
-	clr c			; c=0: success
-	ret
-set_baud__badbaud:
-	setb c			; c=1: failure
-	ret
-	
-;;; ==================================================
-control_pins:
-	cjne r1, #0x41, control_pins_in
-control_pins_out:
-		;TODO BKPT is DTR
-	mov a, r3 ; wValue[0] holds new bits:	b7 is new RTS
-	xrl a, #0xff		; 1 means active, 0V, +12V ?
-	anl a, #0x80
-	mov r3, a
-	mov dptr, OUTC
-	movx a, @dptr		; only change bit 7 
-	anl a, #0x7F		; ~0x84
-	orl a, r3
-	movx @dptr, a		; other pins are inputs, bits ignored
-	ljmp setup_done_ack
-control_pins_in:
-	mov dptr, PINSC
-	movx a, @dptr
-	xrl a, #0xff
-	ljmp setup_return_one_byte
-
-;;; ========================================
-	
-ISR_Ep2in:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, IN07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-	;; do stuff
-	lcall start_in
-
-	mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-ISR_Ep2out:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-
-        mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
-
-
-
-	mov a,EXIF
-	clr acc.4
-	mov EXIF,a		; clear INT2 first
-	mov dptr, OUT07IRQ	; clear USB int
-	mov a,#04h
-	movx @dptr,a
-
-	;; do stuff
-
-	;; copy data into buffer. for now, assume we will have enough space
-	mov dptr, OUT2BC	; get byte count
-	movx a,@dptr
-	mov r1, a
-	clr a
-	mov dps, a
-	mov dptr, OUT2BUF	; load DPTR0 with source
-	mov dph1, #HIGH(tx_ring)	; load DPTR1 with target
-	mov dpl1, tx_ring_in
-OUT_loop:
-	movx a,@dptr		; read
-	inc dps			; switch to DPTR1: target
-	inc dpl1		; target = tx_ring_in+1
-	movx @dptr,a		; store
-	mov a,dpl1
-	cjne a, tx_ring_out, OUT_no_overflow
-	sjmp OUT_overflow
-OUT_no_overflow:	
-	inc tx_ring_in		; tx_ring_in++
-	inc dps			; switch to DPTR0: source
-	inc dptr
-	djnz r1, OUT_loop
-	sjmp OUT_done
-OUT_overflow:
-	;; signal overflow
-	;; fall through
-OUT_done:	
-	;; ack
-	mov dptr,OUT2BC
-	movx @dptr,a
-
-	;; start tx
-	acall maybe_start_tx
-	;acall dump_stat
-
-        mov a, #0x20             ; Turn off the green LED
-        mov dptr,OEA
-        movx @dptr, a
-	
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-dump_stat:
-	;; fill in EP4in with a debugging message:
-	;;   tx_ring_in, tx_ring_out, rx_ring_in, rx_ring_out
-	;;   tx_active
-	;;   tx_ring[0..15]
-	;;   0xfc
-	;;   rx_ring[0..15]
-	clr a
-	mov dps, a
-	
-	mov dptr, IN4CS
-	movx a, @dptr
-	jb acc.1, dump_stat__done; busy: cannot dump, old one still pending
-	mov dptr, IN4BUF
-	
-	mov a, tx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, tx_ring_out
-	movx @dptr, a
-	inc dptr
-
-	mov a, rx_ring_in
-	movx @dptr, a
-	inc dptr
-	mov a, rx_ring_out
-	movx @dptr, a
-	inc dptr
-	
-	clr a
-	jnb TX_RUNNING, dump_stat__no_tx_running
-	inc a
-dump_stat__no_tx_running:
-	movx @dptr, a
-	inc dptr
-	;; tx_ring[0..15]
-	inc dps
-	mov dptr, #tx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__tx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__tx_ring_loop
-	inc dps
-	
-	mov a, #0xfc
-	movx @dptr, a
-	inc dptr
-	
-	;; rx_ring[0..15]
-	inc dps
-	mov dptr, #rx_ring	; DPTR1: source
-	mov r1, #16
-dump_stat__rx_ring_loop:
-	movx a, @dptr
-	inc dptr
-	inc dps
-	movx @dptr, a
-	inc dptr
-	inc dps
-	djnz r1, dump_stat__rx_ring_loop
-	
-	;; now send it
-	clr a
-	mov dps, a
-	mov dptr, IN4BC
-	mov a, #38
-	movx @dptr, a
-dump_stat__done:	
-	ret
-		
-;;; ============================================================
-	
-maybe_start_tx:
-	;; make sure the tx process is running.
-	jb TX_RUNNING, start_tx_done
-start_tx:
-	;; is there work to be done?
-	mov a, tx_ring_in
-	cjne a,tx_ring_out, start_tx__work
-	ret			; no work
-start_tx__work:	
-	;; tx was not running. send the first character, setup the TI int
-	inc tx_ring_out		; [++tx_ring_out]
-	mov dph, #HIGH(tx_ring)
-	mov dpl, tx_ring_out
-	movx a, @dptr
-	mov sbuf, a
-	setb TX_RUNNING
-start_tx_done:
-	;; can we unthrottle the host tx process?
-	;;  step 1: do we care?
-	mov a, #0
-	cjne a, tx_unthrottle_threshold, start_tx__maybe_unthrottle_tx
-	;; nope
-start_tx_really_done:
-	ret
-start_tx__maybe_unthrottle_tx:
-	;;  step 2: is there now room?
-	mov a, tx_ring_out
-	setb c
-	subb a, tx_ring_in
-	;; a is now write_room. If thresh >= a, we can unthrottle
-	clr c
-	subb a, tx_unthrottle_threshold
-	jc start_tx_really_done	; nope
-	;; yes, we can unthrottle. remove the threshold and mark a request
-	mov tx_unthrottle_threshold, #0
-	setb DO_TX_UNTHROTTLE
-	;; prod rx, which will actually send the message when in2 becomes free
-	ljmp start_in
-	
-
-serial_int:
-	push dps
-	push dpl
-	push dph
-	push dpl1
-	push dph1
-	push acc
-	jnb TI, serial_int__not_tx
-	;; tx finished. send another character if we have one
-	clr TI			; clear int
-	clr TX_RUNNING
-	lcall start_tx
-serial_int__not_tx:
-	jnb RI, serial_int__not_rx
-	lcall get_rx_char
-	clr RI			; clear int
-serial_int__not_rx:	
-	;; return
-	pop acc
-	pop dph1
-	pop dpl1
-	pop dph
-	pop dpl
-	pop dps
-	reti
-
-get_rx_char:
-	mov dph, #HIGH(rx_ring)
-	mov dpl, rx_ring_in
-	inc dpl			; target = rx_ring_in+1
-	mov a, sbuf
-	movx @dptr, a
-	;; check for overflow before incrementing rx_ring_in
-	mov a, dpl
-	cjne a, rx_ring_out, get_rx_char__no_overflow
-	;; signal overflow
-	ret
-get_rx_char__no_overflow:	
-	inc rx_ring_in
-	;; kick off USB INpipe
-	acall start_in
-	ret
-
-start_in:
-	;; check if the inpipe is already running.
-	mov  a,#0x10
-	mov dptr, OEA
-	movx @dptr,a
-
-	mov dptr, IN2CS
-	movx a, @dptr
-	jb acc.1, start_in__done; int will handle it
-	jb DO_TX_UNTHROTTLE, start_in__do_tx_unthrottle
-	;; see if there is any work to do. a serial interrupt might occur
-	;; during this sequence?
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_in__have_work
-	ret			; nope
-start_in__have_work:	
-	;; now copy as much data as possible into the pipe. 63 bytes max.
-	clr a
-	mov dps, a
-	mov dph, #HIGH(rx_ring)	; load DPTR0 with source
-	inc dps
-	mov dptr, IN2BUF	; load DPTR1 with target
-	movx @dptr, a		; in[0] signals that rest of IN is rx data
-	inc dptr
-	inc dps
-	;; loop until we run out of data, or we have copied 64 bytes
-	mov r1, #1		; INbuf size counter
-start_in__loop:
-	mov a, rx_ring_in
-	cjne a, rx_ring_out, start_inlocal_irq_enablell_copying
-	sjmp start_in__kick
-start_inlocal_irq_enablell_copying:
-	inc rx_ring_out
-	mov dpl, rx_ring_out
-	movx a, @dptr
-	inc dps
-	movx @dptr, a		; write into IN buffer
-	inc dptr
-	inc dps
-	inc r1
-	cjne r1, #64, start_in__loop; loop
-start_in__kick:
-	;; either we ran out of data, or we copied 64 bytes. r1 has byte count
-	;; kick off IN
-	mov a, #0x10             ; Turn the green LED
-        mov dptr,OEA
-        movx @dptr, a
-	mov dptr, IN2BC
-	mov a, r1
-	jz start_in__done
-	movx @dptr, a
-	;; done
-start_in__done:
-	;acall dump_stat
-	ret
-start_in__do_tx_unthrottle:
-	;; special sequence: send a tx unthrottle message
-	clr DO_TX_UNTHROTTLE
-	clr a
-	mov dps, a
-	mov dptr, IN2BUF
-	mov a, #1
-	movx @dptr, a
-	inc dptr
-	mov a, #2
-	movx @dptr, a
-	mov dptr, IN2BC
-	movx @dptr, a
-	ret
-	
-putchar:
-	clr TI
-	mov SBUF, a
-putchar_wait:
-	jnb TI, putchar_wait
-	clr TI
-	ret
-
-	
-baud_table:			; baud_high, then baud_low
-	;; baud[0]: 110
-	.byte BAUD_HIGH(110)
-	.byte BAUD_LOW(110)
-	;; baud[1]: 300
-	.byte BAUD_HIGH(300)
-	.byte BAUD_LOW(300)
-	;; baud[2]: 1200
-	.byte BAUD_HIGH(1200)
-	.byte BAUD_LOW(1200)
-	;; baud[3]: 2400
-	.byte BAUD_HIGH(2400)
-	.byte BAUD_LOW(2400)
-	;; baud[4]: 4800
-	.byte BAUD_HIGH(4800)
-	.byte BAUD_LOW(4800)
-	;; baud[5]: 9600
-	.byte BAUD_HIGH(9600)
-	.byte BAUD_LOW(9600)
-	;; baud[6]: 19200
-	.byte BAUD_HIGH(19200)
-	.byte BAUD_LOW(19200)
-	;; baud[7]: 38400
-	.byte BAUD_HIGH(38400)
-	.byte BAUD_LOW(38400)
-	;; baud[8]: 57600
-	.byte BAUD_HIGH(57600)
-	.byte BAUD_LOW(57600)
-	;; baud[9]: 115200
-	.byte BAUD_HIGH(115200)
-	.byte BAUD_LOW(115200)
-
-desc_device:
-	.byte 0x12, 0x01, 0x00, 0x01, 0xff, 0xff, 0xff, 0x40
-	.byte 0xcd, 0x06, 0x04, 0x01, 0x89, 0xab, 1, 2, 3, 0x01
-;;; The "real" device id, which must match the host driver, is that
-;;; "0xcd 0x06 0x04 0x01" sequence, which is 0x06cd, 0x0104
-	
-desc_config1:
-	.byte 0x09, 0x02, 0x20, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32
-	.byte 0x09, 0x04, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff, 0x00
-	.byte 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01
-	.byte 0x07, 0x05, 0x02, 0x02, 0x40, 0x00, 0x00
-
-desc_strings:
-	.word string_langids, string_mfg, string_product, string_serial
-desc_strings_end:
-
-string_langids:	.byte string_langids_end-string_langids
-	.byte 3
-	.word 0
-string_langids_end:
-
-	;; sigh. These strings are Unicode, meaning UTF16? 2 bytes each. Now
-	;; *that* is a pain in the ass to encode. And they are little-endian
-	;; too. Use this perl snippet to get the bytecodes:
-	/* while (<>) {
-	    @c = split(//);
-	    foreach $c (@c) {
-	     printf("0x%02x, 0x00, ", ord($c));
-	    }
-	   }
-	*/
-
-string_mfg:	.byte string_mfg_end-string_mfg
-	.byte 3
-;	.byte "ACME usb widgets"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x62, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00, 0x73, 0x00
-string_mfg_end:
-	
-string_product:	.byte string_product_end-string_product
-	.byte 3
-;	.byte "ACME USB serial widget"
-	.byte 0x41, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x20, 0x00, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x65, 0x00, 0x74, 0x00
-string_product_end:
-	
-string_serial:	.byte string_serial_end-string_serial
-	.byte 3
-;	.byte "47"
-	.byte 0x34, 0x00, 0x37, 0x00
-string_serial_end:
-		
-;;; ring buffer memory
-	;; tx_ring_in+1 is where the next input byte will go
-	;; [tx_ring_out] has been sent
-	;; if tx_ring_in == tx_ring_out, theres no work to do
-	;; there are (tx_ring_in - tx_ring_out) chars to be written
-	;; dont let _in lap _out
-	;;   cannot inc if tx_ring_in+1 == tx_ring_out
-	;;  write [tx_ring_in+1] then tx_ring_in++
-	;;   if (tx_ring_in+1 == tx_ring_out), overflow
-	;;   else tx_ring_in++
-	;;  read/send [tx_ring_out+1], then tx_ring_out++
-
-	;; rx_ring_in works the same way
-	
-	.org 0x1000
-tx_ring:
-	.skip 0x100		; 256 bytes
-rx_ring:
-	.skip 0x100		; 256 bytes
-	
-	
-	.END
-	
diff --git a/helpers/DATA/linux/firmware/whiteheat.HEX b/helpers/DATA/linux/firmware/whiteheat.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux/firmware/whiteheat.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux/firmware/whiteheat_loader.HEX b/helpers/DATA/linux/firmware/whiteheat_loader.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux/firmware/whiteheat_loader.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux/firmware/whiteheat_loader_debug.HEX b/helpers/DATA/linux/firmware/whiteheat_loader_debug.HEX
deleted file mode 100644
index ae3bb909b..000000000
--- a/helpers/DATA/linux/firmware/whiteheat_loader_debug.HEX
+++ /dev/null
@@ -1,45 +0,0 @@
-:/*(DEBLOBBED)*/
-/*****************************************************************************
- *
- *      whiteheat.h  --  ConnectTech WhiteHEAT Firmware.
- *
- *      Copyright (C) 2000-2002  ConnectTech Inc (http://www.connecttech.com/)
- *
- *      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
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * (10/09/2002) Stuart MacDonald
- *	Firmware 4.06
- *
- * (04/09/2000) gkh
- *	Updated the firmware with the latest provided by ConnectTech.
- *
- * (01/16/2000) gkh
- *	Fixed my intel hex processing tool, so now the firmware actually
- *	matches the original file (this was causing a few problems...)
- *
- * (01/15/2000) gkh
- *	Added debug loader firmware if DEBUG is #defined:
- *		Port 1 LED flashes when the vend_ax program is running
- *		Port 2 LED flashes when any SETUP command arrives
- *		Port 3 LED flashes when any valid VENDOR request occurs
- *		Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
- *
- * version 1.0 (01/09/2000) gkh
- *	Original firmware from ConnectTech massaged a little to be program
- *	readable.
- *
- *****************************************************************************/
-
-#define whiteheat_DATE "20000106"
diff --git a/helpers/DATA/linux/silent-accept-firmware.patch b/helpers/DATA/linux/silent-accept-firmware.patch
new file mode 100644
index 000000000..c96c51fca
--- /dev/null
+++ b/helpers/DATA/linux/silent-accept-firmware.patch
@@ -0,0 +1,1072 @@
+diff -ru source.orig/drivers/base/firmware_class.c source/drivers/base/firmware_class.c
+--- source.orig/drivers/base/firmware_class.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/base/firmware_class.c	2016-03-04 16:51:31.376424322 -0600
+@@ -90,7 +90,7 @@
+ 	FW_STATUS_ABORT,
+ };
+ 
+-static int loading_timeout = 60;	/* In seconds */
++static int loading_timeout = 5;	/* In seconds */
+ 
+ static inline long firmware_loading_timeout(void)
+ {
+@@ -353,15 +353,15 @@
+ 		rc = fw_read_file_contents(file, buf);
+ 		fput(file);
+ 		if (rc)
+-			dev_warn(device, "firmware, attempted to load %s, but failed with error %d\n",
+-				path, rc);
++			dev_warn(device, "firmware, attempted to load, but failed with error %d\n",
++				rc);
+ 		else
+ 			break;
+ 	}
+ 	__putname(path);
+ 
+ 	if (!rc) {
+-		dev_dbg(device, "firmware: direct-loading firmware %s\n",
++		dev_dbg(device, "firmware: direct-loading firmware\n",
+ 			buf->fw_id);
+ 		mutex_lock(&fw_lock);
+ 		set_bit(FW_STATUS_DONE, &buf->status);
+@@ -936,7 +936,7 @@
+ 	if (opt_flags & FW_OPT_UEVENT) {
+ 		buf->need_uevent = true;
+ 		dev_set_uevent_suppress(f_dev, false);
+-		dev_dbg(f_dev, "firmware: requesting %s\n", buf->fw_id);
++		dev_dbg(f_dev, "firmware: requesting\n", buf->fw_id);
+ 		kobject_uevent(&fw_priv->dev.kobj, KOBJ_ADD);
+ 	} else {
+ 		timeout = MAX_JIFFY_OFFSET;
+@@ -1051,7 +1051,7 @@
+ 	}
+ 
+ 	if (fw_get_builtin_firmware(firmware, name)) {
+-		dev_dbg(device, "firmware: using built-in firmware %s\n", name);
++		dev_dbg(device, "firmware: using built-in firmware\n", name);
+ 		return 0; /* assigned */
+ 	}
+ 
+@@ -1133,11 +1133,11 @@
+ 		goto out;
+ 
+ 	ret = 0;
+-	timeout = firmware_loading_timeout();
++	timeout = is_nonfree_firmware(name) ? 1 : firmware_loading_timeout();
+ 	if (opt_flags & FW_OPT_NOWAIT) {
+ 		timeout = usermodehelper_read_lock_wait(timeout);
+ 		if (!timeout) {
+-			dev_dbg(device, "firmware: %s loading timed out\n",
++			dev_dbg(device, "firmware: loading timed out\n",
+ 				name);
+ 			ret = -EBUSY;
+ 			goto out;
+@@ -1145,7 +1145,7 @@
+ 	} else {
+ 		ret = usermodehelper_read_trylock();
+ 		if (WARN_ON(ret)) {
+-			dev_err(device, "firmware: %s will not be loaded\n",
++			dev_err(device, "firmware: will not be loaded\n",
+ 				name);
+ 			goto out;
+ 		}
+@@ -1155,12 +1155,13 @@
+ 	if (ret) {
+ 		if (!(opt_flags & FW_OPT_NO_WARN))
+ 			dev_warn(device,
+-				 "Direct firmware load for %s failed with error %d\n",
+-				 name, ret);
++				 "Direct firmware load failed with error %d\n",
++				 ret);
+ 		if (opt_flags & FW_OPT_USERHELPER) {
+ 			dev_warn(device, "Falling back to user helper\n");
+ 			ret = fw_load_from_user_helper(fw, name, device,
+ 						       opt_flags, timeout);
++                        dev_warn(device, "Please read https://www.gnu.org/distros/free-system-distribution-guidelines.html#nonfree-firmware\n");
+ 		}
+ 	}
+ 
+diff -ru source.orig/drivers/gpu/drm/radeon/cik.c source/drivers/gpu/drm/radeon/cik.c
+--- source.orig/drivers/gpu/drm/radeon/cik.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/cik.c	2016-03-04 16:54:53.164424298 -0600
+@@ -2069,8 +2069,8 @@
+ 			goto out;
+ 		if (rdev->pfp_fw->size != pfp_req_size) {
+ 			printk(KERN_ERR
+-			       "cik_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->pfp_fw->size, fw_name);
++			       "cik_cp: Bogus length %zu in firmware\n",
++			       rdev->pfp_fw->size);
+ 			err = -EINVAL;
+ 			goto out;
+ 		}
+@@ -2078,7 +2078,7 @@
+ 		err = radeon_ucode_validate(rdev->pfp_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "cik_fw: validation failed for firmware \"%s\"\n",
++			       "cik_fw: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -2095,15 +2095,15 @@
+ 			goto out;
+ 		if (rdev->me_fw->size != me_req_size) {
+ 			printk(KERN_ERR
+-			       "cik_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->me_fw->size, fw_name);
++			       "cik_cp: Bogus length %zu in firmware\n",
++			       rdev->me_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->me_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "cik_fw: validation failed for firmware \"%s\"\n",
++			       "cik_fw: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -2120,15 +2120,15 @@
+ 			goto out;
+ 		if (rdev->ce_fw->size != ce_req_size) {
+ 			printk(KERN_ERR
+-			       "cik_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->ce_fw->size, fw_name);
++			       "cik_cp: Bogus length %zu in firmware\n",
++			       rdev->ce_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->ce_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "cik_fw: validation failed for firmware \"%s\"\n",
++			       "cik_fw: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -2145,15 +2145,15 @@
+ 			goto out;
+ 		if (rdev->mec_fw->size != mec_req_size) {
+ 			printk(KERN_ERR
+-			       "cik_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->mec_fw->size, fw_name);
++			       "cik_cp: Bogus length %zu in firmware\n",
++			       rdev->mec_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->mec_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "cik_fw: validation failed for firmware \"%s\"\n",
++			       "cik_fw: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -2185,15 +2185,15 @@
+ 			goto out;
+ 		if (rdev->rlc_fw->size != rlc_req_size) {
+ 			printk(KERN_ERR
+-			       "cik_rlc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->rlc_fw->size, fw_name);
++			       "cik_rlc: Bogus length %zu in firmware\n",
++			       rdev->rlc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->rlc_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "cik_fw: validation failed for firmware \"%s\"\n",
++			       "cik_fw: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -2210,15 +2210,15 @@
+ 			goto out;
+ 		if (rdev->sdma_fw->size != sdma_req_size) {
+ 			printk(KERN_ERR
+-			       "cik_sdma: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->sdma_fw->size, fw_name);
++			       "cik_sdma: Bogus length %zu in firmware\n",
++			       rdev->sdma_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->sdma_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "cik_fw: validation failed for firmware \"%s\"\n",
++			       "cik_fw: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -2242,8 +2242,8 @@
+ 			if ((rdev->mc_fw->size != mc_req_size) &&
+ 			    (rdev->mc_fw->size != mc2_req_size)){
+ 				printk(KERN_ERR
+-				       "cik_mc: Bogus length %zu in firmware \"%s\"\n",
+-				       rdev->mc_fw->size, fw_name);
++				       "cik_mc: Bogus length %zu in firmware\n",
++				       rdev->mc_fw->size);
+ 				err = -EINVAL;
+ 			}
+ 			DRM_INFO("%s: %zu bytes\n", fw_name, rdev->mc_fw->size);
+@@ -2251,7 +2251,7 @@
+ 			err = radeon_ucode_validate(rdev->mc_fw);
+ 			if (err) {
+ 				printk(KERN_ERR
+-				       "cik_fw: validation failed for firmware \"%s\"\n",
++				       "cik_fw: validation failed for firmware\n",
+ 				       fw_name);
+ 				goto out;
+ 			} else {
+@@ -2266,22 +2266,22 @@
+ 			err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev);
+ 			if (err) {
+ 				printk(KERN_ERR
+-				       "smc: error loading firmware \"%s\"\n",
++				       "smc: error loading firmware\n",
+ 				       fw_name);
+ 				release_firmware(rdev->smc_fw);
+ 				rdev->smc_fw = NULL;
+ 				err = 0;
+ 			} else if (rdev->smc_fw->size != smc_req_size) {
+ 				printk(KERN_ERR
+-				       "cik_smc: Bogus length %zu in firmware \"%s\"\n",
+-				       rdev->smc_fw->size, fw_name);
++				       "cik_smc: Bogus length %zu in firmware\n",
++				       rdev->smc_fw->size);
+ 				err = -EINVAL;
+ 			}
+ 		} else {
+ 			err = radeon_ucode_validate(rdev->smc_fw);
+ 			if (err) {
+ 				printk(KERN_ERR
+-				       "cik_fw: validation failed for firmware \"%s\"\n",
++				       "cik_fw: validation failed for firmware\n",
+ 				       fw_name);
+ 				goto out;
+ 			} else {
+@@ -2303,7 +2303,7 @@
+ 	if (err) {
+ 		if (err != -EINVAL)
+ 			printk(KERN_ERR
+-			       "cik_cp: Failed to load firmware \"%s\"\n",
++			       "cik_cp: Failed to load firmware\n",
+ 			       fw_name);
+ 		release_firmware(rdev->pfp_fw);
+ 		rdev->pfp_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/radeon/ni.c source/drivers/gpu/drm/radeon/ni.c
+--- source.orig/drivers/gpu/drm/radeon/ni.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/ni.c	2016-03-04 16:57:08.956424282 -0600
+@@ -775,8 +775,8 @@
+ 		goto out;
+ 	if (rdev->pfp_fw->size != pfp_req_size) {
+ 		printk(KERN_ERR
+-		       "ni_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->pfp_fw->size, fw_name);
++		       "ni_cp: Bogus length %zu in firmware\n",
++		       rdev->pfp_fw->size);
+ 		err = -EINVAL;
+ 		goto out;
+ 	}
+@@ -787,8 +787,8 @@
+ 		goto out;
+ 	if (rdev->me_fw->size != me_req_size) {
+ 		printk(KERN_ERR
+-		       "ni_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->me_fw->size, fw_name);
++		       "ni_cp: Bogus length %zu in firmware\n",
++		       rdev->me_fw->size);
+ 		err = -EINVAL;
+ 	}
+ 
+@@ -798,8 +798,8 @@
+ 		goto out;
+ 	if (rdev->rlc_fw->size != rlc_req_size) {
+ 		printk(KERN_ERR
+-		       "ni_rlc: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->rlc_fw->size, fw_name);
++		       "ni_rlc: Bogus length %zu in firmware\n",
++		       rdev->rlc_fw->size);
+ 		err = -EINVAL;
+ 	}
+ 
+@@ -811,8 +811,8 @@
+ 			goto out;
+ 		if (rdev->mc_fw->size != mc_req_size) {
+ 			printk(KERN_ERR
+-			       "ni_mc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->mc_fw->size, fw_name);
++			       "ni_mc: Bogus length %zu in firmware\n",
++			       rdev->mc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	}
+@@ -822,15 +822,15 @@
+ 		err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "smc: error loading firmware \"%s\"\n",
++			       "smc: error loading firmware\n",
+ 			       fw_name);
+ 			release_firmware(rdev->smc_fw);
+ 			rdev->smc_fw = NULL;
+ 			err = 0;
+ 		} else if (rdev->smc_fw->size != smc_req_size) {
+ 			printk(KERN_ERR
+-			       "ni_mc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->mc_fw->size, fw_name);
++			       "ni_mc: Bogus length %zu in firmware\n",
++			       rdev->mc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	}
+@@ -839,7 +839,7 @@
+ 	if (err) {
+ 		if (err != -EINVAL)
+ 			printk(KERN_ERR
+-			       "ni_cp: Failed to load firmware \"%s\"\n",
++			       "ni_cp: Failed to load firmware\n",
+ 			       fw_name);
+ 		release_firmware(rdev->pfp_fw);
+ 		rdev->pfp_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/radeon/r100.c source/drivers/gpu/drm/radeon/r100.c
+--- source.orig/drivers/gpu/drm/radeon/r100.c	2016-03-04 16:51:09.000000000 -0600
++++ source/drivers/gpu/drm/radeon/r100.c	2016-03-08 09:41:58.952386158 -0600
+@@ -1040,12 +1040,12 @@
+ 
+ 	err = request_firmware(&rdev->me_fw, fw_name, rdev->dev);
+ 	if (err) {
+-		printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n",
++		printk(KERN_ERR "radeon_cp: Failed to load firmware\n",
+ 		       fw_name);
+ 	} else if (rdev->me_fw->size % 8) {
+ 		printk(KERN_ERR
+-		       "radeon_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->me_fw->size, fw_name);
++		       "radeon_cp: Bogus length %zu in firmware\n",
++		       rdev->me_fw->size);
+ 		err = -EINVAL;
+ 		release_firmware(rdev->me_fw);
+ 		rdev->me_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/radeon/r600.c source/drivers/gpu/drm/radeon/r600.c
+--- source.orig/drivers/gpu/drm/radeon/r600.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/r600.c	2016-03-08 09:43:28.344386147 -0600
+@@ -2544,8 +2544,8 @@
+ 		goto out;
+ 	if (rdev->pfp_fw->size != pfp_req_size) {
+ 		printk(KERN_ERR
+-		       "r600_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->pfp_fw->size, fw_name);
++		       "r600_cp: Bogus length %zu in firmware\n",
++		       rdev->pfp_fw->size);
+ 		err = -EINVAL;
+ 		goto out;
+ 	}
+@@ -2556,8 +2556,8 @@
+ 		goto out;
+ 	if (rdev->me_fw->size != me_req_size) {
+ 		printk(KERN_ERR
+-		       "r600_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->me_fw->size, fw_name);
++		       "r600_cp: Bogus length %zu in firmware\n",
++		       rdev->me_fw->size);
+ 		err = -EINVAL;
+ 	}
+ 
+@@ -2567,8 +2567,8 @@
+ 		goto out;
+ 	if (rdev->rlc_fw->size != rlc_req_size) {
+ 		printk(KERN_ERR
+-		       "r600_rlc: Bogus length %zu in firmware \"%s\"\n",
+-		       rdev->rlc_fw->size, fw_name);
++		       "r600_rlc: Bogus length %zu in firmware\n",
++		       rdev->rlc_fw->size);
+ 		err = -EINVAL;
+ 	}
+ 
+@@ -2577,15 +2577,15 @@
+ 		err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "smc: error loading firmware \"%s\"\n",
++			       "smc: error loading firmware\n",
+ 			       fw_name);
+ 			release_firmware(rdev->smc_fw);
+ 			rdev->smc_fw = NULL;
+ 			err = 0;
+ 		} else if (rdev->smc_fw->size != smc_req_size) {
+ 			printk(KERN_ERR
+-			       "smc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->smc_fw->size, fw_name);
++			       "smc: Bogus length %zu in firmware \n",
++			       rdev->smc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	}
+@@ -2594,7 +2594,7 @@
+ 	if (err) {
+ 		if (err != -EINVAL)
+ 			printk(KERN_ERR
+-			       "r600_cp: Failed to load firmware \"%s\"\n",
++			       "r600_cp: Failed to load firmware\n",
+ 			       fw_name);
+ 		release_firmware(rdev->pfp_fw);
+ 		rdev->pfp_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/radeon/r600_cp.c source/drivers/gpu/drm/radeon/r600_cp.c
+--- source.orig/drivers/gpu/drm/radeon/r600_cp.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/r600_cp.c	2016-03-08 09:44:43.408386138 -0600
+@@ -356,8 +356,8 @@
+ 		goto out;
+ 	if (dev_priv->pfp_fw->size != pfp_req_size) {
+ 		printk(KERN_ERR
+-		       "r600_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       dev_priv->pfp_fw->size, fw_name);
++		       "r600_cp: Bogus length %zu in firmware\n",
++		       dev_priv->pfp_fw->size);
+ 		err = -EINVAL;
+ 		goto out;
+ 	}
+@@ -368,8 +368,8 @@
+ 		goto out;
+ 	if (dev_priv->me_fw->size != me_req_size) {
+ 		printk(KERN_ERR
+-		       "r600_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       dev_priv->me_fw->size, fw_name);
++		       "r600_cp: Bogus length %zu in firmware \n",
++		       dev_priv->me_fw->size);
+ 		err = -EINVAL;
+ 	}
+ out:
+@@ -378,7 +378,7 @@
+ 	if (err) {
+ 		if (err != -EINVAL)
+ 			printk(KERN_ERR
+-			       "r600_cp: Failed to load firmware \"%s\"\n",
++			       "r600_cp: Failed to load firmware \n",
+ 			       fw_name);
+ 		release_firmware(dev_priv->pfp_fw);
+ 		dev_priv->pfp_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/radeon/radeon_cp.c source/drivers/gpu/drm/radeon/radeon_cp.c
+--- source.orig/drivers/gpu/drm/radeon/radeon_cp.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/radeon_cp.c	2016-03-08 09:45:48.968386130 -0600
+@@ -531,12 +531,12 @@
+ 	err = request_firmware(&dev_priv->me_fw, fw_name, &pdev->dev);
+ 	platform_device_unregister(pdev);
+ 	if (err) {
+-		printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n",
++		printk(KERN_ERR "radeon_cp: Failed to load firmware\n",
+ 		       fw_name);
+ 	} else if (dev_priv->me_fw->size % 8) {
+ 		printk(KERN_ERR
+-		       "radeon_cp: Bogus length %zu in firmware \"%s\"\n",
+-		       dev_priv->me_fw->size, fw_name);
++		       "radeon_cp: Bogus length %zu in firmware\n",
++		       dev_priv->me_fw->size);
+ 		err = -EINVAL;
+ 		release_firmware(dev_priv->me_fw);
+ 		dev_priv->me_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/radeon/radeon_uvd.c source/drivers/gpu/drm/radeon/radeon_uvd.c
+--- source.orig/drivers/gpu/drm/radeon/radeon_uvd.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/radeon_uvd.c	2016-03-08 09:46:31.432386125 -0600
+@@ -132,7 +132,7 @@
+ 
+ 	r = request_firmware(&rdev->uvd_fw, fw_name, rdev->dev);
+ 	if (r) {
+-		dev_err(rdev->dev, "radeon_uvd: Can't load firmware \"%s\"\n",
++		dev_err(rdev->dev, "radeon_uvd: Can't load firmware\n",
+ 			fw_name);
+ 		return r;
+ 	}
+diff -ru source.orig/drivers/gpu/drm/radeon/si.c source/drivers/gpu/drm/radeon/si.c
+--- source.orig/drivers/gpu/drm/radeon/si.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/gpu/drm/radeon/si.c	2016-03-08 09:49:55.944386101 -0600
+@@ -1724,8 +1724,8 @@
+ 			goto out;
+ 		if (rdev->pfp_fw->size != pfp_req_size) {
+ 			printk(KERN_ERR
+-			       "si_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->pfp_fw->size, fw_name);
++			       "si_cp: Bogus length %zu in firmware\n",
++			       rdev->pfp_fw->size);
+ 			err = -EINVAL;
+ 			goto out;
+ 		}
+@@ -1733,7 +1733,7 @@
+ 		err = radeon_ucode_validate(rdev->pfp_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "si_cp: validation failed for firmware \"%s\"\n",
++			       "si_cp: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -1750,15 +1750,15 @@
+ 			goto out;
+ 		if (rdev->me_fw->size != me_req_size) {
+ 			printk(KERN_ERR
+-			       "si_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->me_fw->size, fw_name);
++			       "si_cp: Bogus length %zu in firmware\n",
++			       rdev->me_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->me_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "si_cp: validation failed for firmware \"%s\"\n",
++			       "si_cp: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -1775,15 +1775,15 @@
+ 			goto out;
+ 		if (rdev->ce_fw->size != ce_req_size) {
+ 			printk(KERN_ERR
+-			       "si_cp: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->ce_fw->size, fw_name);
++			       "si_cp: Bogus length %zu in firmware\n",
++			       rdev->ce_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->ce_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "si_cp: validation failed for firmware \"%s\"\n",
++			       "si_cp: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -1800,15 +1800,15 @@
+ 			goto out;
+ 		if (rdev->rlc_fw->size != rlc_req_size) {
+ 			printk(KERN_ERR
+-			       "si_rlc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->rlc_fw->size, fw_name);
++			       "si_rlc: Bogus length %zu in firmware\n",
++			       rdev->rlc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->rlc_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "si_cp: validation failed for firmware \"%s\"\n",
++			       "si_cp: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -1830,8 +1830,8 @@
+ 		if ((rdev->mc_fw->size != mc_req_size) &&
+ 		    (rdev->mc_fw->size != mc2_req_size)) {
+ 			printk(KERN_ERR
+-			       "si_mc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->mc_fw->size, fw_name);
++			       "si_mc: Bogus length %zu in firmware\n",
++			       rdev->mc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 		DRM_INFO("%s: %zu bytes\n", fw_name, rdev->mc_fw->size);
+@@ -1839,7 +1839,7 @@
+ 		err = radeon_ucode_validate(rdev->mc_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "si_cp: validation failed for firmware \"%s\"\n",
++			       "si_cp: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -1854,22 +1854,22 @@
+ 		err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "smc: error loading firmware \"%s\"\n",
++			       "smc: error loading firmware\n",
+ 			       fw_name);
+ 			release_firmware(rdev->smc_fw);
+ 			rdev->smc_fw = NULL;
+ 			err = 0;
+ 		} else if (rdev->smc_fw->size != smc_req_size) {
+ 			printk(KERN_ERR
+-			       "si_smc: Bogus length %zu in firmware \"%s\"\n",
+-			       rdev->smc_fw->size, fw_name);
++			       "si_smc: Bogus length %zu in firmware\n",
++			       rdev->smc_fw->size);
+ 			err = -EINVAL;
+ 		}
+ 	} else {
+ 		err = radeon_ucode_validate(rdev->smc_fw);
+ 		if (err) {
+ 			printk(KERN_ERR
+-			       "si_cp: validation failed for firmware \"%s\"\n",
++			       "si_cp: validation failed for firmware\n",
+ 			       fw_name);
+ 			goto out;
+ 		} else {
+@@ -1889,7 +1889,7 @@
+ 	if (err) {
+ 		if (err != -EINVAL)
+ 			printk(KERN_ERR
+-			       "si_cp: Failed to load firmware \"%s\"\n",
++			       "si_cp: Failed to load firmware\n",
+ 			       fw_name);
+ 		release_firmware(rdev->pfp_fw);
+ 		rdev->pfp_fw = NULL;
+diff -ru source.orig/drivers/net/wireless/ipw2x00/ipw2200.c source/drivers/net/wireless/ipw2x00/ipw2200.c
+--- source.orig/drivers/net/wireless/ipw2x00/ipw2200.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/ipw2x00/ipw2200.c	2016-03-08 09:56:39.896386053 -0600
+@@ -3419,12 +3419,12 @@
+ 	/* ask firmware_class module to get the boot firmware off disk */
+ 	rc = request_firmware(raw, name, &priv->pci_dev->dev);
+ 	if (rc < 0) {
+-		IPW_ERROR("%s request_firmware failed: Reason %d\n", name, rc);
++		IPW_ERROR("request_firmware failed: Reason %d\n", rc);
+ 		return rc;
+ 	}
+ 
+ 	if ((*raw)->size < sizeof(*fw)) {
+-		IPW_ERROR("%s is too small (%zd)\n", name, (*raw)->size);
++		IPW_ERROR("Firmware file is too small (%zd)\n", (*raw)->size);
+ 		return -EINVAL;
+ 	}
+ 
+@@ -3432,13 +3432,12 @@
+ 
+ 	if ((*raw)->size < sizeof(*fw) + le32_to_cpu(fw->boot_size) +
+ 	    le32_to_cpu(fw->ucode_size) + le32_to_cpu(fw->fw_size)) {
+-		IPW_ERROR("%s is too small or corrupt (%zd)\n",
+-			  name, (*raw)->size);
++		IPW_ERROR("Firmware file is too small or corrupt (%zd)\n",
++			  (*raw)->size);
+ 		return -EINVAL;
+ 	}
+ 
+-	IPW_DEBUG_INFO("Read firmware '%s' image v%d.%d (%zd bytes)\n",
+-		       name,
++	IPW_DEBUG_INFO("Read firmware image v%d.%d (%zd bytes)\n",
+ 		       le32_to_cpu(fw->ver) >> 16,
+ 		       le32_to_cpu(fw->ver) & 0xff,
+ 		       (*raw)->size - sizeof(*fw));
+@@ -3574,7 +3573,7 @@
+ 	/* DMA the initial boot firmware into the device */
+ 	rc = ipw_load_firmware(priv, boot_img, le32_to_cpu(fw->boot_size));
+ 	if (rc < 0) {
+-		IPW_ERROR("Unable to load boot firmware: %d\n", rc);
++		IPW_ERROR("Unable to load boot firmware\n", rc);
+ 		goto error;
+ 	}
+ 
+@@ -3606,7 +3605,7 @@
+ 	/* DMA bss firmware into the device */
+ 	rc = ipw_load_firmware(priv, fw_img, le32_to_cpu(fw->fw_size));
+ 	if (rc < 0) {
+-		IPW_ERROR("Unable to load firmware: %d\n", rc);
++		IPW_ERROR("Unable to load firmware\n", rc);
+ 		goto error;
+ 	}
+ #ifdef CONFIG_PM
+@@ -11217,7 +11216,7 @@
+ 		 * Also start the clocks. */
+ 		rc = ipw_load(priv);
+ 		if (rc) {
+-			IPW_ERROR("Unable to load firmware: %d\n", rc);
++			IPW_ERROR("Unable to load firmware\n", rc);
+ 			return rc;
+ 		}
+ 
+diff -ru source.orig/drivers/net/wireless/iwlwifi/iwl-drv.c source/drivers/net/wireless/iwlwifi/iwl-drv.c
+--- source.orig/drivers/net/wireless/iwlwifi/iwl-drv.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/iwlwifi/iwl-drv.c	2016-03-11 09:58:11.620355112 -0600
+@@ -247,7 +247,7 @@
+ 			 "%s%c-%s.ucode", name_pre, rev_step, tag);
+ 	}
+ 
+-	IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n",
++	IWL_DEBUG_INFO(drv, "attempting to load firmware\n",
+ 		       (drv->fw_index == UCODE_EXPERIMENTAL_INDEX)
+ 				? "EXPERIMENTAL " : "",
+ 		       drv->firmware_name);
+@@ -1204,7 +1204,7 @@
+ 	if (!ucode_raw) {
+ 		if (drv->fw_index <= api_ok)
+ 			IWL_ERR(drv,
+-				"request for firmware file '%s' failed.\n",
++				"request for firmware file failed.\n",
+ 				drv->firmware_name);
+ 		goto try_again;
+ 	}
+@@ -1259,8 +1259,6 @@
+ 				IWL_ERR(drv, "Firmware has old API version, "
+ 					"expected v%u, got v%u.\n",
+ 					api_max, api_ver);
+-			IWL_ERR(drv, "New firmware can be obtained from "
+-				      "http://www.intellinuxwireless.org/.\n");
+ 		}
+ 	}
+ 
+diff -ru source.orig/drivers/net/wireless/iwlwifi/mvm/nvm.c source/drivers/net/wireless/iwlwifi/mvm/nvm.c
+--- source.orig/drivers/net/wireless/iwlwifi/mvm/nvm.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/iwlwifi/mvm/nvm.c	2016-03-11 09:59:20.872355103 -0600
+@@ -382,7 +382,7 @@
+ 	ret = request_firmware(&fw_entry, mvm->nvm_file_name,
+ 			       mvm->trans->dev);
+ 	if (ret) {
+-		IWL_ERR(mvm, "ERROR: %s isn't available %d\n",
++		IWL_ERR(mvm, "ERROR: firmware isn't available %d\n",
+ 			mvm->nvm_file_name, ret);
+ 		return ret;
+ 	}
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/core.c source/drivers/net/wireless/realtek/rtlwifi/core.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/core.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/core.c	2016-03-11 10:06:19.848355053 -0600
+@@ -110,12 +110,12 @@
+ 			err = request_firmware(&firmware,
+ 					       rtlpriv->cfg->alt_fw_name,
+ 					       rtlpriv->io.dev);
+-			pr_info("Loading alternative firmware %s\n",
++			pr_info("Loading alternative firmware\n",
+ 				rtlpriv->cfg->alt_fw_name);
+ 			if (!err)
+ 				goto found_alt;
+ 		}
+-		pr_err("Firmware %s not available\n", rtlpriv->cfg->fw_name);
++		pr_err("Firmware not available\n", rtlpriv->cfg->fw_name);
+ 		rtlpriv->max_fw_size = 0;
+ 		return;
+ 	}
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c source/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c	2016-03-11 10:07:16.844355047 -0600
+@@ -168,7 +168,7 @@
+ 
+ 	rtlpriv->cfg->fw_name = "rtlwifi/rtl8188efw.bin";
+ 	rtlpriv->max_fw_size = 0x8000;
+-	pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name);
++	pr_info("Requesting firmware\n", rtlpriv->cfg->fw_name);
+ 	err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name,
+ 				      rtlpriv->io.dev, GFP_KERNEL, hw,
+ 				      rtl_fw_cb);
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c source/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c	2016-03-11 10:07:52.720355042 -0600
+@@ -172,7 +172,7 @@
+ 		rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin";
+ 
+ 	rtlpriv->max_fw_size = 0x4000;
+-	pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name);
++	pr_info("Requesting firmware\n", rtlpriv->cfg->fw_name);
+ 	err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name,
+ 				      rtlpriv->io.dev, GFP_KERNEL, hw,
+ 				      rtl_fw_cb);
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c source/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c	2016-03-11 10:08:12.288355040 -0600
+@@ -83,7 +83,7 @@
+ 	}
+ 	/* provide name of alternative file */
+ 	rtlpriv->cfg->alt_fw_name = "rtlwifi/rtl8192cufw.bin";
+-	pr_info("Loading firmware %s\n", rtlpriv->cfg->fw_name);
++	pr_info("Requesting firmware\n", rtlpriv->cfg->fw_name);
+ 	rtlpriv->max_fw_size = 0x4000;
+ 	err = request_firmware_nowait(THIS_MODULE, 1,
+ 				      rtlpriv->cfg->fw_name, rtlpriv->io.dev,
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c source/drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c	2016-03-11 10:09:02.532355034 -0600
+@@ -181,7 +181,7 @@
+ 
+ 	rtlpriv->max_fw_size = 0x8000;
+ 	pr_info("Driver for Realtek RTL8192DE WLAN interface\n");
+-	pr_info("Loading firmware file %s\n", rtlpriv->cfg->fw_name);
++	pr_info("Loading firmware file\n", rtlpriv->cfg->fw_name);
+ 
+ 	/* request fw */
+ 	err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name,
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c source/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c	2016-03-11 10:09:59.548355027 -0600
+@@ -94,7 +94,7 @@
+ 			 "Firmware callback routine entered!\n");
+ 	complete(&rtlpriv->firmware_loading_complete);
+ 	if (!firmware) {
+-		pr_err("Firmware %s not available\n", rtlpriv->cfg->fw_name);
++		pr_err("Firmware not available\n", rtlpriv->cfg->fw_name);
+ 		rtlpriv->max_fw_size = 0;
+ 		return;
+ 	}
+@@ -212,7 +212,7 @@
+ 	rtlpriv->max_fw_size = RTL8190_MAX_FIRMWARE_CODE_SIZE*2 +
+ 			       sizeof(struct fw_hdr);
+ 	pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"
+-		"Loading firmware %s\n", rtlpriv->cfg->fw_name);
++		"Loading firmware\n", rtlpriv->cfg->fw_name);
+ 	/* request fw */
+ 	err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name,
+ 				      rtlpriv->io.dev, GFP_KERNEL, hw,
+diff -ru source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c source/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c
+--- source.orig/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c	2016-01-10 17:01:32.000000000 -0600
++++ source/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c	2016-03-11 10:13:32.548355002 -0600
+@@ -177,7 +177,7 @@
+ 		rtlpriv->cfg->fw_name = "rtlwifi/rtl8723fw_B.bin";
+ 
+ 	rtlpriv->max_fw_size = 0x6000;
+-	pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name);
++	pr_info("Requesting firmware\n", rtlpriv->cfg->fw_name);
+ 	err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name,
+ 				      rtlpriv->io.dev, GFP_KERNEL, hw,
+ 				      rtl_fw_cb);
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c source/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c	2016-08-05 19:32:13.085470325 +0000
+@@ -754,7 +754,7 @@
+ 
+ 		err = amdgpu_ucode_validate(adev->pm.fw);
+ 		if (err) {
+-			DRM_ERROR("Failed to load firmware \"%s\"", fw_name);
++			DRM_ERROR("Failed to load firmware\n", fw_name);
+ 			release_firmware(adev->pm.fw);
+ 			adev->pm.fw = NULL;
+ 			return err;
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c source/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c	2016-08-05 19:36:24.485470295 +0000
+@@ -135,7 +135,7 @@
+ 
+ 	r = request_firmware(&adev->uvd.fw, fw_name, adev->dev);
+ 	if (r) {
+-		dev_err(adev->dev, "amdgpu_uvd: Can't load firmware \"%s\"\n",
++		dev_err(adev->dev, "amdgpu_uvd: Can't load firmware\n",
+ 			fw_name);
+ 		return r;
+ 	}
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c source/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c	2016-08-05 19:35:59.541470298 +0000
+@@ -118,7 +118,7 @@
+ 
+ 	r = request_firmware(&adev->vce.fw, fw_name, adev->dev);
+ 	if (r) {
+-		dev_err(adev->dev, "amdgpu_vce: Can't load firmware \"%s\"\n",
++		dev_err(adev->dev, "amdgpu_vce: Can't load firmware\n",
+ 			fw_name);
+ 		return r;
+ 	}
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/ci_dpm.c source/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/ci_dpm.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/ci_dpm.c	2016-08-05 19:32:41.457470322 +0000
+@@ -5819,7 +5819,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "cik_smc: Failed to load firmware \"%s\"\n",
++		       "cik_smc: Failed to load firmware\n",
+ 		       fw_name);
+ 		release_firmware(adev->pm.fw);
+ 		adev->pm.fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/cik_sdma.c source/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/cik_sdma.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/cik_sdma.c	2016-08-05 19:33:02.493470320 +0000
+@@ -132,7 +132,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "cik_sdma: Failed to load firmware \"%s\"\n",
++		       "cik_sdma: Failed to load firmware\n",
+ 		       fw_name);
+ 		for (i = 0; i < adev->sdma.num_instances; i++) {
+ 			release_firmware(adev->sdma.instance[i].fw);
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c source/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/fiji_dpm.c	2016-08-05 19:33:22.033470317 +0000
+@@ -51,7 +51,7 @@
+ 
+ out:
+ 	if (err) {
+-		DRM_ERROR("Failed to load firmware \"%s\"", fw_name);
++		DRM_ERROR("Failed to load firmware\n", fw_name);
+ 		release_firmware(adev->pm.fw);
+ 		adev->pm.fw = NULL;
+ 	}
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c source/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c	2016-08-05 19:33:36.901470315 +0000
+@@ -975,7 +975,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "gfx7: Failed to load firmware \"%s\"\n",
++		       "gfx7: Failed to load firmware\n",
+ 		       fw_name);
+ 		release_firmware(adev->gfx.pfp_fw);
+ 		adev->gfx.pfp_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c source/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c	2016-08-05 19:30:22.917470339 +0000
+@@ -897,7 +897,7 @@
+ out:
+ 	if (err) {
+ 		dev_err(adev->dev,
+-			"gfx8: Failed to load firmware \"%s\"\n",
++			"gfx8: Failed to load firmware\n",
+ 			fw_name);
+ 		release_firmware(adev->gfx.pfp_fw);
+ 		adev->gfx.pfp_fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c source/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c	2016-08-05 19:33:49.385470314 +0000
+@@ -184,7 +184,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "cik_mc: Failed to load firmware \"%s\"\n",
++		       "cik_mc: Failed to load firmware\n",
+ 		       fw_name);
+ 		release_firmware(adev->mc.fw);
+ 		adev->mc.fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c source/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c	2016-08-05 19:33:58.985470313 +0000
+@@ -225,7 +225,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "mc: Failed to load firmware \"%s\"\n",
++		       "mc: Failed to load firmware\n",
+ 		       fw_name);
+ 		release_firmware(adev->mc.fw);
+ 		adev->mc.fw = NULL;
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c source/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c	2016-01-10 23:01:32.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/iceland_dpm.c	2016-08-05 19:34:21.509470310 +0000
+@@ -51,7 +51,7 @@
+ 
+ out:
+ 	if (err) {
+-		DRM_ERROR("Failed to load firmware \"%s\"", fw_name);
++		DRM_ERROR("Failed to load firmware\n", fw_name);
+ 		release_firmware(adev->pm.fw);
+ 		adev->pm.fw = NULL;
+ 	}
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c source/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c	2016-08-05 19:34:34.061470309 +0000
+@@ -162,7 +162,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "sdma_v2_4: Failed to load firmware \"%s\"\n",
++		       "sdma_v2_4: Failed to load firmware\n",
+ 		       fw_name);
+ 		for (i = 0; i < adev->sdma.num_instances; i++) {
+ 			release_firmware(adev->sdma.instance[i].fw);
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c source/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c	2016-08-05 19:34:46.729470307 +0000
+@@ -258,7 +258,7 @@
+ out:
+ 	if (err) {
+ 		printk(KERN_ERR
+-		       "sdma_v3_0: Failed to load firmware \"%s\"\n",
++		       "sdma_v3_0: Failed to load firmware\n",
+ 		       fw_name);
+ 		for (i = 0; i < adev->sdma.num_instances; i++) {
+ 			release_firmware(adev->sdma.instance[i].fw);
+diff -ru source.orig/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c source/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c
+--- source.orig/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c	2016-08-05 19:27:30.000000000 +0000
++++ source/drivers/gpu/drm/amd/amdgpu/tonga_dpm.c	2016-08-05 19:34:59.469470306 +0000
+@@ -50,7 +50,7 @@
+ 
+ out:
+ 	if (err) {
+-		DRM_ERROR("Failed to load firmware \"%s\"", fw_name);
++		DRM_ERROR("Failed to load firmware\n", fw_name);
+ 		release_firmware(adev->pm.fw);
+ 		adev->pm.fw = NULL;
+ 	}
+diff -ru source.orig/drivers/net/wireless/iwlegacy/3945-mac.c source/drivers/net/wireless/iwlegacy/3945-mac.c
+--- source.orig/drivers/net/wireless/iwlegacy/3945-mac.c	2016-01-10 23:01:32.000000000 +0000
++++ source/drivers/net/wireless/iwlegacy/3945-mac.c	2016-08-05 21:43:05.861469388 +0000
+@@ -1861,7 +1861,7 @@
+ 		sprintf(buf, "%s%u%s", name_pre, idx, ".ucode");
+ 		ret = request_firmware(&ucode_raw, buf, &il->pci_dev->dev);
+ 		if (ret < 0) {
+-			IL_ERR("%s firmware file req failed: %d\n", buf, ret);
++			IL_ERR("Firmware file req failed\n", buf, ret);
+ 			if (ret == -ENOENT)
+ 				continue;
+ 			else
+@@ -1870,7 +1870,7 @@
+ 			if (idx < api_max)
+ 				IL_ERR("Loaded firmware %s, "
+ 				       "which is deprecated. "
+-				       " Please use API v%u instead.\n", buf,
++				       "\n", buf,
+ 				       api_max);
+ 			D_INFO("Got firmware '%s' file "
+ 			       "(%zd bytes) from disk\n", buf, ucode_raw->size);
+@@ -1906,16 +1906,14 @@
+ 
+ 	if (api_ver < api_min || api_ver > api_max) {
+ 		IL_ERR("Driver unable to support your firmware API. "
+-		       "Driver supports v%u, firmware is v%u.\n", api_max,
++		       "\n", api_max,
+ 		       api_ver);
+ 		il->ucode_ver = 0;
+ 		ret = -EINVAL;
+ 		goto err_release;
+ 	}
+ 	if (api_ver != api_max)
+-		IL_ERR("Firmware has old API version. Expected %u, "
+-		       "got %u. New firmware can be obtained "
+-		       "from http://www.intellinuxwireless.org.\n", api_max,
++		IL_ERR("Firmware has old API version\n", api_max,
+ 		       api_ver);
+ 
+ 	IL_INFO("loaded firmware version %u.%u.%u.%u\n",
+diff -ru source.orig/drivers/net/wireless/iwlegacy/4965-mac.c source/drivers/net/wireless/iwlegacy/4965-mac.c
+--- source.orig/drivers/net/wireless/iwlegacy/4965-mac.c	2016-01-10 23:01:32.000000000 +0000
++++ source/drivers/net/wireless/iwlegacy/4965-mac.c	2016-08-05 21:45:04.533469374 +0000
+@@ -4706,7 +4706,7 @@
+ 
+ 	sprintf(il->firmware_name, "%s%s%s", name_pre, tag, ".ucode");
+ 
+-	D_INFO("attempting to load firmware '%s'\n", il->firmware_name);
++	D_INFO("attempting to load firmware\n", il->firmware_name);
+ 
+ 	return request_firmware_nowait(THIS_MODULE, 1, il->firmware_name,
+ 				       &il->pci_dev->dev, GFP_KERNEL, il,
+@@ -4797,7 +4797,7 @@
+ 
+ 	if (!ucode_raw) {
+ 		if (il->fw_idx <= il->cfg->ucode_api_max)
+-			IL_ERR("request for firmware file '%s' failed.\n",
++			IL_ERR("request for firmware failed.\n",
+ 			       il->firmware_name);
+ 		goto try_again;
+ 	}
+@@ -4827,16 +4827,13 @@
+ 	 * on the API version read from firmware header from here on forward
+ 	 */
+ 	if (api_ver < api_min || api_ver > api_max) {
+-		IL_ERR("Driver unable to support your firmware API. "
+-		       "Driver supports v%u, firmware is v%u.\n", api_max,
++		IL_ERR("Driver unable to support your firmware API.\n", api_max,
+ 		       api_ver);
+ 		goto try_again;
+ 	}
+ 
+ 	if (api_ver != api_max)
+-		IL_ERR("Firmware has old API version. Expected v%u, "
+-		       "got v%u. New firmware can be obtained "
+-		       "from http://www.intellinuxwireless.org.\n", api_max,
++		IL_ERR("Firmware has old API version.\n", api_max,
+ 		       api_ver);
+ 
+ 	IL_INFO("loaded firmware version %u.%u.%u.%u\n",
diff --git a/helpers/make-linux b/helpers/make-linux
index 84bde116d..77b71c5ee 100644
--- a/helpers/make-linux
+++ b/helpers/make-linux
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-#    Copyright (C) 2008-2015  Rubén Rodríguez <ruben@trisquel.info>
+#    Copyright (C) 2008-2016  Ruben Rodriguez <ruben@trisquel.info>
 #
 #    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
@@ -18,18 +18,43 @@
 #
 
 
-VERSION=2
+VERSION=1
 
 . ./config
 
 for PATCH in $DATA/*.patch ; do
+  echo $PATCH
   patch -p1 < $PATCH
 done
 
-sh $DATA/deblob-3.13 --force
+rm -rf /tmp/preserve
+mkdir /tmp/preserve
+PRESERVE=$(grep '^+++' $DATA/silent-accept-firmware.patch | /bin/sed 's/+++ //; s/\t.*//;' | cut -d/ -f2- | sort -u )
+for FILE in $PRESERVE; do
+  cp $FILE /tmp/preserve --parents -a
+done
+
+sh $DATA/deblob-4.4 --force
+
+# Extra firmware deblobbing
+for fw in $(find firmware/|grep -i hex$ |grep -v -e dsp56k/bootstrap.bin.ihex -e keyspan_pda)
+do
+ grep -q DEBLOBBED $fw || echo ':/*(DEBLOBBED)*/' > $fw
+done
+
+cp /tmp/preserve/* . -a
+
+# Remove ZFS
+rm zfs spl debian/scripts/misc/update-zfs.sh -rf
+sed '/zfs/d; /spl/d' -i debian.master/reconstruct
+/bin/sed 's/spl-dkms, zfs-dkms//' -i debian/control debian.master/control.d/vars.generic debian.master/control.d/vars.*
+/bin/sed  '/zfs/d' -i debian.master/rules.d/* debian.master/d-i/modules/fs-core-modules debian.master/control.d/generic.inclusion-list debian.master/abi/*/*/*.modules debian/rules debian.master/control.d/vars.*
+/bin/sed '/^define build_zfs/,/^endef/d; /^define install_zfs/,/^endef/d; /zfs/d' -i debian/rules.d/2-binary-arch.mk
 
-rm firmware -rf
-cp -a $DATA/firmware .
+# Remove VBox
+rm ubuntu/vbox* -rf
+sed /vbox/d -i debian.master/info/RECONCILE debian.master/control.d/generic.inclusion-list ubuntu/Makefile 
+sed '/vbox/d' -i debian.master/reconstruct
 
 # Compile with less modules and avoid abi check
 echo 'skipmodule = true' >> debian.master/rules.d/0-common-vars.mk
@@ -43,12 +68,12 @@ sed s/family=ubuntu/family=trisquel/ -i debian/rules.d/0-common-vars.mk
 
 rename s/ubuntu/trisquel/ debian.*/config/config.common.ubuntu 
 
-#sed 's/Linux/Linux-libre/g' debian/control debian/control.stub -i
 find debian* -type f -name *control* -exec sed 's/ with Ubuntu patches//; s/Linux/Linux-libre/g' -i {} \;
 
 # Descriptions should not change based on the build arch
 sed 's/on DESC//; s/PKGVER on/PKGVER/; /^ DESC.$/d;' debian*/control.d/flavour-control.stub -i
 
+sed '/^firmware/d' ./debian*/abi/*/fwinfo -i
 echo > ./debian.master/d-i/firmware/nic-modules
 echo > ./debian.master/d-i/firmware/scsi-modules
 
@@ -56,6 +81,7 @@ echo > ./debian.master/d-i/firmware/scsi-modules
 cat << EOF >> debian.master/config/config.common.trisquel
 CONFIG_IOSCHED_BFQ=y
 CONFIG_CGROUP_BFQIO=y
+CONFIG_BFQ_GROUP_IOSCHED=y
 # CONFIG_DEFAULT_BFQ is not set
 EOF
 cat << EOF >> debian.master/config/i386/config.flavour.lowlatency
@@ -64,10 +90,11 @@ CONFIG_DEFAULT_IOSCHED="BFQ"
 EOF
 cp debian.master/config/i386/config.flavour.lowlatency debian.master/config/amd64/config.flavour.lowlatency
 
-sed '/%s_mc2/s@snprintf.*@snprintf(fw_name, sizeof(fw_name), "/*(DEBLOBBED)*/", chip_name);@' -i drivers/gpu/drm/radeon/si.c drivers/gpu/drm/radeon/cik.c
+# Disable using udev as a fallback for firmware loading
+replace "CONFIG_FW_LOADER_USER_HELPER=y" "CONFIG_FW_LOADER_USER_HELPER=n" debian.master/config
 
 changelog "Removed non-free bits"
 
 cp debian/changelog debian.master/changelog
 
-PARALLEL=true compile
+compile
diff --git a/helpers/make-linux-lts-utopic b/helpers/make-linux-lts-utopic
deleted file mode 100644
index 2b6c47c4c..000000000
--- a/helpers/make-linux-lts-utopic
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-#
-#    Copyright (C) 2008-2015  Ruben Rodriguez <ruben@trisquel.info>
-#    Copyright (C) 2015       Santi Rodriguez <santi@trisquel.info>
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-#
-
-
-VERSION=1
-
-. ./config
-
-for PATCH in $DATA/*.patch ; do
-  echo $PATCH
-  patch -p1 < $PATCH
-done
-
-sh $DATA/deblob-3.16 --force
-
-rm firmware -rf
-cp -a $DATA/firmware .
-
-# Compile with less modules and avoid abi check
-echo 'skipmodule = true' >> debian.master/rules.d/0-common-vars.mk
-echo 'skipabi = true' >> debian.master/rules.d/0-common-vars.mk
-echo 'skipmodule = true' >> debian/rules.d/0-common-vars.mk
-echo 'skipabi = true' >> debian/rules.d/0-common-vars.mk
-
-line=$(grep -n ')-Ubuntu' debian/rules.d/0-common-vars.mk|cut -d: -f1)
-sed $(expr $line - 1 ),$(expr $line + 1 )d debian/rules.d/0-common-vars.mk -i
-sed s/family=ubuntu/family=trisquel/ -i debian/rules.d/0-common-vars.mk
-
-rename s/ubuntu/trisquel/ debian.*/config/config.common.ubuntu 
-
-find debian* -type f -name *control* -exec sed 's/ with Ubuntu patches//; s/Linux/Linux-libre/g' -i {} \;
-
-# Descriptions should not change based on the build arch
-sed 's/on DESC//; s/PKGVER on/PKGVER/; /^ DESC.$/d;' debian*/control.d/flavour-control.stub -i
-
-sed '/^firmware/d' ./debian*/abi/*/fwinfo -i
-echo > ./debian.master/d-i/firmware/nic-modules
-echo > ./debian.master/d-i/firmware/scsi-modules
-
-# Use BFQ scheduler in lowlatency kernels
-cat << EOF >> debian.master/config/config.common.trisquel
-CONFIG_IOSCHED_BFQ=y
-CONFIG_CGROUP_BFQIO=y
-# CONFIG_DEFAULT_BFQ is not set
-EOF
-
-#Enable Dell "airplane mode" button
-cat << EOF >> debian.master/config/config.common.trisquel
-CONFIG_DELL_RBTN=m
-EOF
-
-cp debian.master/config/config.common.trisquel debian.utopic/config/config.common.trisquel
-
-cat << EOF >> debian.master/config/i386/config.flavour.lowlatency
-CONFIG_DEFAULT_BFQ=y
-CONFIG_DEFAULT_IOSCHED="BFQ"
-EOF
-cp debian.master/config/i386/config.flavour.lowlatency debian.master/config/amd64/config.flavour.lowlatency
-cp debian.master/config/i386/config.flavour.lowlatency debian.utopic/config/amd64/config.flavour.lowlatency
-cp debian.master/config/amd64/config.flavour.lowlatency debian.utopic/config/amd64/config.flavour.lowlatency
-
-changelog "Removed non-free bits"
-
-cp debian/changelog debian.master/changelog
-cp debian/changelog debian.utopic/changelog
-
-PARALLEL=true compile
diff --git a/helpers/make-linux-lts-vivid b/helpers/make-linux-lts-vivid
deleted file mode 100644
index d0008fb26..000000000
--- a/helpers/make-linux-lts-vivid
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/sh
-#
-#    Copyright (C) 2008-2015  Ruben Rodriguez <ruben@trisquel.info>
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-#
-
-
-VERSION=1
-
-. ./config
-
-for PATCH in $DATA/*.patch ; do
-  echo $PATCH
-  patch -p1 < $PATCH
-done
-
-sh $DATA/deblob-3.19 --force
-
-#Fix syntax error caused by deblob
-sed -i 's%/,%/",%g' drivers/bluetooth/btusb.c
-
-# Compile with less modules and avoid abi check
-echo 'skipmodule = true' >> debian.master/rules.d/0-common-vars.mk
-echo 'skipabi = true' >> debian.master/rules.d/0-common-vars.mk
-echo 'skipmodule = true' >> debian/rules.d/0-common-vars.mk
-echo 'skipabi = true' >> debian/rules.d/0-common-vars.mk
-
-line=$(grep -n ')-Ubuntu' debian/rules.d/0-common-vars.mk|cut -d: -f1)
-sed $(expr $line - 1 ),$(expr $line + 1 )d debian/rules.d/0-common-vars.mk -i
-sed s/family=ubuntu/family=trisquel/ -i debian/rules.d/0-common-vars.mk
-
-rename s/ubuntu/trisquel/ debian.*/config/config.common.ubuntu 
-
-find debian* -type f -name *control* -exec sed 's/ with Ubuntu patches//; s/Linux/Linux-libre/g' -i {} \;
-
-# Descriptions should not change based on the build arch
-sed 's/on DESC//; s/PKGVER on/PKGVER/; /^ DESC.$/d;' debian*/control.d/flavour-control.stub -i
-
-sed '/^firmware/d' ./debian*/abi/*/fwinfo -i
-echo > ./debian.master/d-i/firmware/nic-modules
-echo > ./debian.master/d-i/firmware/scsi-modules
-
-# Use BFQ scheduler in lowlatency kernels
-cat << EOF >> debian.master/config/config.common.trisquel
-CONFIG_IOSCHED_BFQ=y
-CONFIG_CGROUP_BFQIO=y
-# CONFIG_DEFAULT_BFQ is not set
-EOF
-cp debian.master/config/config.common.trisquel debian.vivid/config/config.common.trisquel
-
-cat << EOF >> debian.master/config/i386/config.flavour.lowlatency
-CONFIG_DEFAULT_BFQ=y
-CONFIG_DEFAULT_IOSCHED="BFQ"
-EOF
-cp debian.master/config/i386/config.flavour.lowlatency debian.master/config/amd64/config.flavour.lowlatency
-cp debian.master/config/i386/config.flavour.lowlatency debian.vivid/config/amd64/config.flavour.lowlatency
-cp debian.master/config/amd64/config.flavour.lowlatency debian.vivid/config/amd64/config.flavour.lowlatency
-
-changelog "Removed non-free bits"
-
-cp debian/changelog debian.master/changelog
-cp debian/changelog debian.vivid/changelog
-
-PARALLEL=true compile
diff --git a/helpers/make-linux-lts-wily b/helpers/make-linux-lts-wily
deleted file mode 100644
index b97e060b4..000000000
--- a/helpers/make-linux-lts-wily
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-#
-#    Copyright (C) 2008-2015  Ruben Rodriguez <ruben@trisquel.info>
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-#
-
-
-VERSION=1
-
-. ./config
-
-for PATCH in $DATA/*.patch ; do
-  echo $PATCH
-  patch -p1 < $PATCH
-done
-
-#
-# Turn off strong stack protection as it requires gcc 4.9+
-#
-/bin/sed -i 's/^.*CONFIG_CC_STACKPROTECTOR_REGULAR.*$/CONFIG_CC_STACKPROTECTOR_REGULAR=y/' debian.wily/config/config.common.ubuntu debian.master/config/config.common.ubuntu
-/bin/sed -i 's/^CONFIG_CC_STACKPROTECTOR_STRONG.*$/# CONFIG_CC_STACKPROTECTOR_STRONG is not set/' debian.wily/config/config.common.ubuntu debian.master/config/config.common.ubuntu
-/bin/sed -i 's/CONFIG_CC_STACKPROTECTOR_STRONG/CONFIG_CC_STACKPROTECTOR_REGULAR/' debian.wily/config/annotations debian.master/config/annotations
-
-sh $DATA/deblob-4.2 --force
-
-# Compile with less modules and avoid abi check
-echo 'skipmodule = true' >> debian.master/rules.d/0-common-vars.mk
-echo 'skipabi = true' >> debian.master/rules.d/0-common-vars.mk
-echo 'skipmodule = true' >> debian/rules.d/0-common-vars.mk
-echo 'skipabi = true' >> debian/rules.d/0-common-vars.mk
-
-line=$(grep -n ')-Ubuntu' debian/rules.d/0-common-vars.mk|cut -d: -f1)
-sed $(expr $line - 1 ),$(expr $line + 1 )d debian/rules.d/0-common-vars.mk -i
-sed s/family=ubuntu/family=trisquel/ -i debian/rules.d/0-common-vars.mk
-
-rename s/ubuntu/trisquel/ debian.*/config/config.common.ubuntu 
-
-find debian* -type f -name *control* -exec sed 's/ with Ubuntu patches//; s/Linux/Linux-libre/g' -i {} \;
-
-# Descriptions should not change based on the build arch
-sed 's/on DESC//; s/PKGVER on/PKGVER/; /^ DESC.$/d;' debian*/control.d/flavour-control.stub -i
-
-sed '/^firmware/d' ./debian*/abi/*/fwinfo -i
-echo > ./debian.master/d-i/firmware/nic-modules
-echo > ./debian.master/d-i/firmware/scsi-modules
-
-# Use BFQ scheduler in lowlatency kernels
-cat << EOF >> debian.master/config/config.common.trisquel
-CONFIG_IOSCHED_BFQ=y
-CONFIG_CGROUP_BFQIO=y
-# CONFIG_DEFAULT_BFQ is not set
-EOF
-cp debian.master/config/config.common.trisquel debian.wily/config/config.common.trisquel
-
-cat << EOF >> debian.master/config/i386/config.flavour.lowlatency
-CONFIG_DEFAULT_BFQ=y
-CONFIG_DEFAULT_IOSCHED="BFQ"
-EOF
-cp debian.master/config/i386/config.flavour.lowlatency debian.master/config/amd64/config.flavour.lowlatency
-cp debian.master/config/i386/config.flavour.lowlatency debian.wily/config/amd64/config.flavour.lowlatency
-cp debian.master/config/amd64/config.flavour.lowlatency debian.wily/config/amd64/config.flavour.lowlatency
-
-changelog "Removed non-free bits"
-
-cp debian/changelog debian.master/changelog
-cp debian/changelog debian.wily/changelog
-
-PARALLEL=true compile
diff --git a/helpers/make-linux-meta b/helpers/make-linux-meta
index 9745e4b75..37fc06197 100644
--- a/helpers/make-linux-meta
+++ b/helpers/make-linux-meta
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-#    Copyright (C) 2013  Rubén Rodríguez <ruben@trisquel.info>
+#    Copyright (C) 2016  Ruben Rodriguez <ruben@trisquel.info>
 #
 #    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
@@ -17,10 +17,9 @@
 #    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 #
 
-VERSION=2
+VERSION=1
 . ./config
 
-
 rm ./debian/control.d/signed-generic
 
 sed 's/, linux-firmware//' -i debian/control ./debian/control.d/generic
@@ -30,4 +29,3 @@ sed '/signed/,/^$/ d' -i debian/control
 changelog "Removed linux-firmware dependency, renamed release for Trisquel"
 
 compile
-
diff --git a/helpers/make-linux-meta-lts-utopic b/helpers/make-linux-meta-lts-utopic
deleted file mode 100644
index 101d5a939..000000000
--- a/helpers/make-linux-meta-lts-utopic
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-#
-#    Copyright (C) 2015  Ruben Rodriguez <ruben@trisquel.info>
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-#
-
-VERSION=1
-. ./config
-
-
-rm ./debian/control.d/signed-generic
-
-sed 's/, linux-firmware//' -i debian/control ./debian/control.d/generic
-sed 's/Linux/Linux-libre/g' -i debian/control ./debian/control.d/generic
-sed '/signed/,/EFI/d' -i debian/control
-
-changelog "Removed linux-firmware dependency, renamed release for Trisquel"
-
-compile
-
diff --git a/helpers/make-linux-meta-lts-vivid b/helpers/make-linux-meta-lts-vivid
deleted file mode 100644
index 23508ee4c..000000000
--- a/helpers/make-linux-meta-lts-vivid
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-#
-#    Copyright (C) 2015  Ruben Rodriguez <ruben@trisquel.info>
-#    Copyright (C) 2015  Santi Rodriguez <santi@trisquel.info>
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-#
-
-VERSION=2
-. ./config
-
-
-rm ./debian/control.d/signed-generic
-
-for FILE in debian/control ./debian/control.d/generic ./debian/control.d/lowlatency \
-            debian/control.d/generic-lpae
-do
-sed 's/, linux-firmware//' -i $FILE
-sed 's/Linux/Linux-libre/g' -i $FILE
-done
-
-
-sed '/signed/,/EFI/d' -i debian/control
-
-changelog "Removed linux-firmware dependency, renamed release for Trisquel"
-
-compile
-
diff --git a/helpers/make-linux-meta-lts-wily b/helpers/make-linux-meta-lts-wily
deleted file mode 100644
index b40d06156..000000000
--- a/helpers/make-linux-meta-lts-wily
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-#
-#    Copyright (C) 2015  Ruben Rodriguez <ruben@trisquel.info>
-#    Copyright (C) 2015  Santi Rodriguez <santi@trisquel.info>
-#
-#    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
-#    the Free Software Foundation; either version 2 of the License, or
-#    (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU General Public License for more details.
-#
-#    You should have received a copy of the GNU General Public License
-#    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-#
-
-VERSION=1
-. ./config
-
-
-rm ./debian/control.d/signed-generic
-
-for FILE in debian/control ./debian/control.d/generic ./debian/control.d/lowlatency \
-            debian/control.d/generic-lpae
-do
-sed 's/, linux-firmware//' -i $FILE
-sed 's/Linux/Linux-libre/g' -i $FILE
-done
-
-
-sed '/signed/,/EFI/d' -i debian/control
-
-changelog "Removed linux-firmware dependency, renamed release for Trisquel"
-
-compile
-
-- 
GitLab