diff mbox series

Fix malformed table error in gadget-testing.rst

Message ID 20240211101324.37266-1-shresthprasad7@gmail.com (mailing list archive)
State New
Headers show
Series Fix malformed table error in gadget-testing.rst | expand

Commit Message

Shresth Prasad Feb. 11, 2024, 10:13 a.m. UTC
I've replaced all tabs with 8 spaces in gadget-testing.rst so that the
document is easier to work with. This also fixes a malformed table error
emitted while compliling the docs.

Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com>
---
 Documentation/usb/gadget-testing.rst | 554 +++++++++++++--------------
 1 file changed, 277 insertions(+), 277 deletions(-)

Comments

Greg KH Feb. 11, 2024, 10:54 a.m. UTC | #1
On Sun, Feb 11, 2024 at 03:43:24PM +0530, Shresth Prasad wrote:
> I've replaced all tabs with 8 spaces in gadget-testing.rst so that the
> document is easier to work with. This also fixes a malformed table error
> emitted while compliling the docs.

Please no, tabs are tabs and we all know they are on the 8 character
boundry, so they can stay as-is.

sorry,

greg k-h
Shresth Prasad Feb. 11, 2024, 12:54 p.m. UTC | #2
I see, sorry about that. I will try some other way to fix the error.

Also, as mentioned in this thread: https://lore.kernel.org/all/877cjqa5le.fsf@meer.lwn.net/ has the patch already been applied, fixing the issue?

Regards,
Shresth
Ricardo B. Marliere Feb. 11, 2024, 4:02 p.m. UTC | #3
Hi Shresth,

On 11 Feb 18:24, Shresth Prasad wrote:
> I see, sorry about that. I will try some other way to fix the error.
> 
> Also, as mentioned in this thread: https://lore.kernel.org/all/877cjqa5le.fsf@meer.lwn.net/ has the patch already been applied, fixing the issue?

Yes, that seems to be the case. In the future, make sure to split your
patches into individual "logical" changes. In this case you would have
one patch to fix the warnings and another to change tabs to space (even
though this should not be done, as you know now).

Refer to https://www.kernel.org/doc/html/latest/process/submitting-patches.html

Best regards,
-	Ricardo.



> 
> Regards,
> Shresth
>
Shresth Prasad Feb. 11, 2024, 4:06 p.m. UTC | #4
My bad, I should have checked beforehand. Thank you for your help.

Regards,
Shresth
Greg KH Feb. 11, 2024, 8:57 p.m. UTC | #5
On Sun, Feb 11, 2024 at 06:24:24PM +0530, Shresth Prasad wrote:
> I see, sorry about that. I will try some other way to fix the error.

What error, sorry I see no context here (remember, some of us get 1000+
emails a day to do something with, context is key...)

> Also, as mentioned in this thread: https://lore.kernel.org/all/877cjqa5le.fsf@meer.lwn.net/ has the patch already been applied, fixing the issue?

What issue?  Always look in linux-next to see what has been accepted by
maintainers as that tree merges all of them together daily.

thanks,

greg k-h
Shresth Prasad Feb. 12, 2024, 5:48 a.m. UTC | #6
> What error, sorry I see no context here (remember, > some of us get 1000+
> emails a day to do something with, context is key... )
I see, I'll keep that in mind. There was a warning being thrown out about a malformed table in gadget-testing.rst, which I foolishly thought I could fix by replacing all the tabs with spaces.

The thread mentioned previously attributed this warning to the table begin/end line segments being too short for the word "max_segment_size". I hadn't noticed that it had already been merged as I was only looking at the mainline kernel tree.

Regards,
Shresth
diff mbox series

Patch

diff --git a/Documentation/usb/gadget-testing.rst b/Documentation/usb/gadget-testing.rst
index 077dfac7ed98..824a5a47d115 100644
--- a/Documentation/usb/gadget-testing.rst
+++ b/Documentation/usb/gadget-testing.rst
@@ -41,7 +41,7 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "acm".
 The ACM function provides just one attribute in its function directory:
 
-	port_num
+       port_num
 
 The attribute is read-only.
 
@@ -53,21 +53,21 @@  Testing the ACM function
 
 On the host::
 
-	cat > /dev/ttyACM<X>
+       cat > /dev/ttyACM<X>
 
 On the device::
 
-	cat /dev/ttyGS<Y>
+       cat /dev/ttyGS<Y>
 
 then the other way round
 
 On the device::
 
-	cat > /dev/ttyGS<Y>
+       cat > /dev/ttyGS<Y>
 
 On the host::
 
-	cat /dev/ttyACM<X>
+       cat /dev/ttyACM<X>
 
 2. ECM function
 ===============
@@ -80,15 +80,15 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "ecm".
 The ECM function provides these attributes in its function directory:
 
-	=============== ==================================================
-	ifname		network device interface name associated with this
-			function instance
-	qmult		queue length multiplier for high and super speed
-	host_addr	MAC address of host's end of this
-			Ethernet over USB link
-	dev_addr	MAC address of device's end of this
-			Ethernet over USB link
-	=============== ==================================================
+       =============== ==================================================
+       ifname          network device interface name associated with this
+                       function instance
+       qmult           queue length multiplier for high and super speed
+       host_addr       MAC address of host's end of this
+                       Ethernet over USB link
+       dev_addr        MAC address of device's end of this
+                       Ethernet over USB link
+       =============== ==================================================
 
 and after creating the functions/ecm.<instance name> they contain default
 values: qmult is 5, dev_addr and host_addr are randomly selected.
@@ -103,11 +103,11 @@  Configure IP addresses of the device and the host. Then:
 
 On the device::
 
-	ping <host's IP>
+       ping <host's IP>
 
 On the host::
 
-	ping <device's IP>
+       ping <device's IP>
 
 3. ECM subset function
 ======================
@@ -120,15 +120,15 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "geth".
 The ECM subset function provides these attributes in its function directory:
 
-	=============== ==================================================
-	ifname		network device interface name associated with this
-			function instance
-	qmult		queue length multiplier for high and super speed
-	host_addr	MAC address of host's end of this
-			Ethernet over USB link
-	dev_addr	MAC address of device's end of this
-			Ethernet over USB link
-	=============== ==================================================
+       =============== ==================================================
+       ifname          network device interface name associated with this
+                       function instance
+       qmult           queue length multiplier for high and super speed
+       host_addr       MAC address of host's end of this
+                       Ethernet over USB link
+       dev_addr        MAC address of device's end of this
+                       Ethernet over USB link
+       =============== ==================================================
 
 and after creating the functions/ecm.<instance name> they contain default
 values: qmult is 5, dev_addr and host_addr are randomly selected.
@@ -143,11 +143,11 @@  Configure IP addresses of the device and the host. Then:
 
 On the device::
 
-	ping <host's IP>
+       ping <host's IP>
 
 On the host::
 
-	ping <device's IP>
+       ping <device's IP>
 
 4. EEM function
 ===============
@@ -160,15 +160,15 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "eem".
 The EEM function provides these attributes in its function directory:
 
-	=============== ==================================================
-	ifname		network device interface name associated with this
-			function instance
-	qmult		queue length multiplier for high and super speed
-	host_addr	MAC address of host's end of this
-			Ethernet over USB link
-	dev_addr	MAC address of device's end of this
-			Ethernet over USB link
-	=============== ==================================================
+       =============== ==================================================
+       ifname          network device interface name associated with this
+                       function instance
+       qmult           queue length multiplier for high and super speed
+       host_addr       MAC address of host's end of this
+                       Ethernet over USB link
+       dev_addr        MAC address of device's end of this
+                       Ethernet over USB link
+       =============== ==================================================
 
 and after creating the functions/eem.<instance name> they contain default
 values: qmult is 5, dev_addr and host_addr are randomly selected.
@@ -183,11 +183,11 @@  Configure IP addresses of the device and the host. Then:
 
 On the device::
 
-	ping <host's IP>
+       ping <host's IP>
 
 On the host::
 
-	ping <device's IP>
+       ping <device's IP>
 
 5. FFS function
 ===============
@@ -224,13 +224,13 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "hid".
 The HID function provides these attributes in its function directory:
 
-	=============== ===========================================
-	protocol	HID protocol to use
-	report_desc	data to be used in HID reports, except data
-			passed with /dev/hidg<X>
-	report_length	HID report length
-	subclass	HID subclass to use
-	=============== ===========================================
+       =============== ===========================================
+       protocol        HID protocol to use
+       report_desc     data to be used in HID reports, except data
+                       passed with /dev/hidg<X>
+       report_length   HID report length
+       subclass        HID subclass to use
+       =============== ===========================================
 
 For a keyboard the protocol and the subclass are 1, the report_length is 8,
 while the report_desc is::
@@ -257,7 +257,7 @@  Device:
 - run a program which writes to /dev/hidg<N>, e.g.
   a userspace program found in Documentation/usb/gadget_hid.rst::
 
-	$ ./hid_gadget_test /dev/hidg0 keyboard
+       $ ./hid_gadget_test /dev/hidg0 keyboard
 
 Host:
 
@@ -274,10 +274,10 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "Loopback".
 The LOOPBACK function provides these attributes in its function directory:
 
-	=============== =======================
-	qlen		depth of loopback queue
-	bulk_buflen	buffer length
-	=============== =======================
+       =============== =======================
+       qlen            depth of loopback queue
+       bulk_buflen     buffer length
+       =============== =======================
 
 Testing the LOOPBACK function
 -----------------------------
@@ -298,20 +298,20 @@  The function name to use when creating the function directory is "mass_storage".
 The MASS STORAGE function provides these attributes in its directory:
 files:
 
-	=============== ==============================================
-	stall		Set to permit function to halt bulk endpoints.
-			Disabled on some USB devices known not to work
-			correctly. You should set it to true.
-	num_buffers	Number of pipeline buffers. Valid numbers
-			are 2..4. Available only if
-			CONFIG_USB_GADGET_DEBUG_FILES is set.
-	=============== ==============================================
+       =============== ==============================================
+       stall           Set to permit function to halt bulk endpoints.
+                       Disabled on some USB devices known not to work
+                       correctly. You should set it to true.
+       num_buffers     Number of pipeline buffers. Valid numbers
+                       are 2..4. Available only if
+                       CONFIG_USB_GADGET_DEBUG_FILES is set.
+       =============== ==============================================
 
 and a default lun.0 directory corresponding to SCSI LUN #0.
 
 A new lun can be added with mkdir::
 
-	$ mkdir functions/mass_storage.0/partition.5
+       $ mkdir functions/mass_storage.0/partition.5
 
 Lun numbering does not have to be continuous, except for lun #0 which is
 created by default. A maximum of 8 luns can be specified and they all must be
@@ -321,26 +321,26 @@  although it is not mandatory.
 
 In each lun directory there are the following attribute files:
 
-	=============== ==============================================
-	file		The path to the backing file for the LUN.
-			Required if LUN is not marked as removable.
-	ro		Flag specifying access to the LUN shall be
-			read-only. This is implied if CD-ROM emulation
-			is enabled as well as when it was impossible
-			to open "filename" in R/W mode.
-	removable	Flag specifying that LUN shall be indicated as
-			being removable.
-	cdrom		Flag specifying that LUN shall be reported as
-			being a CD-ROM.
-	nofua		Flag specifying that FUA flag
-			in SCSI WRITE(10,12)
-	forced_eject	This write-only file is useful only when
-			the function is active. It causes the backing
-			file to be forcibly detached from the LUN,
-			regardless of whether the host has allowed it.
-			Any non-zero number of bytes written will
-			result in ejection.
-	=============== ==============================================
+       =============== ==============================================
+       file            The path to the backing file for the LUN.
+                       Required if LUN is not marked as removable.
+       ro              Flag specifying access to the LUN shall be
+                       read-only. This is implied if CD-ROM emulation
+                       is enabled as well as when it was impossible
+                       to open "filename" in R/W mode.
+       removable       Flag specifying that LUN shall be indicated as
+                       being removable.
+       cdrom           Flag specifying that LUN shall be reported as
+                       being a CD-ROM.
+       nofua           Flag specifying that FUA flag
+                       in SCSI WRITE(10,12)
+       forced_eject    This write-only file is useful only when
+                       the function is active. It causes the backing
+                       file to be forcibly detached from the LUN,
+                       regardless of whether the host has allowed it.
+                       Any non-zero number of bytes written will
+                       result in ejection.
+       =============== ==============================================
 
 Testing the MASS STORAGE function
 ---------------------------------
@@ -360,14 +360,14 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "midi".
 The MIDI function provides these attributes in its function directory:
 
-	=============== ====================================
-	buflen		MIDI buffer length
-	id		ID string for the USB MIDI adapter
-	in_ports	number of MIDI input ports
-	index		index value for the USB MIDI adapter
-	out_ports	number of MIDI output ports
-	qlen		USB read request queue length
-	=============== ====================================
+       =============== ====================================
+       buflen          MIDI buffer length
+       id              ID string for the USB MIDI adapter
+       in_ports        number of MIDI input ports
+       index           index value for the USB MIDI adapter
+       out_ports       number of MIDI output ports
+       qlen            USB read request queue length
+       =============== ====================================
 
 Testing the MIDI function
 -------------------------
@@ -448,17 +448,17 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "ncm".
 The NCM function provides these attributes in its function directory:
 
-	======================= ==================================================
-	ifname			network device interface name associated with this
-				function instance
-	qmult			queue length multiplier for high and super speed
-	host_addr		MAC address of host's end of this
-				Ethernet over USB link
-	dev_addr		MAC address of device's end of this
-				Ethernet over USB link
-	max_segment_size	Segment size required for P2P connections. This
-				will set MTU to 14 bytes
-	======================= ==================================================
+       ======================= ==================================================
+       ifname                  network device interface name associated with this
+                               function instance
+       qmult                   queue length multiplier for high and super speed
+       host_addr               MAC address of host's end of this
+                               Ethernet over USB link
+       dev_addr                MAC address of device's end of this
+                               Ethernet over USB link
+       max_segment_size        Segment size required for P2P connections. This
+                               will set MTU to 14 bytes
+       ======================= ==================================================
 
 and after creating the functions/ncm.<instance name> they contain default
 values: qmult is 5, dev_addr and host_addr are randomly selected.
@@ -473,11 +473,11 @@  Configure IP addresses of the device and the host. Then:
 
 On the device::
 
-	ping <host's IP>
+       ping <host's IP>
 
 On the host::
 
-	ping <device's IP>
+       ping <device's IP>
 
 11. OBEX function
 =================
@@ -490,7 +490,7 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "obex".
 The OBEX function provides just one attribute in its function directory:
 
-	port_num
+       port_num
 
 The attribute is read-only.
 
@@ -501,16 +501,16 @@  Testing the OBEX function
 
 On device::
 
-	seriald -f /dev/ttyGS<Y> -s 1024
+       seriald -f /dev/ttyGS<Y> -s 1024
 
 On host::
 
-	serialc -v <vendorID> -p <productID> -i<interface#> -a1 -s1024 \
-                -t<out endpoint addr> -r<in endpoint addr>
+       serialc -v <vendorID> -p <productID> -i<interface#> -a1 -s1024 \
+               -t<out endpoint addr> -r<in endpoint addr>
 
 where seriald and serialc are Felipe's utilities found here:
 
-	https://github.com/felipebalbi/usb-tools.git master
+       https://github.com/felipebalbi/usb-tools.git master
 
 12. PHONET function
 ===================
@@ -523,10 +523,10 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "phonet".
 The PHONET function provides just one attribute in its function directory:
 
-	=============== ==================================================
-	ifname		network device interface name associated with this
-			function instance
-	=============== ==================================================
+       =============== ==================================================
+       ifname          network device interface name associated with this
+                       function instance
+       =============== ==================================================
 
 Testing the PHONET function
 ---------------------------
@@ -543,39 +543,39 @@  git://git.gitorious.org/meego-cellular/phonet-utils.git
 
 On the host::
 
-	$ ./phonet -a 0x10 -i usbpn0
-	$ ./pnroute add 0x6c usbpn0
-	$./pnroute add 0x10 usbpn0
-	$ ifconfig usbpn0 up
+       $ ./phonet -a 0x10 -i usbpn0
+       $ ./pnroute add 0x6c usbpn0
+       $./pnroute add 0x10 usbpn0
+       $ ifconfig usbpn0 up
 
 On the device::
 
-	$ ./phonet -a 0x6c -i upnlink0
-	$ ./pnroute add 0x10 upnlink0
-	$ ifconfig upnlink0 up
+       $ ./phonet -a 0x6c -i upnlink0
+       $ ./pnroute add 0x10 upnlink0
+       $ ifconfig upnlink0 up
 
 Then a test program can be used::
 
-	http://www.spinics.net/lists/linux-usb/msg85690.html
+       http://www.spinics.net/lists/linux-usb/msg85690.html
 
 On the device::
 
-	$ ./pnxmit -a 0x6c -r
+       $ ./pnxmit -a 0x6c -r
 
 On the host::
 
-	$ ./pnxmit -a 0x10 -s 0x6c
+       $ ./pnxmit -a 0x10 -s 0x6c
 
 As a result some data should be sent from host to device.
 Then the other way round:
 
 On the host::
 
-	$ ./pnxmit -a 0x10 -r
+       $ ./pnxmit -a 0x10 -r
 
 On the device::
 
-	$ ./pnxmit -a 0x6c -s 0x10
+       $ ./pnxmit -a 0x6c -s 0x10
 
 13. RNDIS function
 ==================
@@ -588,15 +588,15 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "rndis".
 The RNDIS function provides these attributes in its function directory:
 
-	=============== ==================================================
-	ifname		network device interface name associated with this
-			function instance
-	qmult		queue length multiplier for high and super speed
-	host_addr	MAC address of host's end of this
-			Ethernet over USB link
-	dev_addr	MAC address of device's end of this
-			Ethernet over USB link
-	=============== ==================================================
+       =============== ==================================================
+       ifname          network device interface name associated with this
+                       function instance
+       qmult           queue length multiplier for high and super speed
+       host_addr       MAC address of host's end of this
+                       Ethernet over USB link
+       dev_addr        MAC address of device's end of this
+                       Ethernet over USB link
+       =============== ==================================================
 
 and after creating the functions/rndis.<instance name> they contain default
 values: qmult is 5, dev_addr and host_addr are randomly selected.
@@ -611,11 +611,11 @@  Configure IP addresses of the device and the host. Then:
 
 On the device::
 
-	ping <host's IP>
+       ping <host's IP>
 
 On the host::
 
-	ping <device's IP>
+       ping <device's IP>
 
 14. SERIAL function
 ===================
@@ -628,7 +628,7 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "gser".
 The SERIAL function provides just one attribute in its function directory:
 
-	port_num
+       port_num
 
 The attribute is read-only.
 
@@ -639,26 +639,26 @@  Testing the SERIAL function
 
 On host::
 
-	insmod usbserial
-	echo VID PID >/sys/bus/usb-serial/drivers/generic/new_id
+       insmod usbserial
+       echo VID PID >/sys/bus/usb-serial/drivers/generic/new_id
 
 On host::
 
-	cat > /dev/ttyUSB<X>
+       cat > /dev/ttyUSB<X>
 
 On target::
 
-	cat /dev/ttyGS<Y>
+       cat /dev/ttyGS<Y>
 
 then the other way round
 
 On target::
 
-	cat > /dev/ttyGS<Y>
+       cat > /dev/ttyGS<Y>
 
 On host::
 
-	cat /dev/ttyUSB<X>
+       cat /dev/ttyUSB<X>
 
 15. SOURCESINK function
 =======================
@@ -671,16 +671,16 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "SourceSink".
 The SOURCESINK function provides these attributes in its function directory:
 
-	=============== ==================================
-	pattern		0 (all zeros), 1 (mod63), 2 (none)
-	isoc_interval	1..16
-	isoc_maxpacket	0 - 1023 (fs), 0 - 1024 (hs/ss)
-	isoc_mult	0..2 (hs/ss only)
-	isoc_maxburst	0..15 (ss only)
-	bulk_buflen	buffer length
-	bulk_qlen	depth of queue for bulk
-	iso_qlen	depth of queue for iso
-	=============== ==================================
+       =============== ==================================
+       pattern         0 (all zeros), 1 (mod63), 2 (none)
+       isoc_interval   1..16
+       isoc_maxpacket  0 - 1023 (fs), 0 - 1024 (hs/ss)
+       isoc_mult       0..2 (hs/ss only)
+       isoc_maxburst   0..15 (ss only)
+       bulk_buflen     buffer length
+       bulk_qlen       depth of queue for bulk
+       iso_qlen        depth of queue for iso
+       =============== ==================================
 
 Testing the SOURCESINK function
 -------------------------------
@@ -702,14 +702,14 @@  The function name to use when creating the function directory
 is "uac1_legacy".
 The uac1 function provides these attributes in its function directory:
 
-	=============== ====================================
-	audio_buf_size	audio buffer size
-	fn_cap		capture pcm device file name
-	fn_cntl		control device file name
-	fn_play		playback pcm device file name
-	req_buf_size	ISO OUT endpoint request buffer size
-	req_count	ISO OUT endpoint request count
-	=============== ====================================
+       =============== ====================================
+       audio_buf_size  audio buffer size
+       fn_cap          capture pcm device file name
+       fn_cntl         control device file name
+       fn_play         playback pcm device file name
+       req_buf_size    ISO OUT endpoint request buffer size
+       req_count       ISO OUT endpoint request count
+       =============== ====================================
 
 The attributes have sane default values.
 
@@ -720,7 +720,7 @@  device: run the gadget
 
 host::
 
-	aplay -l # should list our USB Audio Gadget
+       aplay -l # should list our USB Audio Gadget
 
 17. UAC2 function
 =================
@@ -733,33 +733,33 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "uac2".
 The uac2 function provides these attributes in its function directory:
 
-	================ ====================================================
-	c_chmask         capture channel mask
-	c_srate          list of capture sampling rates (comma-separated)
-	c_ssize          capture sample size (bytes)
-	c_sync           capture synchronization type (async/adaptive)
-	c_mute_present   capture mute control enable
-	c_volume_present capture volume control enable
-	c_volume_min     capture volume control min value (in 1/256 dB)
-	c_volume_max     capture volume control max value (in 1/256 dB)
-	c_volume_res     capture volume control resolution (in 1/256 dB)
-	c_hs_bint        capture bInterval for HS/SS (1-4: fixed, 0: auto)
-	fb_max           maximum extra bandwidth in async mode
-	p_chmask         playback channel mask
-	p_srate          list of playback sampling rates (comma-separated)
-	p_ssize          playback sample size (bytes)
-	p_mute_present   playback mute control enable
-	p_volume_present playback volume control enable
-	p_volume_min     playback volume control min value (in 1/256 dB)
-	p_volume_max     playback volume control max value (in 1/256 dB)
-	p_volume_res     playback volume control resolution (in 1/256 dB)
-	p_hs_bint        playback bInterval for HS/SS (1-4: fixed, 0: auto)
-	req_number       the number of pre-allocated request for both capture
-	                 and playback
-	function_name    name of the interface
-	c_terminal_type  code of the capture terminal type
-	p_terminal_type  code of the playback terminal type
-	================ ====================================================
+       ================ ====================================================
+       c_chmask         capture channel mask
+       c_srate          list of capture sampling rates (comma-separated)
+       c_ssize          capture sample size (bytes)
+       c_sync           capture synchronization type (async/adaptive)
+       c_mute_present   capture mute control enable
+       c_volume_present capture volume control enable
+       c_volume_min     capture volume control min value (in 1/256 dB)
+       c_volume_max     capture volume control max value (in 1/256 dB)
+       c_volume_res     capture volume control resolution (in 1/256 dB)
+       c_hs_bint        capture bInterval for HS/SS (1-4: fixed, 0: auto)
+       fb_max           maximum extra bandwidth in async mode
+       p_chmask         playback channel mask
+       p_srate          list of playback sampling rates (comma-separated)
+       p_ssize          playback sample size (bytes)
+       p_mute_present   playback mute control enable
+       p_volume_present playback volume control enable
+       p_volume_min     playback volume control min value (in 1/256 dB)
+       p_volume_max     playback volume control max value (in 1/256 dB)
+       p_volume_res     playback volume control resolution (in 1/256 dB)
+       p_hs_bint        playback bInterval for HS/SS (1-4: fixed, 0: auto)
+       req_number       the number of pre-allocated request for both capture
+                        and playback
+       function_name    name of the interface
+       c_terminal_type  code of the capture terminal type
+       p_terminal_type  code of the playback terminal type
+       ================ ====================================================
 
 The attributes have sane default values.
 
@@ -774,12 +774,12 @@  sends a stream of audio data to/from the host. In order to
 actually hear something at the device side, a command similar
 to this must be used at the device side::
 
-	$ arecord -f dat -t wav -D hw:2,0 | aplay -D hw:0,0 &
+       $ arecord -f dat -t wav -D hw:2,0 | aplay -D hw:0,0 &
 
 e.g.::
 
-	$ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \
-	  aplay -D default:CARD=OdroidU3
+       $ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \
+         aplay -D default:CARD=OdroidU3
 
 18. UVC function
 ================
@@ -792,30 +792,30 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "uvc".
 The uvc function provides these attributes in its function directory:
 
-	=================== ================================================
-	streaming_interval  interval for polling endpoint for data transfers
-	streaming_maxburst  bMaxBurst for super speed companion descriptor
-	streaming_maxpacket maximum packet size this endpoint is capable of
-			    sending or receiving when this configuration is
-			    selected
-	function_name       name of the interface
-	=================== ================================================
+       =================== ================================================
+       streaming_interval  interval for polling endpoint for data transfers
+       streaming_maxburst  bMaxBurst for super speed companion descriptor
+       streaming_maxpacket maximum packet size this endpoint is capable of
+                           sending or receiving when this configuration is
+                           selected
+       function_name       name of the interface
+       =================== ================================================
 
 There are also "control" and "streaming" subdirectories, each of which contain
 a number of their subdirectories. There are some sane defaults provided, but
 the user must provide the following:
 
-	================== ====================================================
-	control header     create in control/header, link from control/class/fs
-			   and/or control/class/ss
-	streaming header   create in streaming/header, link from
-			   streaming/class/fs and/or streaming/class/hs and/or
-			   streaming/class/ss
-	format description create in streaming/mjpeg and/or
-			   streaming/uncompressed
-	frame description  create in streaming/mjpeg/<format> and/or in
-			   streaming/uncompressed/<format>
-	================== ====================================================
+       ================== ====================================================
+       control header     create in control/header, link from control/class/fs
+                          and/or control/class/ss
+       streaming header   create in streaming/header, link from
+                          streaming/class/fs and/or streaming/class/hs and/or
+                          streaming/class/ss
+       format description create in streaming/mjpeg and/or
+                          streaming/uncompressed
+       frame description  create in streaming/mjpeg/<format> and/or in
+                          streaming/uncompressed/<format>
+       ================== ====================================================
 
 Each frame description contains frame interval specification, and each
 such specification consists of a number of lines with an interval value
