ENUM_DEFS = \
        $(shell perl -e 'open IN,"cat @ARGV| cpp -fpreprocessed |"; while (<IN>) { if ($$enum) {print "$$1\n" if (/\s*([A-Z]\S+)\b/); } $$enum = 0 if ($$enum && /^\}/); $$enum = 1 if(/^\s*enum\s/); }; close IN;' \
-               $(srctree)/include/uapi/linux/dvb/audio.h \
-               $(srctree)/include/uapi/linux/dvb/ca.h \
                $(srctree)/include/uapi/linux/dvb/dmx.h \
-               $(srctree)/include/uapi/linux/dvb/frontend.h \
-               $(srctree)/include/uapi/linux/dvb/net.h \
-               $(srctree)/include/uapi/linux/dvb/video.h)
+               $(srctree)/include/uapi/linux/dvb/frontend.h)
 
 STRUCTS = \
        $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \
        @(                                      \
        echo "<programlisting>") > $@
        @(                                      \
+       for ident in $(ENUM_DEFS) ; do          \
+         entity=`echo $$ident | tr _ -` ;      \
+         r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
+       done;                                   \
        expand --tabs=8 < $< |                  \
          sed $(ESCAPE) $(DVB_DOCUMENTED) |     \
-         sed 's/i\.e\./&ie;/') >> $@
+         sed 's/i\.e\./&ie;/' |                \
+         perl -ne "$$r print $$_;") >> $@
        @(                                      \
        echo "</programlisting>") >> $@
 
 
 <title>Demux Data Types</title>
 
 <section id="dmx-output-t">
-<title>dmx_output_t</title>
-<programlisting>
-typedef enum
-{
-       DMX_OUT_DECODER, /⋆ Streaming directly to decoder. ⋆/
-       DMX_OUT_TAP,     /⋆ Output going to a memory buffer ⋆/
-                        /⋆ (to be retrieved via the read command).⋆/
-       DMX_OUT_TS_TAP,  /⋆ Output multiplexed into a new TS  ⋆/
-                        /⋆ (to be retrieved by reading from the ⋆/
-                        /⋆ logical DVR device).                 ⋆/
-       DMX_OUT_TSDEMUX_TAP /⋆ Like TS_TAP but retrieved from the DMX device ⋆/
-} dmx_output_t;
-</programlisting>
-<para><constant>DMX_OUT_TAP</constant> delivers the stream output to the demux device on which the ioctl is
-called.
-</para>
-<para><constant>DMX_OUT_TS_TAP</constant> routes output to the logical DVR device <constant>/dev/dvb/adapter?/dvr?</constant>,
-which delivers a TS multiplexed from all filters for which <constant>DMX_OUT_TS_TAP</constant> was
-specified.
-</para>
+<title>Output for the demux</title>
+
+<table pgwide="1" frame="none" id="dmx-output">
+    <title>enum dmx_output</title>
+    <tgroup cols="2">
+       &cs-def;
+       <thead>
+       <row>
+           <entry>ID</entry>
+           <entry>Description</entry>
+       </row>
+       </thead>
+       <tbody valign="top">
+       <row>
+               <entry align="char" id="DMX-OUT-DECODER">DMX_OUT_DECODER</entry>
+               <entry>Streaming directly to decoder.</entry>
+       </row><row>
+               <entry align="char" id="DMX-OUT-TAP">DMX_OUT_TAP</entry>
+               <entry>Output going to a memory buffer (to be retrieved via the
+                   read command). Delivers the stream output to the demux
+                   device on which the ioctl is called.</entry>
+       </row><row>
+               <entry align="char" id="DMX-OUT-TS-TAP">DMX_OUT_TS_TAP</entry>
+               <entry>Output multiplexed into a new TS (to be retrieved by
+                   reading from the logical DVR device). Routes output to the
+                   logical DVR device <constant>/dev/dvb/adapter?/dvr?</constant>,
+                   which delivers a TS multiplexed from all filters for which
+                   <constant>DMX_OUT_TS_TAP</constant> was specified.</entry>
+       </row><row>
+               <entry align="char" id="DMX-OUT-TSDEMUX-TAP">DMX_OUT_TSDEMUX_TAP</entry>
+               <entry>Like &DMX-OUT-TS-TAP; but retrieved from the DMX
+                   device.</entry>
+       </row>
+        </tbody>
+    </tgroup>
+</table>
+
 </section>
 
 <section id="dmx-input-t">
 
 
 #define DMX_FILTER_SIZE 16
 
-typedef enum dmx_output
+enum dmx_output
 {
        DMX_OUT_DECODER, /* Streaming directly to decoder. */
        DMX_OUT_TAP,     /* Output going to a memory buffer */
                         /* (to be retrieved by reading from the */
                         /* logical DVR device).                 */
        DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
-} dmx_output_t;
+};
 
+typedef enum dmx_output dmx_output_t;
 
 typedef enum dmx_input
 {
        __u64 stc;              /* output: stc in 'base'*90 kHz units */
 };
 
-
 #define DMX_START                _IO('o', 41)
 #define DMX_STOP                 _IO('o', 42)
 #define DMX_SET_FILTER           _IOW('o', 43, struct dmx_sct_filter_params)