[PATCH 04/22] gadget.rst: Enrich its ReST representation and add kernel-doc tag

Mauro Carvalho Chehab mchehab at s-opensource.com
Wed Mar 29 11:54:03 PDT 2017


The pandoc conversion is not perfect. Do handwork in order to:

- add a title to this chapter;
- use the proper warning and note markups;
- use kernel-doc to include Kernel header and c files;
- remove legacy notes with regards to DocBook;
- some other minor adjustments to make it better to read in
  text mode and in html.

Signed-off-by: Mauro Carvalho Chehab <mchehab at s-opensource.com>
---
 Documentation/driver-api/usb/gadget.rst | 69 +++++++++++++++++++++------------
 1 file changed, 45 insertions(+), 24 deletions(-)

diff --git a/Documentation/driver-api/usb/gadget.rst b/Documentation/driver-api/usb/gadget.rst
index 4fd9862f3f21..c4c76ebb51d3 100644
--- a/Documentation/driver-api/usb/gadget.rst
+++ b/Documentation/driver-api/usb/gadget.rst
@@ -1,3 +1,7 @@
+Linux-USB "Gadget" kernel mode API
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
 Introduction
 ============
 
@@ -175,16 +179,12 @@ the gadget, and submitting one or more *struct usb\_request* buffers to
 transfer data. Understand those four data types, and their operations,
 and you will understand how this API works.
 
-    **Note**
+.. Note::
 
-    This documentation was prepared using the standard Linux kernel
-    ``docproc`` tool, which turns text and in-code comments into SGML
-    DocBook and then into usable formats such as HTML or PDF. Other than
-    the "Chapter 9" data types, most of the significant data types and
-    functions are described here.
+    Other than the "Chapter 9" data types, most of the significant data
+    types and functions are described here.
 
-    However, docproc does not understand all the C constructs that are
-    used, so some relevant information is likely omitted from what you
+    However, some relevant information is likely omitted from what you
     are reading. One example of such information is endpoint
     autoconfiguration. You'll have to read the header file, and use
     example source code (such as that for "Gadget Zero"), to fully
@@ -192,10 +192,10 @@ and you will understand how this API works.
 
     The part of the API implementing some basic driver capabilities is
     specific to the version of the Linux kernel that's in use. The 2.6
-    kernel includes a *driver model* framework that has no analogue on
-    earlier kernels; so those parts of the gadget API are not fully
-    portable. (They are implemented on 2.4 kernels, but in a different
-    way.) The driver model state is another part of this API that is
+    and upper kernel versions include a *driver model* framework that has
+    no analogue on earlier kernels; so those parts of the gadget API are
+    not fully portable. (They are implemented on 2.4 kernels, but in a
+    different way.) The driver model state is another part of this API that is
     ignored by the kerneldoc tools.
 
 The core API does not expose every possible hardware feature, only the
@@ -301,18 +301,19 @@ USB 2.0 Chapter 9 Types and Constants
 -------------------------------------
 
 Gadget drivers rely on common USB structures and constants defined in
-the ``<linux/usb/ch9.h>`` header file, which is standard in Linux 2.6
-kernels. These are the same types and constants used by host side
+the :ref:`linux/usb/ch9.h <usb_chapter9>` header file, which is standard in
+Linux 2.6+ kernels. These are the same types and constants used by host side
 drivers (and usbcore).
 
-!Iinclude/linux/usb/ch9.h
 Core Objects and Methods
 ------------------------
 
 These are declared in ``<linux/usb/gadget.h>``, and are used by gadget
 drivers to interact with USB peripheral controller drivers.
 
-!Iinclude/linux/usb/gadget.h
+.. kernel-doc:: include/linux/usb/gadget.h
+   :internal:
+
 Optional Utilities
 ------------------
 
@@ -320,7 +321,12 @@ The core API is sufficient for writing a USB Gadget Driver, but some
 optional utilities are provided to simplify common tasks. These
 utilities include endpoint autoconfiguration.
 
-!Edrivers/usb/gadget/usbstring.c !Edrivers/usb/gadget/config.c
+.. kernel-doc:: drivers/usb/gadget/usbstring.c
+   :export:
+
+.. kernel-doc:: drivers/usb/gadget/config.c
+   :export:
+
 Composite Device Framework
 --------------------------
 
@@ -337,7 +343,12 @@ usb\_function*, which packages a user visible role such as "network
 link" or "mass storage device". Management functions may also exist,
 such as "Device Firmware Upgrade".
 
-!Iinclude/linux/usb/composite.h !Edrivers/usb/gadget/composite.c
+.. kernel-doc:: include/linux/usb/composite.h
+   :internal:
+
+.. kernel-doc:: drivers/usb/gadget/composite.c
+   :export:
+
 Composite Device Functions
 --------------------------
 
@@ -345,11 +356,21 @@ At this writing, a few of the current gadget drivers have been converted
 to this framework. Near-term plans include converting all of them,
 except for "gadgetfs".
 
-!Edrivers/usb/gadget/function/f\_acm.c
-!Edrivers/usb/gadget/function/f\_ecm.c
-!Edrivers/usb/gadget/function/f\_subset.c
-!Edrivers/usb/gadget/function/f\_obex.c
-!Edrivers/usb/gadget/function/f\_serial.c
+.. kernel-doc:: drivers/usb/gadget/function/f_acm.c
+   :export:
+
+.. kernel-doc:: drivers/usb/gadget/function/f_ecm.c
+   :export:
+
+.. kernel-doc:: drivers/usb/gadget/function/f_subset.c
+   :export:
+
+.. kernel-doc:: drivers/usb/gadget/function/f_obex.c
+   :export:
+
+.. kernel-doc:: drivers/usb/gadget/function/f_serial.c
+   :export:
+
 Peripheral Controller Drivers
 =============================
 
@@ -475,7 +496,7 @@ can also benefit non-OTG products.
 -  Also on the host side, a driver must support the OTG "Targeted
    Peripheral List". That's just a whitelist, used to reject peripherals
    not supported with a given Linux OTG host. *This whitelist is
-   product-specific; each product must modify ``otg_whitelist.h`` to
+   product-specific; each product must modify* ``otg_whitelist.h`` *to
    match its interoperability specification.*
 
    Non-OTG Linux hosts, like PCs and workstations, normally have some
-- 
2.9.3




More information about the linux-rpi-kernel mailing list