@@ -851,15 +851,15 @@  device: run the gadget, modprobe vivid::
   # uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>
 
 where uvc-gadget is this program:
-	http://git.ideasonboard.org/uvc-gadget.git
+       http://git.ideasonboard.org/uvc-gadget.git
 
 with these patches:
 
-	http://www.spinics.net/lists/linux-usb/msg99220.html
+       http://www.spinics.net/lists/linux-usb/msg99220.html
 
 host::
 
-	luvcview -f yuv
+       luvcview -f yuv
 
 19. PRINTER function
 ====================
@@ -872,10 +872,10 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "printer".
 The printer function provides these attributes in its function directory:
 
-	==========	===========================================
-	pnp_string	Data to be passed to the host in pnp string
-	q_len		Number of requests per endpoint
-	==========	===========================================
+       ==========      ===========================================
+       pnp_string      Data to be passed to the host in pnp string
+       q_len           Number of requests per endpoint
+       ==========      ===========================================
 
 Testing the PRINTER function
 ----------------------------
@@ -884,7 +884,7 @@  The most basic testing:
 
 device: run the gadget::
 
-	# ls -l /devices/virtual/usb_printer_gadget/
+       # ls -l /devices/virtual/usb_printer_gadget/
 
 should show g_printer<number>.
 
@@ -898,19 +898,19 @@  host->device transmission:
 
 device::
 
-	# cat /dev/g_printer<number>
+       # cat /dev/g_printer<number>
 
 host::
 
-	# cat > /dev/usb/lp0
+       # cat > /dev/usb/lp0
 
 device->host transmission::
 
-	# cat > /dev/g_printer<number>
+       # cat > /dev/g_printer<number>
 
 host::
 
-	# cat /dev/usb/lp0
+       # cat /dev/usb/lp0
 
 More advanced testing can be done with the prn_example
 described in Documentation/usb/gadget_printer.rst.
@@ -929,27 +929,27 @@  Function-specific configfs interface
 The function name to use when creating the function directory is "uac1".
 The uac1 function provides these attributes in its function directory:
 
-	================ ====================================================
-	c_chmask         capture channel mask
-	c_srate          list of capture sampling rates (comma-separated)
-	c_ssize          capture sample size (bytes)
-	c_mute_present   capture mute control enable
-	c_volume_present capture volume control enable
-	c_volume_min     capture volume control min value (in 1/256 dB)
-	c_volume_max     capture volume control max value (in 1/256 dB)
-	c_volume_res     capture volume control resolution (in 1/256 dB)
-	p_chmask         playback channel mask
-	p_srate          list of playback sampling rates (comma-separated)
-	p_ssize          playback sample size (bytes)
-	p_mute_present   playback mute control enable
-	p_volume_present playback volume control enable
-	p_volume_min     playback volume control min value (in 1/256 dB)
-	p_volume_max     playback volume control max value (in 1/256 dB)
-	p_volume_res     playback volume control resolution (in 1/256 dB)
-	req_number       the number of pre-allocated requests for both capture
-	                 and playback
-	function_name    name of the interface
-	================ ====================================================
+       ================ ====================================================
+       c_chmask         capture channel mask
+       c_srate          list of capture sampling rates (comma-separated)
+       c_ssize          capture sample size (bytes)
+       c_mute_present   capture mute control enable
+       c_volume_present capture volume control enable
+       c_volume_min     capture volume control min value (in 1/256 dB)
+       c_volume_max     capture volume control max value (in 1/256 dB)
+       c_volume_res     capture volume control resolution (in 1/256 dB)
+       p_chmask         playback channel mask
+       p_srate          list of playback sampling rates (comma-separated)
+       p_ssize          playback sample size (bytes)
+       p_mute_present   playback mute control enable
+       p_volume_present playback volume control enable
+       p_volume_min     playback volume control min value (in 1/256 dB)
+       p_volume_max     playback volume control max value (in 1/256 dB)
+       p_volume_res     playback volume control resolution (in 1/256 dB)
+       req_number       the number of pre-allocated requests for both capture
+                        and playback
+       function_name    name of the interface
+       ================ ====================================================
 
 The attributes have sane default values.
 
@@ -964,12 +964,12 @@  sends a stream of audio data to/from the host. In order to
 actually hear something at the device side, a command similar
 to this must be used at the device side::
 
-	$ arecord -f dat -t wav -D hw:2,0 | aplay -D hw:0,0 &
+       $ arecord -f dat -t wav -D hw:2,0 | aplay -D hw:0,0 &
 
 e.g.::
 
-	$ arecord -f dat -t wav -D hw:CARD=UAC1Gadget,DEV=0 | \
-	  aplay -D default:CARD=OdroidU3
+       $ arecord -f dat -t wav -D hw:CARD=UAC1Gadget,DEV=0 | \
+         aplay -D default:CARD=OdroidU3
 
 
 21. MIDI2 function
@@ -988,49 +988,49 @@  The function name to use when creating the function directory is "midi2".
 The midi2 function provides these attributes in its function directory
 as the card top-level information:
 
-	=============	=================================================
-	process_ump	Bool flag to process UMP Stream messages (0 or 1)
-	static_block	Bool flag for static blocks (0 or 1)
-	iface_name	Optional interface name string
-	=============	=================================================
+       =============   =================================================
+       process_ump     Bool flag to process UMP Stream messages (0 or 1)
+       static_block    Bool flag for static blocks (0 or 1)
+       iface_name      Optional interface name string
+       =============   =================================================
 
 The directory contains a subdirectory "ep.0", and this provides the
 attributes for a UMP Endpoint (which is a pair of USB MIDI Endpoints):
 
-	=============	=================================================
-	protocol_caps	MIDI protocol capabilities;
-			1: MIDI 1.0, 2: MIDI 2.0, or 3: both protocols
-	protocol	Default MIDI protocol (either 1 or 2)
-	ep_name		UMP Endpoint name string
-	product_id	Product ID string
-	manufacturer	Manufacture ID number (24 bit)
-	family		Device family ID number (16 bit)
-	model		Device model ID number (16 bit)
-	sw_revision	Software revision (32 bit)
-	=============	=================================================
+       =============   =================================================
+       protocol_caps   MIDI protocol capabilities;
+                       1: MIDI 1.0, 2: MIDI 2.0, or 3: both protocols
+       protocol        Default MIDI protocol (either 1 or 2)
+       ep_name         UMP Endpoint name string
+       product_id      Product ID string
+       manufacturer    Manufacture ID number (24 bit)
+       family          Device family ID number (16 bit)
+       model           Device model ID number (16 bit)
+       sw_revision     Software revision (32 bit)
+       =============   =================================================
 
 Each Endpoint subdirectory contains a subdirectory "block.0", which
 represents the Function Block for Block 0 information.
 Its attributes are:
 
-	=================	===============================================
-	name			Function Block name string
-	direction		Direction of this FB
-				1: input, 2: output, or 3: bidirectional
-	first_group		The first UMP Group number (0-15)
-	num_groups		The number of groups in this FB (1-16)
-	midi1_first_group	The first UMP Group number for MIDI 1.0 (0-15)
-	midi1_num_groups	The number of groups for MIDI 1.0 (0-16)
-	ui_hint			UI-hint of this FB
-				0: unknown, 1: receiver, 2: sender, 3: both
-	midi_ci_verison		Supported MIDI-CI version number (8 bit)
-	is_midi1		Legacy MIDI 1.0 device (0-2)
-				0: MIDI 2.0 device,
-				1: MIDI 1.0 without restriction, or
-				2: MIDI 1.0 with low speed
-	sysex8_streams		Max number of SysEx8 streams (8 bit)
-	active			Bool flag for FB activity (0 or 1)
-	=================	===============================================
+       =================       ===============================================
+       name                    Function Block name string
+       direction               Direction of this FB
+                               1: input, 2: output, or 3: bidirectional
+       first_group             The first UMP Group number (0-15)
+       num_groups              The number of groups in this FB (1-16)
+       midi1_first_group       The first UMP Group number for MIDI 1.0 (0-15)
+       midi1_num_groups        The number of groups for MIDI 1.0 (0-16)
+       ui_hint                 UI-hint of this FB
+                               0: unknown, 1: receiver, 2: sender, 3: both
+       midi_ci_verison         Supported MIDI-CI version number (8 bit)
+       is_midi1                Legacy MIDI 1.0 device (0-2)
+                               0: MIDI 2.0 device,
+                               1: MIDI 1.0 without restriction, or
+                               2: MIDI 1.0 with low speed
+       sysex8_streams          Max number of SysEx8 streams (8 bit)
+       active                  Bool flag for FB activity (0 or 1)
+       =================       ===============================================
 
 If multiple Function Blocks are required, you can add more Function
 Blocks by creating subdirectories "block.<num>" with the corresponding