Re: [PATCH 0/4] reST-directive kernel-cmd / include contentent from scripts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Sat, 22 Oct 2016 08:56:29 -0200
Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx> escreveu:

> How many special-case commands are we going to need to run?  Does it
> > really need to go beyond what parse-headers is doing now?  
> 
> Right now, we have actually 2 such cases: kernel-doc and parse-headers.
> 
> I also use a set of perl scripts that I manually run, on each Kernel
> version, to update the cards list of several drivers. It is a total of
> 9 such scripts.

I ended by adding a few more scripts, as ivtv, tm6000 and gspca
cardlists were missing. As result, all three had some documentation
gaps.

As an example of such scripts, I added a PoC patch at my development
tree, at the lkml-books-v2 branch:

	https://git.linuxtv.org/mchehab/experimental.git/log/?h=lkml-books-v2

Patch follows.

As I mentioned before, usually at -rc6 or -rc7, when I remember that a driver
with a cardlist was touched, I run those scripts to make sure that the
driver documentation will reflect the board additions. The scripts
run quick, so, It doesn't hurt much from my side to keep using the same
procedure. There are just a few drawbacks with this:

1) from time to time, third-party patches touch those cardlist tables,
usually not doing exactly the same thing as the script. So, when I run
the script manually, it will replace by the one at the cards definition,
producing an extra patch;

2) sometimes, I just forget running it;

3) as those cardlists are auto-generated, they need to be on a separate
rst file. If we use the kernel-cmd directive, I could write some text
before the cardlist database, and update it independently from the
scripts.

So, I prefer if we could generate it dynamically while building the
documentation.

Thanks,
Mauro

[RFC] [media] cardlists: dynamically generate cardlists from source
    
Instead of manually patch the cardlists by hand, on every Kernel
version, use scripts to auto-generate them when building the
documentation.
    
Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>

