[PATCH 04/22] gadget.rst: Enrich its ReST representation and add kernel-doc tag
Jani Nikula
jani.nikula at linux.intel.com
Thu Mar 30 00:01:29 PDT 2017
On Wed, 29 Mar 2017, Mauro Carvalho Chehab <mchehab at s-opensource.com> wrote:
> 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;
Please look at Documentation/sphinx/tmplcvt which takes care of all of
that.
BR,
Jani.
> - 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
--
Jani Nikula, Intel Open Source Technology Center
More information about the linux-rpi-kernel
mailing list