diff --git a/Documentation/media/v4l-drivers/au0828-cardlist.rst b/Documentation/media/v4l-drivers/au0828-cardlist.rst
index 82d2567bc7c1..afaef88969b6 100644
--- a/Documentation/media/v4l-drivers/au0828-cardlist.rst
+++ b/Documentation/media/v4l-drivers/au0828-cardlist.rst
@@ -1,13 +1 @@
-AU0828 cards list
-=================
-
-=========== ========================== =======================================================================================================================
-Card number Card name                  USB IDs
-=========== ========================== =======================================================================================================================
-0           Unknown board
-1           Hauppauge HVR950Q          2040:7200, 2040:7210, 2040:7217, 2040:721b, 2040:721e, 2040:721f, 2040:7280, 0fd9:0008, 2040:7260, 2040:7213, 2040:7270
-2           Hauppauge HVR850           2040:7240
-3           DViCO FusionHDTV USB       0fe9:d620
-4           Hauppauge HVR950Q rev xxF8 2040:7201, 2040:7211, 2040:7281
-5           Hauppauge Woodbury         05e1:0480, 2040:8200
-=========== ========================== =======================================================================================================================
+.. kernel-cmd:: au0828-cardlist.pl $srctree/drivers/media/usb/au0828/au0828-cards.h $srctree/drivers/media/usb/au0828/au0828-cards.c
diff --git a/Documentation/media/v4l-drivers/bttv-cardlist.rst b/Documentation/media/v4l-drivers/bttv-cardlist.rst
index 28a01cd6cf2e..3ae5099ffdd3 100644
--- a/Documentation/media/v4l-drivers/bttv-cardlist.rst
+++ b/Documentation/media/v4l-drivers/bttv-cardlist.rst
@@ -1,174 +1 @@
-BTTV cards list
-===============
-
-=========== ================================================================================= ==============================================================================================================================================================================
-Card number Card name                                                                         PCI IDs
-=========== ================================================================================= ==============================================================================================================================================================================
-0            *** UNKNOWN/GENERIC ***
-1           MIRO PCTV
-2           Hauppauge (bt848)
-3           STB, Gateway P/N 6000699 (bt848)
-4           Intel Create and Share PCI/ Smart Video Recorder III
-5           Diamond DTV2000
-6           AVerMedia TVPhone
-7           MATRIX-Vision MV-Delta
-8           Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26
-9           IMS/IXmicro TurboTV
-10          Hauppauge (bt878)                                                                 0070:13eb, 0070:3900, 2636:10b4
-11          MIRO PCTV pro
-12          ADS Technologies Channel Surfer TV (bt848)
-13          AVerMedia TVCapture 98                                                            1461:0002, 1461:0004, 1461:0300
-14          Aimslab Video Highway Xtreme (VHX)
-15          Zoltrix TV-Max                                                                    a1a0:a0fc
-16          Prolink Pixelview PlayTV (bt878)
-17          Leadtek WinView 601
-18          AVEC Intercapture
-19          Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)
-20          CEI Raffles Card
-21          Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50
-22          Askey CPH050/ Phoebe Tv Master + FM                                               14ff:3002
-23          Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878                      14c7:0101
-24          Askey CPH05X/06X (bt878) [many vendors]                                           144f:3002, 144f:3005, 144f:5000, 14ff:3000
-25          Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar
-26          Hauppauge WinCam newer (bt878)
-27          Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50
-28          Terratec TerraTV+ Version 1.1 (bt878)                                             153b:1127, 1852:1852
-29          Imagenation PXC200                                                                1295:200a
-30          Lifeview FlyVideo 98 LR50                                                         1f7f:1850
-31          Formac iProTV, Formac ProTV I (bt848)
-32          Intel Create and Share PCI/ Smart Video Recorder III
-33          Terratec TerraTValue Version Bt878                                                153b:1117, 153b:1118, 153b:1119, 153b:111a, 153b:1134, 153b:5018
-34          Leadtek WinFast 2000/ WinFast 2000 XP                                             107d:6606, 107d:6609, 6606:217d, f6ff:fff6
-35          Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II                              1851:1850, 1851:a050
-36          Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner                           1852:1852
-37          Prolink PixelView PlayTV pro
-38          Askey CPH06X TView99                                                              144f:3000, 144f:a005, a04f:a0fc
-39          Pinnacle PCTV Studio/Rave                                                         11bd:0012, bd11:1200, bd11:ff00, 11bd:ff12
-40          STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100                     10b4:2636, 10b4:2645, 121a:3060
-41          AVerMedia TVPhone 98                                                              1461:0001, 1461:0003
-42          ProVideo PV951                                                                    aa0c:146c
-43          Little OnAir TV
-44          Sigma TVII-FM
-45          MATRIX-Vision MV-Delta 2
-46          Zoltrix Genie TV/FM                                                               15b0:4000, 15b0:400a, 15b0:400d, 15b0:4010, 15b0:4016
-47          Terratec TV/Radio+                                                                153b:1123
-48          Askey CPH03x/ Dynalink Magic TView
-49          IODATA GV-BCTV3/PCI                                                               10fc:4020
-50          Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP
-51          Eagle Wireless Capricorn2 (bt878A)
-52          Pinnacle PCTV Studio Pro
-53          Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS
-54          Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]
-55          Askey CPH031/ BESTBUY Easy TV
-56          Lifeview FlyVideo 98FM LR50                                                       a051:41a0
-57          GrandTec 'Grand Video Capture' (Bt848)                                            4344:4142
-58          Askey CPH060/ Phoebe TV Master Only (No FM)
-59          Askey CPH03x TV Capturer
-60          Modular Technology MM100PCTV
-61          AG Electronics GMV1                                                               15cb:0101
-62          Askey CPH061/ BESTBUY Easy TV (bt878)
-63          ATI TV-Wonder                                                                     1002:0001
-64          ATI TV-Wonder VE                                                                  1002:0003
-65          Lifeview FlyVideo 2000S LR90
-66          Terratec TValueRadio                                                              153b:1135, 153b:ff3b
-67          IODATA GV-BCTV4/PCI                                                               10fc:4050
-68          3Dfx VoodooTV FM (Euro)                                                           10b4:2637
-69          Active Imaging AIMMS
-70          Prolink Pixelview PV-BT878P+ (Rev.4C,8E)
-71          Lifeview FlyVideo 98EZ (capture only) LR51                                        1851:1851
-72          Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)                       1554:4011
-73          Sensoray 311/611                                                                  6000:0311, 6000:0611
-74          RemoteVision MX (RV605)
-75          Powercolor MTV878/ MTV878R/ MTV878F
-76          Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)                               0e11:0079
-77          GrandTec Multi Capture Card (Bt878)
-78          Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF                                 0a01:17de
-79          DSP Design TCVIDEO
-80          Hauppauge WinTV PVR                                                               0070:4500
-81          IODATA GV-BCTV5/PCI                                                               10fc:4070, 10fc:d018
-82          Osprey 100/150 (878)                                                              0070:ff00
-83          Osprey 100/150 (848)
-84          Osprey 101 (848)
-85          Osprey 101/151
-86          Osprey 101/151 w/ svid
-87          Osprey 200/201/250/251
-88          Osprey 200/250                                                                    0070:ff01
-89          Osprey 210/220/230
-90          Osprey 500                                                                        0070:ff02
-91          Osprey 540                                                                        0070:ff04
-92          Osprey 2000                                                                       0070:ff03
-93          IDS Eagle
-94          Pinnacle PCTV Sat                                                                 11bd:001c
-95          Formac ProTV II (bt878)
-96          MachTV
-97          Euresys Picolo
-98          ProVideo PV150                                                                    aa00:1460, aa01:1461, aa02:1462, aa03:1463, aa04:1464, aa05:1465, aa06:1466, aa07:1467
-99          AD-TVK503
-100         Hercules Smart TV Stereo
-101         Pace TV & Radio Card
-102         IVC-200                                                                           0000:a155, 0001:a155, 0002:a155, 0003:a155, 0100:a155, 0101:a155, 0102:a155, 0103:a155, 0800:a155, 0801:a155, 0802:a155, 0803:a155
-103         Grand X-Guard / Trust 814PCI                                                      0304:0102
-104         Nebula Electronics DigiTV                                                         0071:0101
-105         ProVideo PV143                                                                    aa00:1430, aa00:1431, aa00:1432, aa00:1433, aa03:1433
-106         PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)
-107         PHYTEC VD-009-X1 VD-011 Combi (bt878)
-108         PHYTEC VD-009 MiniDIN (bt878)
-109         PHYTEC VD-009 Combi (bt878)
-110         IVC-100                                                                           ff00:a132
-111         IVC-120G                                                                          ff00:a182, ff01:a182, ff02:a182, ff03:a182, ff04:a182, ff05:a182, ff06:a182, ff07:a182, ff08:a182, ff09:a182, ff0a:a182, ff0b:a182, ff0c:a182, ff0d:a182, ff0e:a182, ff0f:a182
-112         pcHDTV HD-2000 TV                                                                 7063:2000
-113         Twinhan DST + clones                                                              11bd:0026, 1822:0001, 270f:fc00, 1822:0026
-114         Winfast VC100                                                                     107d:6607
-115         Teppro TEV-560/InterVision IV-560
-116         SIMUS GVC1100                                                                     aa6a:82b2
-117         NGS NGSTV+
-118         LMLBT4
-119         Tekram M205 PRO
-120         Conceptronic CONTVFMi
-121         Euresys Picolo Tetra                                                              1805:0105, 1805:0106, 1805:0107, 1805:0108
-122         Spirit TV Tuner
-123         AVerMedia AVerTV DVB-T 771                                                        1461:0771
-124         AverMedia AverTV DVB-T 761                                                        1461:0761
-125         MATRIX Vision Sigma-SQ
-126         MATRIX Vision Sigma-SLC
-127         APAC Viewcomp 878(AMAX)
-128         DViCO FusionHDTV DVB-T Lite                                                       18ac:db10, 18ac:db11
-129         V-Gear MyVCD
-130         Super TV Tuner
-131         Tibet Systems 'Progress DVR' CS16
-132         Kodicom 4400R (master)
-133         Kodicom 4400R (slave)
-134         Adlink RTV24
-135         DViCO FusionHDTV 5 Lite                                                           18ac:d500
-136         Acorp Y878F                                                                       9511:1540
-137         Conceptronic CTVFMi v2                                                            036e:109e
-138         Prolink Pixelview PV-BT878P+ (Rev.2E)
-139         Prolink PixelView PlayTV MPEG2 PV-M4900
-140         Osprey 440                                                                        0070:ff07
-141         Asound Skyeye PCTV
-142         Sabrent TV-FM (bttv version)
-143         Hauppauge ImpactVCB (bt878)                                                       0070:13eb
-144         MagicTV
-145         SSAI Security Video Interface                                                     4149:5353
-146         SSAI Ultrasound Video Interface                                                   414a:5353
-147         VoodooTV 200 (USA)                                                                121a:3000
-148         DViCO FusionHDTV 2                                                                dbc0:d200
-149         Typhoon TV-Tuner PCI (50684)
-150         Geovision GV-600                                                                  008a:763c
-151         Kozumi KTV-01C
-152         Encore ENL TV-FM-2                                                                1000:1801
-153         PHYTEC VD-012 (bt878)
-154         PHYTEC VD-012-X1 (bt878)
-155         PHYTEC VD-012-X2 (bt878)
-156         IVCE-8784                                                                         0000:f050, 0001:f050, 0002:f050, 0003:f050
-157         Geovision GV-800(S) (master)                                                      800a:763d
-158         Geovision GV-800(S) (slave)                                                       800b:763d, 800c:763d, 800d:763d
-159         ProVideo PV183                                                                    1830:1540, 1831:1540, 1832:1540, 1833:1540, 1834:1540, 1835:1540, 1836:1540, 1837:1540
-160         Tongwei Video Technology TD-3116                                                  f200:3116
-161         Aposonic W-DVR                                                                    0279:0228
-162         Adlink MPG24
-163         Bt848 Capture 14MHz
-164         CyberVision CV06 (SV)
-165         Kworld V-Stream Xpert TV PVR878
-166         PCI-8604PW
-=========== ================================================================================= ==============================================================================================================================================================================
+.. kernel-cmd:: bttv-cardlist.pl $srctree/drivers/media/pci/bt8xx/bttv.h $srctree/drivers/media/pci/bt8xx/bttv-cards.c
diff --git a/Documentation/media/v4l-drivers/cx23885-cardlist.rst b/Documentation/media/v4l-drivers/cx23885-cardlist.rst
index fd20b50d2c1d..2a76b5a0c147 100644
--- a/Documentation/media/v4l-drivers/cx23885-cardlist.rst
+++ b/Documentation/media/v4l-drivers/cx23885-cardlist.rst
@@ -1,65 +1 @@
-cx23885 cards list
-==================
-
-=========== ==================================== ======================================================================================
-Card number Card name                            PCI IDs
-=========== ==================================== ======================================================================================
-0           UNKNOWN/GENERIC                      0070:3400
-1           Hauppauge WinTV-HVR1800lp            0070:7600
-2           Hauppauge WinTV-HVR1800              0070:7800, 0070:7801, 0070:7809
-3           Hauppauge WinTV-HVR1250              0070:7911
-4           DViCO FusionHDTV5 Express            18ac:d500
-5           Hauppauge WinTV-HVR1500Q             0070:7790, 0070:7797
-6           Hauppauge WinTV-HVR1500              0070:7710, 0070:7717
-7           Hauppauge WinTV-HVR1200              0070:71d1, 0070:71d3
-8           Hauppauge WinTV-HVR1700              0070:8101
-9           Hauppauge WinTV-HVR1400              0070:8010
-10          DViCO FusionHDTV7 Dual Express       18ac:d618
-11          DViCO FusionHDTV DVB-T Dual Express  18ac:db78
-12          Leadtek Winfast PxDVR3200 H          107d:6681
-13          Compro VideoMate E650F               185b:e800
-14          TurboSight TBS 6920                  6920:8888
-15          TeVii S470                           d470:9022
-16          DVBWorld DVB-S2 2005                 0001:2005
-17          NetUP Dual DVB-S2 CI                 1b55:2a2c
-18          Hauppauge WinTV-HVR1270              0070:2211
-19          Hauppauge WinTV-HVR1275              0070:2215, 0070:221d, 0070:22f2
-20          Hauppauge WinTV-HVR1255              0070:2251, 0070:22f1
-21          Hauppauge WinTV-HVR1210              0070:2291, 0070:2295, 0070:2299, 0070:229d, 0070:22f0, 0070:22f3, 0070:22f4, 0070:22f5
-22          Mygica X8506 DMB-TH                  14f1:8651
-23          Magic-Pro ProHDTV Extreme 2          14f1:8657
-24          Hauppauge WinTV-HVR1850              0070:8541
-25          Compro VideoMate E800                1858:e800
-26          Hauppauge WinTV-HVR1290              0070:8551
-27          Mygica X8558 PRO DMB-TH              14f1:8578
-28          LEADTEK WinFast PxTV1200             107d:6f22
-29          GoTView X5 3D Hybrid                 5654:2390
-30          NetUP Dual DVB-T/C-CI RF             1b55:e2e4
-31          Leadtek Winfast PxDVR3200 H XC4000   107d:6f39
-32          MPX-885
-33          Mygica X8502/X8507 ISDB-T            14f1:8502
-34          TerraTec Cinergy T PCIe Dual         153b:117e
-35          TeVii S471                           d471:9022
-36          Hauppauge WinTV-HVR1255              0070:2259
-37          Prof Revolution DVB-S2 8000          8000:3034
-38          Hauppauge WinTV-HVR4400/HVR5500      0070:c108, 0070:c138, 0070:c1f8
-39          AVerTV Hybrid Express Slim HC81R     1461:d939
-40          TurboSight TBS 6981                  6981:8888
-41          TurboSight TBS 6980                  6980:8888
-42          Leadtek Winfast PxPVR2200            107d:6f21
-43          Hauppauge ImpactVCB-e                0070:7133
-44          DViCO FusionHDTV DVB-T Dual Express2 18ac:db98
-45          DVBSky T9580                         4254:9580
-46          DVBSky T980C                         4254:980c
-47          DVBSky S950C                         4254:950c
-48          Technotrend TT-budget CT2-4500 CI    13c2:3013
-49          DVBSky S950                          4254:0950
-50          DVBSky S952                          4254:0952
-51          DVBSky T982                          4254:0982
-52          Hauppauge WinTV-HVR5525              0070:f038
-53          Hauppauge WinTV Starburst            0070:c12a
-54          ViewCast 260e                        1576:0260
-55          ViewCast 460e                        1576:0460
-56          Hauppauge WinTV-QuadHD-DVB           0070:6a28, 0070:6b28
-57          Hauppauge WinTV-QuadHD-ATSC          0070:6a18, 0070:6b18
-=========== ==================================== ======================================================================================
+.. kernel-cmd:: cx23885-cardlist.pl $srctree/drivers/media/pci/cx23885/cx23885.h $srctree/drivers/media/pci/cx23885/cx23885-cards.c
diff --git a/Documentation/media/v4l-drivers/cx88-cardlist.rst b/Documentation/media/v4l-drivers/cx88-cardlist.rst
index 8cc1cea17035..85a71537b98e 100644
--- a/Documentation/media/v4l-drivers/cx88-cardlist.rst
+++ b/Documentation/media/v4l-drivers/cx88-cardlist.rst
@@ -1,98 +1 @@
-CX88 cards list
-===============
-
-=========== =================================================== ======================================================================================
-Card number Card name                                           PCI IDs
-=========== =================================================== ======================================================================================
-0           UNKNOWN/GENERIC
-1           Hauppauge WinTV 34xxx models                        0070:3400, 0070:3401
-2           GDI Black Gold                                      14c7:0106, 14c7:0107
-3           PixelView                                           1554:4811
-4           ATI TV Wonder Pro                                   1002:00f8, 1002:00f9
-5           Leadtek Winfast 2000XP Expert                       107d:6611, 107d:6613
-6           AverTV Studio 303 (M126)                            1461:000b
-7           MSI TV-@nywhere Master                              1462:8606
-8           Leadtek Winfast DV2000                              107d:6620, 107d:6621
-9           Leadtek PVR 2000                                    107d:663b, 107d:663c, 107d:6632, 107d:6630, 107d:6638, 107d:6631, 107d:6637, 107d:663d
-10          IODATA GV-VCP3/PCI                                  10fc:d003
-11          Prolink PlayTV PVR
-12          ASUS PVR-416                                        1043:4823, 1461:c111
-13          MSI TV-@nywhere
-14          KWorld/VStream XPert DVB-T                          17de:08a6
-15          DViCO FusionHDTV DVB-T1                             18ac:db00
-16          KWorld LTV883RF
-17          DViCO FusionHDTV 3 Gold-Q                           18ac:d810, 18ac:d800
-18          Hauppauge Nova-T DVB-T                              0070:9002, 0070:9001, 0070:9000
-19          Conexant DVB-T reference design                     14f1:0187
-20          Provideo PV259                                      1540:2580
-21          DViCO FusionHDTV DVB-T Plus                         18ac:db10, 18ac:db11
-22          pcHDTV HD3000 HDTV                                  7063:3000
-23          digitalnow DNTV Live! DVB-T                         17de:a8a6
-24          Hauppauge WinTV 28xxx (Roslyn) models               0070:2801
-25          Digital-Logic MICROSPACE Entertainment Center (MEC) 14f1:0342
-26          IODATA GV/BCTV7E                                    10fc:d035
-27          PixelView PlayTV Ultra Pro (Stereo)
-28          DViCO FusionHDTV 3 Gold-T                           18ac:d820
-29          ADS Tech Instant TV DVB-T PCI                       1421:0334
-30          TerraTec Cinergy 1400 DVB-T                         153b:1166
-31          DViCO FusionHDTV 5 Gold                             18ac:d500
-32          AverMedia UltraTV Media Center PCI 550              1461:8011
-33          Kworld V-Stream Xpert DVD
-34          ATI HDTV Wonder                                     1002:a101
-35          WinFast DTV1000-T                                   107d:665f
-36          AVerTV 303 (M126)                                   1461:000a
-37          Hauppauge Nova-S-Plus DVB-S                         0070:9201, 0070:9202
-38          Hauppauge Nova-SE2 DVB-S                            0070:9200
-39          KWorld DVB-S 100                                    17de:08b2, 1421:0341
-40          Hauppauge WinTV-HVR1100 DVB-T/Hybrid                0070:9400, 0070:9402
-41          Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile)  0070:9800, 0070:9802
-42          digitalnow DNTV Live! DVB-T Pro                     1822:0025, 1822:0019
-43          KWorld/VStream XPert DVB-T with cx22702             17de:08a1, 12ab:2300
-44          DViCO FusionHDTV DVB-T Dual Digital                 18ac:db50, 18ac:db54
-45          KWorld HardwareMpegTV XPert                         17de:0840, 1421:0305
-46          DViCO FusionHDTV DVB-T Hybrid                       18ac:db40, 18ac:db44
-47          pcHDTV HD5500 HDTV                                  7063:5500
-48          Kworld MCE 200 Deluxe                               17de:0841
-49          PixelView PlayTV P7000                              1554:4813
-50          NPG Tech Real TV FM Top 10                          14f1:0842
-51          WinFast DTV2000 H                                   107d:665e
-52          Geniatech DVB-S                                     14f1:0084
-53          Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T  0070:1404, 0070:1400, 0070:1401, 0070:1402
-54          Norwood Micro TV Tuner
-55          Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM  c180:c980
-56          Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder   0070:9600, 0070:9601, 0070:9602
-57          ADS Tech Instant Video PCI                          1421:0390
-58          Pinnacle PCTV HD 800i                               11bd:0051
-59          DViCO FusionHDTV 5 PCI nano                         18ac:d530
-60          Pinnacle Hybrid PCTV                                12ab:1788
-61          Leadtek TV2000 XP Global                            107d:6f18, 107d:6618, 107d:6619
-62          PowerColor RA330                                    14f1:ea3d
-63          Geniatech X8000-MT DVBT                             14f1:8852
-64          DViCO FusionHDTV DVB-T PRO                          18ac:db30
-65          DViCO FusionHDTV 7 Gold                             18ac:d610
-66          Prolink Pixelview MPEG 8000GT                       1554:4935
-67          Kworld PlusTV HD PCI 120 (ATSC 120)                 17de:08c1
-68          Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid           0070:6900, 0070:6904, 0070:6902
-69          Hauppauge WinTV-HVR4000(Lite) DVB-S/S2              0070:6905, 0070:6906
-70          TeVii S460 DVB-S/S2                                 d460:9022
-71          Omicom SS4 DVB-S/S2 PCI                             A044:2011
-72          TBS 8920 DVB-S/S2                                   8920:8888
-73          TeVii S420 DVB-S                                    d420:9022
-74          Prolink Pixelview Global Extreme                    1554:4976
-75          PROF 7300 DVB-S/S2                                  B033:3033
-76          SATTRADE ST4200 DVB-S/S2                            b200:4200
-77          TBS 8910 DVB-S                                      8910:8888
-78          Prof 6200 DVB-S                                     b022:3022
-79          Terratec Cinergy HT PCI MKII                        153b:1177
-80          Hauppauge WinTV-IR Only                             0070:9290
-81          Leadtek WinFast DTV1800 Hybrid                      107d:6654
-82          WinFast DTV2000 H rev. J                            107d:6f2b
-83          Prof 7301 DVB-S/S2                                  b034:3034
-84          Samsung SMT 7020 DVB-S                              18ac:dc00, 18ac:dccd
-85          Twinhan VP-1027 DVB-S                               1822:0023
-86          TeVii S464 DVB-S/S2                                 d464:9022
-87          Leadtek WinFast DTV2000 H PLUS                      107d:6f42
-88          Leadtek WinFast DTV1800 H (XC4000)                  107d:6f38
-89          Leadtek TV2000 XP Global (SC4100)                   107d:6f36
-90          Leadtek TV2000 XP Global (XC4100)                   107d:6f43
-=========== =================================================== ======================================================================================
+.. kernel-cmd:: cx88-cardlist.pl $srctree/drivers/media/pci/cx88/cx88.h $srctree/drivers/media/pci/cx88/cx88-cards.c
diff --git a/Documentation/media/v4l-drivers/em28xx-cardlist.rst b/Documentation/media/v4l-drivers/em28xx-cardlist.rst
index 76b1d301754c..b08e6eddbb12 100644
--- a/Documentation/media/v4l-drivers/em28xx-cardlist.rst
+++ b/Documentation/media/v4l-drivers/em28xx-cardlist.rst
@@ -1,107 +1 @@
-EM28xx cards list
-=================
-
-=========== ==================================================================== ================ ==================================================================================================================================
-Card number Card name                                                            Empia Chip       USB IDs
-=========== ==================================================================== ================ ==================================================================================================================================
-0           Unknown EM2800 video grabber                                         em2800           eb1a:2800
-1           Unknown EM2750/28xx video grabber                                    em2820 or em2840 eb1a:2710, eb1a:2820, eb1a:2821, eb1a:2860, eb1a:2861, eb1a:2862, eb1a:2863, eb1a:2870, eb1a:2881, eb1a:2883, eb1a:2868, eb1a:2875
-2           Terratec Cinergy 250 USB                                             em2820 or em2840 0ccd:0036
-3           Pinnacle PCTV USB 2                                                  em2820 or em2840 2304:0208
-4           Hauppauge WinTV USB 2                                                em2820 or em2840 2040:4200, 2040:4201
-5           MSI VOX USB 2.0                                                      em2820 or em2840
-6           Terratec Cinergy 200 USB                                             em2800
-7           Leadtek Winfast USB II                                               em2800           0413:6023
-8           Kworld USB2800                                                       em2800
-9           Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker  em2820 or em2840 1b80:e302, 1b80:e304, 2304:0207, 2304:021a, 093b:a003
-10          Hauppauge WinTV HVR 900                                              em2880           2040:6500
-11          Terratec Hybrid XS                                                   em2880
-12          Kworld PVR TV 2800 RF                                                em2820 or em2840
-13          Terratec Prodigy XS                                                  em2880
-14          SIIG AVTuner-PVR / Pixelview Prolink PlayTV USB 2.0                  em2820 or em2840
-15          V-Gear PocketTV                                                      em2800
-16          Hauppauge WinTV HVR 950                                              em2883           2040:6513, 2040:6517, 2040:651b
-17          Pinnacle PCTV HD Pro Stick                                           em2880           2304:0227
-18          Hauppauge WinTV HVR 900 (R2)                                         em2880           2040:6502
-19          EM2860/SAA711X Reference Design                                      em2860
-20          AMD ATI TV Wonder HD 600                                             em2880           0438:b002
-21          eMPIA Technology, Inc. GrabBeeX+ Video Encoder                       em2800           eb1a:2801
-22          EM2710/EM2750/EM2751 webcam grabber                                  em2750           eb1a:2750, eb1a:2751
-23          Huaqi DLCW-130                                                       em2750
-24          D-Link DUB-T210 TV Tuner                                             em2820 or em2840 2001:f112
-25          Gadmei UTV310                                                        em2820 or em2840
-26          Hercules Smart TV USB 2.0                                            em2820 or em2840
-27          Pinnacle PCTV USB 2 (Philips FM1216ME)                               em2820 or em2840
-28          Leadtek Winfast USB II Deluxe                                        em2820 or em2840
-29          EM2860/TVP5150 Reference Design                                      em2860
-30          Videology 20K14XUSB USB2.0                                           em2820 or em2840
-31          Usbgear VD204v9                                                      em2821
-32          Supercomp USB 2.0 TV                                                 em2821
-33          Elgato Video Capture                                                 em2860           0fd9:0033
-34          Terratec Cinergy A Hybrid XS                                         em2860           0ccd:004f
-35          Typhoon DVD Maker                                                    em2860
-36          NetGMBH Cam                                                          em2860
-37          Gadmei UTV330                                                        em2860           eb1a:50a6
-38          Yakumo MovieMixer                                                    em2861
-39          KWorld PVRTV 300U                                                    em2861           eb1a:e300
-40          Plextor ConvertX PX-TV100U                                           em2861           093b:a005
-41          Kworld 350 U DVB-T                                                   em2870           eb1a:e350
-42          Kworld 355 U DVB-T                                                   em2870           eb1a:e355, eb1a:e357, eb1a:e359
-43          Terratec Cinergy T XS                                                em2870
-44          Terratec Cinergy T XS (MT2060)                                       em2870           0ccd:0043
-45          Pinnacle PCTV DVB-T                                                  em2870
-46          Compro, VideoMate U3                                                 em2870           185b:2870
-47          KWorld DVB-T 305U                                                    em2880           eb1a:e305
-48          KWorld DVB-T 310U                                                    em2880
-49          MSI DigiVox A/D                                                      em2880           eb1a:e310
-50          MSI DigiVox A/D II                                                   em2880           eb1a:e320
-51          Terratec Hybrid XS Secam                                             em2880           0ccd:004c
-52          DNT DA2 Hybrid                                                       em2881
-53          Pinnacle Hybrid Pro                                                  em2881
-54          Kworld VS-DVB-T 323UR                                                em2882           eb1a:e323
-55          Terratec Cinnergy Hybrid T USB XS (em2882)                           em2882           0ccd:005e, 0ccd:0042
-56          Pinnacle Hybrid Pro (330e)                                           em2882           2304:0226
-57          Kworld PlusTV HD Hybrid 330                                          em2883           eb1a:a316
-58          Compro VideoMate ForYou/Stereo                                       em2820 or em2840 185b:2041
-59          Pinnacle PCTV HD Mini                                                em2874           2304:023f
-60          Hauppauge WinTV HVR 850                                              em2883           2040:651f
-61          Pixelview PlayTV Box 4 USB 2.0                                       em2820 or em2840
-62          Gadmei TVR200                                                        em2820 or em2840
-63          Kaiomy TVnPC U2                                                      em2860           eb1a:e303
-64          Easy Cap Capture DC-60                                               em2860           1b80:e309
-65          IO-DATA GV-MVP/SZ                                                    em2820 or em2840 04bb:0515
-66          Empire dual TV                                                       em2880
-67          Terratec Grabby                                                      em2860           0ccd:0096, 0ccd:10AF
-68          Terratec AV350                                                       em2860           0ccd:0084
-69          KWorld ATSC 315U HDTV TV Box                                         em2882           eb1a:a313
-70          Evga inDtube                                                         em2882
-71          Silvercrest Webcam 1.3mpix                                           em2820 or em2840
-72          Gadmei UTV330+                                                       em2861
-73          Reddo DVB-C USB TV Box                                               em2870
-74          Actionmaster/LinXcel/Digitus VC211A                                  em2800
-75          Dikom DK300                                                          em2882
-76          KWorld PlusTV 340U or UB435-Q (ATSC)                                 em2870           1b80:a340
-77          EM2874 Leadership ISDBT                                              em2874
-78          PCTV nanoStick T2 290e                                               em28174          2013:024f
-79          Terratec Cinergy H5                                                  em2884           eb1a:2885, 0ccd:10a2, 0ccd:10ad, 0ccd:10b6
-80          PCTV DVB-S2 Stick (460e)                                             em28174          2013:024c
-81          Hauppauge WinTV HVR 930C                                             em2884           2040:1605
-82          Terratec Cinergy HTC Stick                                           em2884           0ccd:00b2
-83          Honestech Vidbox NW03                                                em2860           eb1a:5006
-84          MaxMedia UB425-TC                                                    em2874           1b80:e425
-85          PCTV QuatroStick (510e)                                              em2884           2304:0242
-86          PCTV QuatroStick nano (520e)                                         em2884           2013:0251
-87          Terratec Cinergy HTC USB XS                                          em2884           0ccd:008e, 0ccd:00ac
-88          C3 Tech Digital Duo HDTV/SDTV USB                                    em2884           1b80:e755
-89          Delock 61959                                                         em2874           1b80:e1cc
-90          KWorld USB ATSC TV Stick UB435-Q V2                                  em2874           1b80:e346
-91          SpeedLink Vicious And Devine Laplace webcam                          em2765           1ae7:9003, 1ae7:9004
-92          PCTV DVB-S2 Stick (461e)                                             em28178          2013:0258
-93          KWorld USB ATSC TV Stick UB435-Q V3                                  em2874           1b80:e34c
-94          PCTV tripleStick (292e)                                              em28178          2013:025f, 2040:0264
-95          Leadtek VC100                                                        em2861           0413:6f07
-96          Terratec Cinergy T2 Stick HD                                         em28178          eb1a:8179
-97          Elgato EyeTV Hybrid 2008 INT                                         em2884           0fd9:0018
-98          PLEX PX-BCUD                                                         em28178          3275:0085
-99          Hauppauge WinTV-dualHD DVB                                           em28174          2040:0265
-=========== ==================================================================== ================ ==================================================================================================================================
+.. kernel-cmd:: em28xx-cardlist.pl $srctree/drivers/media/usb/em28xx/em28xx-cards.c   $srctree/drivers/media/usb/em28xx/em28xx.h
diff --git a/Documentation/media/v4l-drivers/ivtv-cardlist.rst b/Documentation/media/v4l-drivers/ivtv-cardlist.rst
index 754ffa820b4c..e9ab6849335f 100644
--- a/Documentation/media/v4l-drivers/ivtv-cardlist.rst
+++ b/Documentation/media/v4l-drivers/ivtv-cardlist.rst
@@ -1,38 +1 @@
-IVTV cards list
-===============
-
-=========== ============================================================= ====================================================
-Card number Card name                                                     PCI IDs
-=========== ============================================================= ====================================================
-0           Hauppauge WinTV PVR-250                                       IVTV16 104d:813d
-1           Hauppauge WinTV PVR-350                                       IVTV16 104d:813d
-2           Hauppauge WinTV PVR-150                                       IVTV16 104d:813d
-3           AVerMedia M179                                                IVTV15 1461:a3cf, IVTV15 1461:a3ce
-4           Yuan MPG600, Kuroutoshikou ITVC16-STVLP                       IVTV16 12ab:fff3, IVTV16 12ab:ffff
-5           YUAN MPG160, Kuroutoshikou ITVC15-STVLP, I/O Data GV-M2TV/PCI IVTV15 10fc:40a0
-6           Yuan PG600, Diamond PVR-550                                   IVTV16 ff92:0070, IVTV16 ffab:0600
-7           Adaptec VideOh! AVC-2410                                      IVTV16 9005:0093
-8           Adaptec VideOh! AVC-2010                                      IVTV16 9005:0092
-9           Nagase Transgear 5000TV                                       IVTV16 1461:bfff
-10          AOpen VA2000MAX-SNT6                                          IVTV16 0000:ff5f
-11          Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP                 IVTV16 12ab:0600, IVTV16 fbab:0600, IVTV16 1154:0523
-12          I/O Data GV-MVP/RX, GV-MVP/RX2W (dual tuner)                  IVTV16 10fc:d01e, IVTV16 10fc:d038, IVTV16 10fc:d039
-13          I/O Data GV-MVP/RX2E                                          IVTV16 10fc:d025
-14          GotView PCI DVD                                               IVTV16 12ab:0600
-15          GotView PCI DVD2 Deluxe                                       IVTV16 ffac:0600
-16          Yuan MPC622                                                   IVTV16 ff01:d998
-17          Digital Cowboy DCT-MTVP1                                      IVTV16 1461:bfff
-18          Yuan PG600-2, GotView PCI DVD Lite                            IVTV16 ffab:0600, IVTV16 ffad:0600
-19          Club3D ZAP-TV1x01                                             IVTV16 ffab:0600
-20          AVerTV MCE 116 Plus                                           IVTV16 1461:c439
-21          ASUS Falcon2                                                  IVTV16 1043:4b66, IVTV16 1043:462e, IVTV16 1043:4b2e
-22          AVerMedia PVR-150 Plus / AVerTV M113 Partsnic (Daewoo) Tuner  IVTV16 1461:c034, IVTV16 1461:c035
-23          AVerMedia EZMaker PCI Deluxe                                  IVTV16 1461:c03f
-24          AVerMedia M104                                                IVTV16 1461:c136
-25          Buffalo PC-MV5L/PCI                                           IVTV16 1154:052b
-26          AVerMedia UltraTV 1500 MCE / AVerTV M113 Philips Tuner        IVTV16 1461:c019, IVTV16 1461:c01b
-27          Sony VAIO Giga Pocket (ENX Kikyou)                            IVTV16 104d:813d
-28          Hauppauge WinTV PVR-350 (V1)                                  IVTV16 104d:813d
-29          Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP (no GR)         IVTV16 104d:813d
-30          Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP (no GR/YCS)     IVTV16 104d:813d
-=========== ============================================================= ====================================================
+.. kernel-cmd:: ivtv-cardlist.pl $srctree/drivers/media/pci/ivtv/ivtv-cards.h $srctree/drivers/media/pci/ivtv/ivtv-cards.c
diff --git a/Documentation/media/v4l-drivers/saa7134-cardlist.rst b/Documentation/media/v4l-drivers/saa7134-cardlist.rst
index a5efa8f4b8e4..6164ba154abe 100644
--- a/Documentation/media/v4l-drivers/saa7134-cardlist.rst
+++ b/Documentation/media/v4l-drivers/saa7134-cardlist.rst
@@ -1,204 +1 @@
-SAA7134 cards list
-==================
-
-=========== ======================================================= ================================================================
-Card number Card name                                               PCI IDs
-=========== ======================================================= ================================================================
-0           UNKNOWN/GENERIC
-1           Proteus Pro [philips reference design]                  1131:2001, 1131:2001
-2           LifeView FlyVIDEO3000                                   5168:0138, 4e42:0138
-3           LifeView/Typhoon FlyVIDEO2000                           5168:0138, 4e42:0138
-4           EMPRESS                                                 1131:6752
-5           SKNet Monster TV                                        1131:4e85
-6           Tevion MD 9717
-7           KNC One TV-Station RDS / Typhoon TV Tuner RDS           1131:fe01, 1894:fe01
-8           Terratec Cinergy 400 TV                                 153b:1142
-9           Medion 5044
-10          Kworld/KuroutoShikou SAA7130-TVPCI
-11          Terratec Cinergy 600 TV                                 153b:1143
-12          Medion 7134                                             16be:0003, 16be:5000
-13          Typhoon TV+Radio 90031
-14          ELSA EX-VISION 300TV                                    1048:226b
-15          ELSA EX-VISION 500TV                                    1048:226a
-16          ASUS TV-FM 7134                                         1043:4842, 1043:4830, 1043:4840
-17          AOPEN VA1000 POWER                                      1131:7133
-18          BMK MPEX No Tuner
-19          Compro VideoMate TV                                     185b:c100
-20          Matrox CronosPlus                                       102B:48d0
-21          10MOONS PCI TV CAPTURE CARD                             1131:2001
-22          AverMedia M156 / Medion 2819                            1461:a70b
-23          BMK MPEX Tuner
-24          KNC One TV-Station DVR                                  1894:a006
-25          ASUS TV-FM 7133                                         1043:4843
-26          Pinnacle PCTV Stereo (saa7134)                          11bd:002b
-27          Manli MuchTV M-TV002
-28          Manli MuchTV M-TV001
-29          Nagase Sangyo TransGear 3000TV                          1461:050c
-30          Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)      1019:4cb4
-31          Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)       1019:4cb5
-32          AVACS SmartTV
-33          AVerMedia DVD EZMaker                                   1461:10ff
-34          Noval Prime TV 7133
-35          AverMedia AverTV Studio 305                             1461:2115
-36          UPMOST PURPLE TV                                        12ab:0800
-37          Items MuchTV Plus / IT-005
-38          Terratec Cinergy 200 TV                                 153b:1152
-39          LifeView FlyTV Platinum Mini                            5168:0212, 4e42:0212, 5169:1502
-40          Compro VideoMate TV PVR/FM                              185b:c100
-41          Compro VideoMate TV Gold+                               185b:c100
-42          Sabrent SBT-TVFM (saa7130)
-43          :Zolid Xpert TV7134
-44          Empire PCI TV-Radio LE
-45          Avermedia AVerTV Studio 307                             1461:9715
-46          AVerMedia Cardbus TV/Radio (E500)                       1461:d6ee
-47          Terratec Cinergy 400 mobile                             153b:1162
-48          Terratec Cinergy 600 TV MK3                             153b:1158
-49          Compro VideoMate Gold+ Pal                              185b:c200
-50          Pinnacle PCTV 300i DVB-T + PAL                          11bd:002d
-51          ProVideo PV952                                          1540:9524
-52          AverMedia AverTV/305                                    1461:2108
-53          ASUS TV-FM 7135                                         1043:4845
-54          LifeView FlyTV Platinum FM / Gold                       5168:0214, 5168:5214, 1489:0214, 5168:0304
-55          LifeView FlyDVB-T DUO / MSI TV@nywhere Duo              5168:0306, 4E42:0306
-56          Avermedia AVerTV 307                                    1461:a70a
-57          Avermedia AVerTV GO 007 FM                              1461:f31f
-58          ADS Tech Instant TV (saa7135)                           1421:0350, 1421:0351, 1421:0370, 1421:1370
-59          Kworld/Tevion V-Stream Xpert TV PVR7134
-60          LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus            5168:0502, 4e42:0502, 1489:0502
-61          Philips TOUGH DVB-T reference design                    1131:2004
-62          Compro VideoMate TV Gold+II
-63          Kworld Xpert TV PVR7134
-64          FlyTV mini Asus Digimatrix                              1043:0210
-65          V-Stream Studio TV Terminator
-66          Yuan TUN-900 (saa7135)
-67          Beholder BeholdTV 409 FM                                0000:4091
-68          GoTView 7135 PCI                                        5456:7135
-69          Philips EUROPA V3 reference design                      1131:2004
-70          Compro Videomate DVB-T300                               185b:c900
-71          Compro Videomate DVB-T200                               185b:c901
-72          RTD Embedded Technologies VFG7350                       1435:7350
-73          RTD Embedded Technologies VFG7330                       1435:7330
-74          LifeView FlyTV Platinum Mini2                           14c0:1212
-75          AVerMedia AVerTVHD MCE A180                             1461:1044
-76          SKNet MonsterTV Mobile                                  1131:4ee9
-77          Pinnacle PCTV 40i/50i/110i (saa7133)                    11bd:002e
-78          ASUSTeK P7131 Dual                                      1043:4862
-79          Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
-80          ASUS Digimatrix TV                                      1043:0210
-81          Philips Tiger reference design                          1131:2018
-82          MSI TV@Anywhere plus                                    1462:6231, 1462:8624
-83          Terratec Cinergy 250 PCI TV                             153b:1160
-84          LifeView FlyDVB Trio                                    5168:0319
-85          AverTV DVB-T 777                                        1461:2c05, 1461:2c05
-86          LifeView FlyDVB-T / Genius VideoWonder DVB-T            5168:0301, 1489:0301
-87          ADS Instant TV Duo Cardbus PTV331                       0331:1421
-88          Tevion/KWorld DVB-T 220RF                               17de:7201
-89          ELSA EX-VISION 700TV                                    1048:226c
-90          Kworld ATSC110/115                                      17de:7350, 17de:7352
-91          AVerMedia A169 B                                        1461:7360
-92          AVerMedia A169 B1                                       1461:6360
-93          Medion 7134 Bridge #2                                   16be:0005
-94          LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB 5168:3306, 5168:3502, 5168:3307, 4e42:3502
-95          LifeView FlyVIDEO3000 (NTSC)                            5169:0138
-96          Medion Md8800 Quadro                                    16be:0007, 16be:0008, 16be:000d
-97          LifeView FlyDVB-S /Acorp TV134DS                        5168:0300, 4e42:0300
-98          Proteus Pro 2309                                        0919:2003
-99          AVerMedia TV Hybrid A16AR                               1461:2c00
-100         Asus Europa2 OEM                                        1043:4860
-101         Pinnacle PCTV 310i                                      11bd:002f
-102         Avermedia AVerTV Studio 507                             1461:9715
-103         Compro Videomate DVB-T200A
-104         Hauppauge WinTV-HVR1110 DVB-T/Hybrid                    0070:6700, 0070:6701, 0070:6702, 0070:6703, 0070:6704, 0070:6705
-105         Terratec Cinergy HT PCMCIA                              153b:1172
-106         Encore ENLTV                                            1131:2342, 1131:2341, 3016:2344
-107         Encore ENLTV-FM                                         1131:230f
-108         Terratec Cinergy HT PCI                                 153b:1175
-109         Philips Tiger - S Reference design
-110         Avermedia M102                                          1461:f31e
-111         ASUS P7131 4871                                         1043:4871
-112         ASUSTeK P7131 Hybrid                                    1043:4876
-113         Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)        1019:4cb6
-114         KWorld DVB-T 210                                        17de:7250
-115         Sabrent PCMCIA TV-PCB05                                 0919:2003
-116         10MOONS TM300 TV Card                                   1131:2304
-117         Avermedia Super 007                                     1461:f01d
-118         Beholder BeholdTV 401                                   0000:4016
-119         Beholder BeholdTV 403                                   0000:4036
-120         Beholder BeholdTV 403 FM                                0000:4037
-121         Beholder BeholdTV 405                                   0000:4050
-122         Beholder BeholdTV 405 FM                                0000:4051
-123         Beholder BeholdTV 407                                   0000:4070
-124         Beholder BeholdTV 407 FM                                0000:4071
-125         Beholder BeholdTV 409                                   0000:4090
-126         Beholder BeholdTV 505 FM                                5ace:5050
-127         Beholder BeholdTV 507 FM / BeholdTV 509 FM              5ace:5070, 5ace:5090
-128         Beholder BeholdTV Columbus TV/FM                        0000:5201
-129         Beholder BeholdTV 607 FM                                5ace:6070
-130         Beholder BeholdTV M6                                    5ace:6190
-131         Twinhan Hybrid DTV-DVB 3056 PCI                         1822:0022
-132         Genius TVGO AM11MCE
-133         NXP Snake DVB-S reference design
-134         Medion/Creatix CTX953 Hybrid                            16be:0010
-135         MSI TV@nywhere A/D v1.1                                 1462:8625
-136         AVerMedia Cardbus TV/Radio (E506R)                      1461:f436
-137         AVerMedia Hybrid TV/Radio (A16D)                        1461:f936
-138         Avermedia M115                                          1461:a836
-139         Compro VideoMate T750                                   185b:c900
-140         Avermedia DVB-S Pro A700                                1461:a7a1
-141         Avermedia DVB-S Hybrid+FM A700                          1461:a7a2
-142         Beholder BeholdTV H6                                    5ace:6290
-143         Beholder BeholdTV M63                                   5ace:6191
-144         Beholder BeholdTV M6 Extra                              5ace:6193
-145         AVerMedia MiniPCI DVB-T Hybrid M103                     1461:f636, 1461:f736
-146         ASUSTeK P7131 Analog
-147         Asus Tiger 3in1                                         1043:4878
-148         Encore ENLTV-FM v5.3                                    1a7f:2008
-149         Avermedia PCI pure analog (M135A)                       1461:f11d
-150         Zogis Real Angel 220
-151         ADS Tech Instant HDTV                                   1421:0380
-152         Asus Tiger Rev:1.00                                     1043:4857
-153         Kworld Plus TV Analog Lite PCI                          17de:7128
-154         Avermedia AVerTV GO 007 FM Plus                         1461:f31d
-155         Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid                 0070:6706, 0070:6708
-156         Hauppauge WinTV-HVR1120 DVB-T/Hybrid                    0070:6707, 0070:6709, 0070:670a
-157         Avermedia AVerTV Studio 507UA                           1461:a11b
-158         AVerMedia Cardbus TV/Radio (E501R)                      1461:b7e9
-159         Beholder BeholdTV 505 RDS                               0000:505B
-160         Beholder BeholdTV 507 RDS                               0000:5071
-161         Beholder BeholdTV 507 RDS                               0000:507B
-162         Beholder BeholdTV 607 FM                                5ace:6071
-163         Beholder BeholdTV 609 FM                                5ace:6090
-164         Beholder BeholdTV 609 FM                                5ace:6091
-165         Beholder BeholdTV 607 RDS                               5ace:6072
-166         Beholder BeholdTV 607 RDS                               5ace:6073
-167         Beholder BeholdTV 609 RDS                               5ace:6092
-168         Beholder BeholdTV 609 RDS                               5ace:6093
-169         Compro VideoMate S350/S300                              185b:c900
-170         AverMedia AverTV Studio 505                             1461:a115
-171         Beholder BeholdTV X7                                    5ace:7595
-172         RoverMedia TV Link Pro FM                               19d1:0138
-173         Zolid Hybrid TV Tuner PCI                               1131:2004
-174         Asus Europa Hybrid OEM                                  1043:4847
-175         Leadtek Winfast DTV1000S                                107d:6655
-176         Beholder BeholdTV 505 RDS                               0000:5051
-177         Hawell HW-404M7
-178         Beholder BeholdTV H7                                    5ace:7190
-179         Beholder BeholdTV A7                                    5ace:7090
-180         Avermedia PCI M733A                                     1461:4155, 1461:4255
-181         TechoTrend TT-budget T-3000                             13c2:2804
-182         Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid                 17de:b136
-183         Compro VideoMate Vista M1F                              185b:c900
-184         Encore ENLTV-FM 3                                       1a7f:2108
-185         MagicPro ProHDTV Pro2 DMB-TH/Hybrid                     17de:d136
-186         Beholder BeholdTV 501                                   5ace:5010
-187         Beholder BeholdTV 503 FM                                5ace:5030
-188         Sensoray 811/911                                        6000:0811, 6000:0911
-189         Kworld PC150-U                                          17de:a134
-190         Asus My Cinema PS3-100                                  1043:48cd
-191         Hawell HW-9004V1
-192         AverMedia AverTV Satellite Hybrid+FM A706               1461:2055
-193         WIS Voyager or compatible                               1905:7007
-194         AverMedia AverTV/505                                    1461:a10a
-195         Leadtek Winfast TV2100 FM                               107d:6f3a
-196         SnaZio* TVPVR PRO                                       1779:13cf
-=========== ======================================================= ================================================================
+.. kernel-cmd:: saa7134-cardlist.pl $srctree/drivers/media/pci/saa7134/saa7134.h $srctree/drivers/media/pci/saa7134/saa7134-cards.c
diff --git a/Documentation/media/v4l-drivers/saa7164-cardlist.rst b/Documentation/media/v4l-drivers/saa7164-cardlist.rst
index 7d17d38df3bc..012c60358e91 100644
--- a/Documentation/media/v4l-drivers/saa7164-cardlist.rst
+++ b/Documentation/media/v4l-drivers/saa7164-cardlist.rst
@@ -1,21 +1 @@
-SAA7164 cards list
-==================
-
-=========== ==================================== ====================
-Card number Card name                            PCI IDs
-=========== ==================================== ====================
-0           Unknown
-1           Generic Rev2
-2           Generic Rev3
-3           Hauppauge WinTV-HVR2250              0070:8880, 0070:8810
-4           Hauppauge WinTV-HVR2200              0070:8980
-5           Hauppauge WinTV-HVR2200              0070:8900
-6           Hauppauge WinTV-HVR2200              0070:8901
-7           Hauppauge WinTV-HVR2250              0070:8891, 0070:8851
-8           Hauppauge WinTV-HVR2250              0070:88A1
-9           Hauppauge WinTV-HVR2200              0070:8940
-10          Hauppauge WinTV-HVR2200              0070:8953
-11          Hauppauge WinTV-HVR2255(proto)       0070:f111
-12          Hauppauge WinTV-HVR2255              0070:f111
-13          Hauppauge WinTV-HVR2205              0070:f123, 0070:f120
-=========== ==================================== ====================
+.. kernel-cmd:: saa7164-cardlist.pl $srctree/drivers/media/pci/saa7164/saa7164.h    $srctree/drivers/media/pci/saa7164/saa7164-cards.c
diff --git a/Documentation/media/v4l-drivers/tm6000-cardlist.rst b/Documentation/media/v4l-drivers/tm6000-cardlist.rst
index ae2952683ccf..58af44eecc0d 100644
--- a/Documentation/media/v4l-drivers/tm6000-cardlist.rst
+++ b/Documentation/media/v4l-drivers/tm6000-cardlist.rst
@@ -1,24 +1 @@
-TM6000 cards list
-=================
-
-=========== ================================================= ==========================================
-Card number Card name                                         USB IDs
-=========== ================================================= ==========================================
-0           Unknown tm6000 video grabber
-1           Generic tm5600 board                              6000:0001
-2           Generic tm6000 board
-3           Generic tm6010 board                              6000:0002
-4           10Moons UT 821
-5           10Moons UT 330
-6           ADSTECH Dual TV USB                               06e1:f332
-7           Freecom Hybrid Stick / Moka DVB-T Receiver Dual   14aa:0620
-8           ADSTECH Mini Dual TV USB                          06e1:b339
-9           Hauppauge WinTV HVR-900H / WinTV USB2-Stick       2040:6600, 2040:6601, 2040:6610, 2040:6611
-10          Beholder Wander DVB-T/TV/FM USB2.0                6000:dec0
-11          Beholder Voyager TV/FM USB2.0                     6000:dec1
-12          Terratec Cinergy Hybrid XE / Cinergy Hybrid-Stick 0ccd:0086, 0ccd:00A5
-13          Twinhan TU501(704D1)                              13d3:3240, 13d3:3241, 13d3:3243, 13d3:3264
-14          Beholder Wander Lite DVB-T/TV/FM USB2.0           6000:dec2
-15          Beholder Voyager Lite TV/FM USB2.0                6000:dec3
-16          Terratec Grabster AV 150/250 MX                   0ccd:0079
-=========== ================================================= ==========================================
+.. kernel-cmd:: tm6000-cardlist.pl $srctree/drivers/media/usb/tm6000/tm6000-cards.c
diff --git a/Documentation/media/v4l-drivers/tuner-cardlist.rst b/Documentation/media/v4l-drivers/tuner-cardlist.rst
index 276dd90e0c59..b2a04dc396d5 100644
--- a/Documentation/media/v4l-drivers/tuner-cardlist.rst
+++ b/Documentation/media/v4l-drivers/tuner-cardlist.rst
@@ -1,98 +1 @@
-Tuner cards list
-================
-
-============ =====================================================
-Tuner number Card name
-============ =====================================================
-0            Temic PAL (4002 FH5)
-1            Philips PAL_I (FI1246 and compatibles)
-2            Philips NTSC (FI1236,FM1236 and compatibles)
-3            Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)
-4            NoTuner
-5            Philips PAL_BG (FI1216 and compatibles)
-6            Temic NTSC (4032 FY5)
-7            Temic PAL_I (4062 FY5)
-8            Temic NTSC (4036 FY5)
-9            Alps HSBH1
-10           Alps TSBE1
-11           Alps TSBB5
-12           Alps TSBE5
-13           Alps TSBC5
-14           Temic PAL_BG (4006FH5)
-15           Alps TSCH6
-16           Temic PAL_DK (4016 FY5)
-17           Philips NTSC_M (MK2)
-18           Temic PAL_I (4066 FY5)
-19           Temic PAL* auto (4006 FN5)
-20           Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5)
-21           Temic NTSC (4039 FR5)
-22           Temic PAL/SECAM multi (4046 FM5)
-23           Philips PAL_DK (FI1256 and compatibles)
-24           Philips PAL/SECAM multi (FQ1216ME)
-25           LG PAL_I+FM (TAPC-I001D)
-26           LG PAL_I (TAPC-I701D)
-27           LG NTSC+FM (TPI8NSR01F)
-28           LG PAL_BG+FM (TPI8PSB01D)
-29           LG PAL_BG (TPI8PSB11D)
-30           Temic PAL* auto + FM (4009 FN5)
-31           SHARP NTSC_JP (2U5JF5540)
-32           Samsung PAL TCPM9091PD27
-33           MT20xx universal
-34           Temic PAL_BG (4106 FH5)
-35           Temic PAL_DK/SECAM_L (4012 FY5)
-36           Temic NTSC (4136 FY5)
-37           LG PAL (newer TAPC series)
-38           Philips PAL/SECAM multi (FM1216ME MK3)
-39           LG NTSC (newer TAPC series)
-40           HITACHI V7-J180AT
-41           Philips PAL_MK (FI1216 MK)
-42           Philips FCV1236D ATSC/NTSC dual in
-43           Philips NTSC MK3 (FM1236MK3 or FM1236/F)
-44           Philips 4 in 1 (ATI TV Wonder Pro/Conexant)
-45           Microtune 4049 FM5
-46           Panasonic VP27s/ENGE4324D
-47           LG NTSC (TAPE series)
-48           Tenna TNF 8831 BGFF)
-49           Microtune 4042 FI5 ATSC/NTSC dual in
-50           TCL 2002N
-51           Philips PAL/SECAM_D (FM 1256 I-H3)
-52           Thomson DTT 7610 (ATSC/NTSC)
-53           Philips FQ1286
-54           Philips/NXP TDA 8290/8295 + 8275/8275A/18271
-55           TCL 2002MB
-56           Philips PAL/SECAM multi (FQ1216AME MK4)
-57           Philips FQ1236A MK4
-58           Ymec TVision TVF-8531MF/8831MF/8731MF
-59           Ymec TVision TVF-5533MF
-60           Thomson DTT 761X (ATSC/NTSC)
-61           Tena TNF9533-D/IF/TNF9533-B/DF
-62           Philips TEA5767HN FM Radio
-63           Philips FMD1216ME MK3 Hybrid Tuner
-64           LG TDVS-H06xF
-65           Ymec TVF66T5-B/DFF
-66           LG TALN series
-67           Philips TD1316 Hybrid Tuner
-68           Philips TUV1236D ATSC/NTSC dual in
-69           Tena TNF 5335 and similar models
-70           Samsung TCPN 2121P30A
-71           Xceive xc2028/xc3028 tuner
-72           Thomson FE6600
-73           Samsung TCPG 6121P30A
-75           Philips TEA5761 FM Radio
-76           Xceive 5000 tuner
-77           TCL tuner MF02GIP-5N-E
-78           Philips FMD1216MEX MK3 Hybrid Tuner
-79           Philips PAL/SECAM multi (FM1216 MK5)
-80           Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough
-81           Partsnic (Daewoo) PTI-5NF05
-82           Philips CU1216L
-83           NXP TDA18271
-84           Sony BTF-Pxn01Z
-85           Philips FQ1236 MK5
-86           Tena TNF5337 MFD
-87           Xceive 4000 tuner
-88           Xceive 5000C tuner
-89           Sony BTF-PG472Z PAL/SECAM
-90           Sony BTF-PK467Z NTSC-M-JP
-91           Sony BTF-PB463Z NTSC-M
-============ =====================================================
+.. kernel-cmd:: tuner-cardlist.pl $srctree/include/media/tuner.h $srctree/drivers/media/tuners/tuner-types.c
diff --git a/Documentation/media/v4l-drivers/usbvision-cardlist.rst b/Documentation/media/v4l-drivers/usbvision-cardlist.rst
index 44d53dff0984..014496c6b435 100644
--- a/Documentation/media/v4l-drivers/usbvision-cardlist.rst
+++ b/Documentation/media/v4l-drivers/usbvision-cardlist.rst
@@ -1,74 +1 @@
-USBvision cards list
-====================
-
-=========== ======================================================== =========
-Card number Card name                                                USB IDs
-=========== ======================================================== =========
-0           Xanboo                                                   0a6f:0400
-1           Belkin USB VideoBus II Adapter                           050d:0106
-2           Belkin Components USB VideoBus                           050d:0207
-3           Belkin USB VideoBus II                                   050d:0208
-4           echoFX InterView Lite                                    0571:0002
-5           USBGear USBG-V1 resp. HAMA USB                           0573:0003
-6           D-Link V100                                              0573:0400
-7           X10 USB Camera                                           0573:2000
-8           Hauppauge WinTV USB Live (PAL B/G)                       0573:2d00
-9           Hauppauge WinTV USB Live Pro (NTSC M/N)                  0573:2d01
-10          Zoran Co. PMD (Nogatech) AV-grabber Manhattan            0573:2101
-11          Nogatech USB-TV (NTSC) FM                                0573:4100
-12          PNY USB-TV (NTSC) FM                                     0573:4110
-13          PixelView PlayTv-USB PRO (PAL) FM                        0573:4450
-14          ZTV ZT-721 2.4GHz USB A/V Receiver                       0573:4550
-15          Hauppauge WinTV USB (NTSC M/N)                           0573:4d00
-16          Hauppauge WinTV USB (PAL B/G)                            0573:4d01
-17          Hauppauge WinTV USB (PAL I)                              0573:4d02
-18          Hauppauge WinTV USB (PAL/SECAM L)                        0573:4d03
-19          Hauppauge WinTV USB (PAL D/K)                            0573:4d04
-20          Hauppauge WinTV USB (NTSC FM)                            0573:4d10
-21          Hauppauge WinTV USB (PAL B/G FM)                         0573:4d11
-22          Hauppauge WinTV USB (PAL I FM)                           0573:4d12
-23          Hauppauge WinTV USB (PAL D/K FM)                         0573:4d14
-24          Hauppauge WinTV USB Pro (NTSC M/N)                       0573:4d2a
-25          Hauppauge WinTV USB Pro (NTSC M/N) V2                    0573:4d2b
-26          Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L)          0573:4d2c
-27          Hauppauge WinTV USB Pro (NTSC M/N) V3                    0573:4d20
-28          Hauppauge WinTV USB Pro (PAL B/G)                        0573:4d21
-29          Hauppauge WinTV USB Pro (PAL I)                          0573:4d22
-30          Hauppauge WinTV USB Pro (PAL/SECAM L)                    0573:4d23
-31          Hauppauge WinTV USB Pro (PAL D/K)                        0573:4d24
-32          Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L)             0573:4d25
-33          Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L) V2          0573:4d26
-34          Hauppauge WinTV USB Pro (PAL B/G) V2                     0573:4d27
-35          Hauppauge WinTV USB Pro (PAL B/G,D/K)                    0573:4d28
-36          Hauppauge WinTV USB Pro (PAL I,D/K)                      0573:4d29
-37          Hauppauge WinTV USB Pro (NTSC M/N FM)                    0573:4d30
-38          Hauppauge WinTV USB Pro (PAL B/G FM)                     0573:4d31
-39          Hauppauge WinTV USB Pro (PAL I FM)                       0573:4d32
-40          Hauppauge WinTV USB Pro (PAL D/K FM)                     0573:4d34
-41          Hauppauge WinTV USB Pro (Temic PAL/SECAM B/G/I/D/K/L FM) 0573:4d35
-42          Hauppauge WinTV USB Pro (Temic PAL B/G FM)               0573:4d36
-43          Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L FM)       0573:4d37
-44          Hauppauge WinTV USB Pro (NTSC M/N FM) V2                 0573:4d38
-45          Camtel Technology USB TV Genie Pro FM Model TVB330       0768:0006
-46          Digital Video Creator I                                  07d0:0001
-47          Global Village GV-007 (NTSC)                             07d0:0002
-48          Dazzle Fusion Model DVC-50 Rev 1 (NTSC)                  07d0:0003
-49          Dazzle Fusion Model DVC-80 Rev 1 (PAL)                   07d0:0004
-50          Dazzle Fusion Model DVC-90 Rev 1 (SECAM)                 07d0:0005
-51          Eskape Labs MyTV2Go                                      07f8:9104
-52          Pinnacle Studio PCTV USB (PAL)                           2304:010d
-53          Pinnacle Studio PCTV USB (SECAM)                         2304:0109
-54          Pinnacle Studio PCTV USB (PAL) FM                        2304:0110
-55          Miro PCTV USB                                            2304:0111
-56          Pinnacle Studio PCTV USB (NTSC) FM                       2304:0112
-57          Pinnacle Studio PCTV USB (PAL) FM V2                     2304:0210
-58          Pinnacle Studio PCTV USB (NTSC) FM V2                    2304:0212
-59          Pinnacle Studio PCTV USB (PAL) FM V3                     2304:0214
-60          Pinnacle Studio Linx Video input cable (NTSC)            2304:0300
-61          Pinnacle Studio Linx Video input cable (PAL)             2304:0301
-62          Pinnacle PCTV Bungee USB (PAL) FM                        2304:0419
-63          Hauppauge WinTv-USB                                      2400:4200
-64          Pinnacle Studio PCTV USB (NTSC) FM V3                    2304:0113
-65          Nogatech USB MicroCam NTSC (NV3000N)                     0573:3000
-66          Nogatech USB MicroCam PAL (NV3001P)                      0573:3001
-=========== ======================================================== =========
+.. kernel-cmd:: usbvision-cardlist.pl $srctree/drivers/media/usb/usbvision/usbvision-cards.h $srctree/drivers/media/usb/usbvision/usbvision-cards.c
diff --git a/Documentation/sphinx/au0828-cardlist.pl b/Documentation/sphinx/au0828-cardlist.pl
new file mode 100755
index 000000000000..5425a7af3f5b
--- /dev/null
+++ b/Documentation/sphinx/au0828-cardlist.pl
@@ -0,0 +1,66 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(AU08[\d]._BOARD_\w+)\s+(\d+)/) {
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# au0828_boards
+	if (/\[(AU0828_BOARD_\w+)\]/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+		$data{$id}->{type} = "(au0828)";
+	};
+
+	next unless defined($id);
+
+	if (/USB_DEVICE.*0x([0-9a-fA-F]*).*0x([0-9a-fA-F]*)/ ) {
+		$subvendor=$1;
+		$subdevice=$2;
+	}
+
+	if (/.*driver_info.*(AU08[\d]._BOARD_\w+)/ ) {
+		my $name = "$subvendor:$subdevice";
+		if ($data{$1}->{subid}) {
+			$data{$1}->{subid} .= ", " . $name;
+		} else {
+			$data{$1}->{subid} = $name;
+		}
+		$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+	}
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+			$len = length($1) if (length($1) > $len);
+		}
+	}
+}
+
+print "AU0828 cards list\n";
+print "=================\n\n";
+
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "USB IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/bttv-cardlist.pl b/Documentation/sphinx/bttv-cardlist.pl
new file mode 100755
index 000000000000..fc6056042fe7
--- /dev/null
+++ b/Documentation/sphinx/bttv-cardlist.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+my $pciid = 0;
+
+while (<>) {
+	# defines in header file
+        if (/#define\s+(BTTV_BOARD_\w+)\s+0x([0-9a-fA-F]*).*/) {
+		$data{$1}->{nr} = hex $2;
+
+		next;
+	}
+	# cx88_boards
+	if (/\[(BTTV_BOARD_\w+)\]/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+#		$data{$id}->{nr} = $nr++;
+	};
+	if (/0x([0-9a-fA-F]...)([0-9a-fA-F]...)/) {
+		$subvendor = $2;
+		$subdevice = $1;
+		if (/(BTTV_BOARD_\w+)/) {
+			my $name = "$subvendor:$subdevice";
+			if ($data{$1}->{subid}) {
+				$data{$1}->{subid} .= ", " . $name;
+			} else {
+				$data{$1}->{subid} = $name;
+			}
+			$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+
+			undef $subvendor;
+			undef $subdevice;
+		}
+	}
+
+	next unless defined($id);
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+			$len = length($1) if (length($1) > $len);
+		}
+	}
+
+	if (/0x([0-9]...)([0-9]...)/) {
+		$subvendor = $1;
+		$subdevice = $2;
+	}
+
+}
+
+print "BTTV cards list\n";
+print "===============\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "PCI IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/cx23885-cardlist.pl b/Documentation/sphinx/cx23885-cardlist.pl
new file mode 100755
index 000000000000..7de92cdb4643
--- /dev/null
+++ b/Documentation/sphinx/cx23885-cardlist.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl -w
+use strict;
+
+my %map = (
+	   "PCI_ANY_ID"            => "0",
+);
+
+sub fix_id($) {
+	my $id = shift;
+	$id = $map{$id} if defined($map{$id});
+	$id =~ s/^0x//;
+	return $id;
+}
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(CX23885_BOARD_\w+)\s+(\d+)/) {
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# cx88_boards
+	if (/\[(CX23885_BOARD_\w+)\]/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+#		$data{$id}->{nr} = $nr++;
+	};
+	next unless defined($id);
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+			$len = length($1) if (length($1) > $len);
+		}
+	}
+
+	# cx88_pci_tbl
+	$subvendor = fix_id($1) if (/\.subvendor\s*=\s*(\w+),/);
+	$subdevice = fix_id($1) if (/\.subdevice\s*=\s*(\w+),/);
+	if (/.card\s*=\s*(\w+),/) {
+		if (defined($data{$1})  &&
+		    defined($subvendor) && $subvendor ne "0" &&
+		    defined($subdevice) && $subdevice ne "0") {
+			my $name = "$subvendor:$subdevice";
+			if ($data{$1}->{subid}) {
+				$data{$1}->{subid} .= ", " . $name;
+			} else {
+				$data{$1}->{subid} = $name;
+			}
+			$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+			undef $subvendor;
+			undef $subdevice;
+		}
+	}
+}
+
+print "cx23885 cards list\n";
+print "==================\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "PCI IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/cx88-cardlist.pl b/Documentation/sphinx/cx88-cardlist.pl
new file mode 100755
index 000000000000..e66a71840777
--- /dev/null
+++ b/Documentation/sphinx/cx88-cardlist.pl
@@ -0,0 +1,78 @@
+#!/usr/bin/perl -w
+use strict;
+
+my %map = (
+	   "PCI_ANY_ID"            => "0",
+	   "PCI_VENDOR_ID_PHILIPS" => "1131",
+	   "PCI_VENDOR_ID_ASUSTEK" => "1043",
+	   "PCI_VENDOR_ID_MATROX"  => "102B",
+	   "PCI_VENDOR_ID_ATI"     => "1002",
+);
+
+sub fix_id($) {
+	my $id = shift;
+	$id = $map{$id} if defined($map{$id});
+	$id =~ s/^0x//;
+	return $id;
+}
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(CX88_BOARD_\w+)\s+(\d+)/) {
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# cx88_boards
+	if (/\[(CX88_BOARD_\w+)\]/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+	};
+	next unless defined($id);
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		$data{$id}->{name} = $1 if (/\.name\s*=\s*\"([^\"]+)\"/);
+		$len = length($1) if (length($1) > $len);
+	}
+
+	# cx88_pci_tbl
+	$subvendor = fix_id($1) if (/\.subvendor\s*=\s*(\w+),/);
+	$subdevice = fix_id($1) if (/\.subdevice\s*=\s*(\w+),/);
+	if (/.card\s*=\s*(\w+),/) {
+		if (defined($data{$1})  &&
+		    defined($subvendor) && $subvendor ne "0" &&
+		    defined($subdevice) && $subdevice ne "0") {
+			my $name = "$subvendor:$subdevice";
+			if ($data{$1}->{subid}) {
+				$data{$1}->{subid} .= ", " . $name;
+			} else {
+				$data{$1}->{subid} = $name;
+			}
+			$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+		}
+	}
+}
+
+print "CX88 cards list\n";
+print "===============\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "PCI IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/em28xx-cardlist.pl b/Documentation/sphinx/em28xx-cardlist.pl
new file mode 100755
index 000000000000..d8ebacc443ab
--- /dev/null
+++ b/Documentation/sphinx/em28xx-cardlist.pl
@@ -0,0 +1,84 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+my $debug = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(EM2[\d]+_BOARD_[\w\d_]+)\s+(\d+)/) {
+		printf("$1 = $2\n") if ($debug);
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# em2820_boards
+	if (/\[(EM2820_BOARD_[\w\d_]+)\]/) {
+		$id = $1;
+		printf("ID = $id\n") if $debug;
+		$data{$id}->{id} = $id;
+		$data{$id}->{type} = "em2820 or em2840";
+		$data{$id}->{qtd}++;
+	} elsif (/\[(EM)(2[\d]+)(_BOARD_[\w\d_]+)\]/) {
+		$id = "$1$2$3";
+		printf("ID = $id\n") if $debug;
+		$data{$id}->{id} = $id;
+		$data{$id}->{type} = "em$2";
+		$data{$id}->{qtd}++;
+	};
+
+	next unless defined($id);
+
+	if (/USB_DEVICE.*0x([0-9a-fA-F]+)\s*\,\s*0x([0-9a-fA-F]+)/ ) {
+		$subvendor=$1;
+		$subdevice=$2;
+	}
+
+	if (/.*driver_info.*(EM2[\d]+_BOARD_[\w\d_]+)/ ) {
+		my $name = "$subvendor:$subdevice";
+		if ($data{$1}->{subid}) {
+			$data{$1}->{subid} .= ", " . $name;
+		} else {
+			$data{$1}->{subid} = $name;
+		}
+		$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+	}
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+			printf("name[$id] = %s\n", $data{$id}->{name}) if ($debug);
+			$len = length($1) if (length($1) > $len);
+		}
+	}
+}
+
+print "EM28xx cards list\n";
+print "=================\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x 16 . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %-16s %s\n",
+		"Card number", "Card name", "Empia Chip", "USB IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x 16 . " " . "=" x $idlen . "\n";
+
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %-16s %s\n",
+			$data{$item}->{nr}, $data{$item}->{name},
+			$data{$item}->{type}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	print $s;
+
+	printf "(%d entries)", $data{$item}->{qtd} if ($debug);
+}
+
+print "=========== " . "=" x $len . " " . "=" x 16 . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/ivtv-cardlist.pl b/Documentation/sphinx/ivtv-cardlist.pl
new file mode 100755
index 000000000000..a26284683466
--- /dev/null
+++ b/Documentation/sphinx/ivtv-cardlist.pl
@@ -0,0 +1,133 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $debug = 0;
+
+my %map = (
+	"PCI_DEVICE_ID_IVTV15"	=> "0803",
+	"PCI_DEVICE_ID_IVTV16"	=> "0016",
+	"PCI_ANY_ID"            => "0",
+);
+
+sub fix_id($) {
+	my $id = shift;
+	if (defined($map{$id})) {
+		$id = $map{$id};
+	} else {
+		$id = sprintf "%04x", hex($id);
+	}
+	return $id;
+}
+
+my $new_entry = -1;
+my $nr = -1;
+my ($id,$pci);
+my %data;
+my %number;
+my %pci_map;
+my $len = 0;
+my $idlen = 0;
+
+my $last;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(IVTV_CARD_[\w\d\_]+)\s+(\d+)/) {
+		my $c = $1;
+		my $n = $2;
+		if (/IVTV_CARD_LAST/) {
+			printf("$c = $n\n") if ($debug);
+			$last = $n;
+			next;
+		};
+		next if (/IVTV_CARD_INPUT_/);
+		next if (/IVTV_CARD_MAX_/);
+		$number{$c} = $n;
+		printf("$c = $n\n") if ($debug);
+		next;
+	}
+
+	if (/#define\s+(IVTV_CARD_[\w\d\_]+)\s+.*IVTV_CARD_LAST\s*\+\s*(\d+)/) {
+		$number{$1} = $2 + $last;
+		printf("$1 = %d\n", $number{$1}) if ($debug);
+		next;
+	}
+	if (/#define\s+(IVTV_PCI_ID_\w+)\s+0x([\w\d]+)/) {
+		$map{$1} = $2;
+		printf("$1 = $2\n") if ($debug);
+		next;
+	}
+	#  ivtv-cards
+	if (m/static const struct ivtv_card\s+([\w\d_]+)/) {
+		$id = $1;
+	}
+
+	if (m/static const struct ivtv_card_pci_info\s+([\w\d_]+)/) {
+		$pci = $1;
+	}
+
+	if (defined($id)) {
+		if (m/^\};$/) {
+			undef $id;
+			next;
+		}
+
+		if (/.type\s*=\s*(IVTV_CARD_\w+)/) {
+			$nr = $number{$1};
+			printf("ID#$nr: $id\n") if ($debug);
+			$data{$id}->{nr} = $nr;
+		};
+
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			printf("ID#$nr: $id, name $1\n") if ($debug);
+			$data{$id}->{id} = $id;
+			$data{$id}->{name} = $1;
+			$len = length($1) if (length($1) > $len);
+		}
+
+		if (/\.pci_list\s*=\s*([\w\d_]+)/) {
+			$data{$id}->{pci} = $1;
+			printf("pci map for $id: $1\n") if ($debug);
+		}
+	}
+
+	if (defined ($pci)) {
+		if (m/PCI_DEVICE_ID_(\S+)\s*\,\s*(\S+)\s*\,\s*0x(\S+)/) {
+			my $ivtv = $1;
+			my $vend = fix_id($2);
+			my $sub = fix_id($3);
+			my $name = "$ivtv $vend:$sub";
+			printf "pci map: $pci, PCI ID %name\n", if ($debug);
+			if (defined($pci_map{$pci})) {
+				$pci_map{$pci} .= ", " . $name;
+			} else {
+				$pci_map{$pci} = $name;
+			}
+			$idlen = length($pci_map{$pci}) if (length($pci_map{$pci}) > $idlen);
+		}
+	}
+}
+
+print "IVTV cards list\n";
+print "===============\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "PCI IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	printf "ITEM: $item\n" if ($debug);
+	printf "PCI map: $pci\n" if ($debug && $pci);
+
+	$pci = $data{$item}->{pci} if defined $data{$item}->{pci};
+
+	$pci_map{$pci} = "" if (!$pci_map{$pci});
+
+	my $s = sprintf "%-11s %-${len}s %s\n",
+		$data{$item}->{nr}, $data{$item}->{name}, $pci_map{$pci};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/saa7134-cardlist.pl b/Documentation/sphinx/saa7134-cardlist.pl
new file mode 100755
index 000000000000..73d3f18dd856
--- /dev/null
+++ b/Documentation/sphinx/saa7134-cardlist.pl
@@ -0,0 +1,80 @@
+#!/usr/bin/perl -w
+use strict;
+
+my %map = (
+	   "PCI_ANY_ID"            => "0",
+	   "PCI_VENDOR_ID_PHILIPS" => "1131",
+	   "PCI_VENDOR_ID_ASUSTEK" => "1043",
+	   "PCI_VENDOR_ID_MATROX"  => "102B",
+);
+
+sub fix_id($) {
+	my $id = shift;
+	$id = $map{$id} if defined($map{$id});
+	$id =~ s/^0x//;
+	return $id;
+}
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(SAA7134_BOARD_\w+)\s+(\d+)/) {
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# saa7134_boards
+	if (/\[(SAA7134_BOARD_\w+)\]/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+#		$data{$id}->{nr} = $nr++;
+	};
+	next unless defined($id);
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+			$len = length($1) if (length($1) > $len);
+		}
+	}
+
+	# saa7134_pci_tbl
+	$subvendor = fix_id($1) if (/\.subvendor\s*=\s*(\w+)\s*,*/);
+	$subdevice = fix_id($1) if (/\.subdevice\s*=\s*(\w+)\s*,*/);
+	if (/.driver_data\s*=\s*(\w+)\s*,*/) {
+		if (defined($data{$1})  &&
+		    defined($subvendor) && $subvendor ne "0" &&
+		    defined($subdevice) && $subdevice ne "0") {
+			my $name = "$subvendor:$subdevice";
+			if ($data{$1}->{subid}) {
+				$data{$1}->{subid} .= ", " . $name;
+			} else {
+				$data{$1}->{subid} = $name;
+			}
+			$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+		}
+	}
+}
+
+print "SAA7134 cards list\n";
+print "==================\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "PCI IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/saa7164-cardlist.pl b/Documentation/sphinx/saa7164-cardlist.pl
new file mode 100755
index 000000000000..b7c1ea080540
--- /dev/null
+++ b/Documentation/sphinx/saa7164-cardlist.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/perl -w
+use strict;
+
+my %map = (
+	   "PCI_ANY_ID"            => "0",
+);
+
+sub fix_id($) {
+	my $id = shift;
+	$id = $map{$id} if defined($map{$id});
+	$id =~ s/^0x//;
+	return $id;
+}
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(SAA7164_BOARD_\w+)\s+(\d+)/) {
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# saa7164_boards
+	if (/\[(SAA7164_BOARD_\w+)\]/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+	};
+	next unless defined($id);
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		$data{$id}->{name} = $1 if (/\.name\s*=\s*\"([^\"]+)\"/);
+		$len = length($1) if (length($1) > $len);
+	}
+
+	# saa7164_pci_tbl
+	$subvendor = fix_id($1) if (/\.subvendor\s*=\s*(\w+),/);
+	$subdevice = fix_id($1) if (/\.subdevice\s*=\s*(\w+),/);
+	if (/.card\s*=\s*(\w+),/) {
+		if (defined($data{$1})  &&
+		    defined($subvendor) && $subvendor ne "0" &&
+		    defined($subdevice) && $subdevice ne "0") {
+			my $name = "$subvendor:$subdevice";
+			if ($data{$1}->{subid}) {
+				$data{$1}->{subid} .= ", " . $name;
+			} else {
+				$data{$1}->{subid} = $name;
+			}
+			$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+		}
+	}
+}
+
+print "SAA7164 cards list\n";
+print "==================\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "PCI IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/tm6000-cardlist.pl b/Documentation/sphinx/tm6000-cardlist.pl
new file mode 100755
index 000000000000..07fc5e7557e5
--- /dev/null
+++ b/Documentation/sphinx/tm6000-cardlist.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+my $debug = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s+(TM[\d]+_BOARD_[\w\d_]+)\s+(\d+)/) {
+		printf("$1 = $2\n") if ($debug);
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# em2820_boards
+	if (/\[(TM)([\d]+)(_BOARD_[\w\d_]+)\]/) {
+		$id = "$1$2$3";
+		printf("ID = $id\n") if $debug;
+		$data{$id}->{id} = $id;
+		$data{$id}->{type} = "tm$2";
+		$data{$id}->{qtd}++;
+	};
+
+	next unless defined($id);
+
+	if (/USB_DEVICE.*0x([0-9a-fA-F]+)\s*\,\s*0x([0-9a-fA-F]+)/ ) {
+		$subvendor=$1;
+		$subdevice=$2;
+	}
+
+	if (/.*driver_info.*(TM[\d]+_BOARD_[\w\d_]+)/ ) {
+		my $name = "$subvendor:$subdevice";
+		if ($data{$1}->{subid}) {
+			$data{$1}->{subid} .= ", " . $name;
+		} else {
+			$data{$1}->{subid} = $name;
+		}
+		$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+	}
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.name\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+			$len = length($1) if (length($1) > $len);
+			printf("name[$id] = %s\n", $data{$id}->{name}) if ($debug);
+		}
+	}
+}
+
+print "TM6000 cards list\n";
+print "=================\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "USB IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+
+	printf "(%d entires)", $data{$item}->{qtd} if ($debug);
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
diff --git a/Documentation/sphinx/tuner-cardlist.pl b/Documentation/sphinx/tuner-cardlist.pl
new file mode 100755
index 000000000000..ff9163643dcb
--- /dev/null
+++ b/Documentation/sphinx/tuner-cardlist.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+
+my $H = shift;
+my $C = shift;
+my %blacklist;
+
+open IN, "<$H";
+while (<IN>) {
+	# defines in header file
+	if (/#define\s+(TUNER_\w+)\s+(\d+)/) {
+		my $num=$2;
+		$data{$1}->{nr} = $num;
+		if (/#define\s+TUNER_TDA9887/) {
+			$blacklist{$num}=1;
+		}
+		next;
+	}
+}
+close IN;
+
+open IN, "<$C";
+while (<IN>) {
+	# tuners
+	if (/\[(TUNER_\w+)\]/) {
+		$id = $1;
+		if ($id =~ m/TUNER_MAX/) {
+			next;
+		}
+		$data{$id}->{id} = $id;
+	};
+	next unless defined($id);
+
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		$data{$id}->{name} = $1 if (/\.name\s*=\s*\"([^\"]+)\"/);
+		$len = length($1) if (length($1) > $len);
+	}
+}
+
+print "Tuner cards list\n";
+print "================\n\n";
+
+print "============ " . "=" x $len . "\n";
+my $s = sprintf "%-12s %-${len}s\n", "Tuner number", "Card name";
+$s =~ s/[ \t]+$//;
+print $s;
+print "============ " . "=" x $len . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	if ($blacklist{$data{$item}->{nr}}) {
+		next;
+	}
+	my $s = sprintf "%-12s %-${len}s\n", $data{$item}->{nr}, $data{$item}->{name};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "============ " . "=" x $len . "\n";
diff --git a/Documentation/sphinx/usbvision-cardlist.pl b/Documentation/sphinx/usbvision-cardlist.pl
new file mode 100755
index 000000000000..c0191dc5606c
--- /dev/null
+++ b/Documentation/sphinx/usbvision-cardlist.pl
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -w
+use strict;
+
+my $new_entry = -1;
+my $nr = 0;
+my ($id,$subvendor,$subdevice);
+my %data;
+my $len = 0;
+my $idlen = 0;
+
+while (<>) {
+	# defines in header file
+	if (/#define\s*(\w+)\s*(\d+)/) {
+		$data{$1}->{nr} = $2;
+		next;
+	}
+	# boards
+	if (/^\s*\[([\w\d_]+)\]\s*=\s*{/) {
+		$id = $1;
+		$data{$id}->{id} = $id;
+	};
+
+	next unless defined($id);
+
+	if (/USB_DEVICE.*0x([0-9a-fA-F]*).*0x([0-9a-fA-F]*).*/)
+	{
+		$subvendor=$1;
+		$subdevice=$2;
+	}
+	if(/driver_info\s*=\s*([\w\d_]+)/)
+	{
+		my $name = "$subvendor:$subdevice";
+		if ($data{$1}->{subid}) {
+			$data{$1}->{subid} .= ", " . $name;
+		} else {
+			$data{$1}->{subid} = $name;
+		}
+		$idlen = length($data{$1}->{subid}) if (length($data{$1}->{subid}) > $idlen);
+	}
+	if (!defined($data{$id}) || !defined($data{$id}->{name})) {
+		if (/\.model_string\s*=\s*\"([^\"]+)\"/) {
+			$data{$id}->{name} = $1;
+
+			$len = length($1) if (length($1) > $len);
+		}
+	}
+}
+
+print "USBvision cards list\n";
+print "====================\n\n";
+
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+my $s = sprintf "%-11s %-${len}s %s\n", "Card number", "Card name", "USB IDs";
+$s =~ s/[ \t]+$//;
+print $s;
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";
+
+foreach my $item (sort { $data{$a}->{nr} <=> $data{$b}->{nr} } keys %data) {
+	$data{$item}->{subid} = "" if (!defined $data{$item}->{subid});
+
+	my $s = sprintf "%-11s %-${len}s %s\n", $data{$item}->{nr}, $data{$item}->{name}, $data{$item}->{subid};
+	$s =~ s/[ \t]+$//;
+	printf $s;
+}
+print "=========== " . "=" x $len . " " . "=" x $idlen . "\n";

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux