linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] serial: Convert serial_rs485 to kernel doc
@ 2022-09-27 10:47 Ilpo Järvinen
  2022-09-27 10:56 ` Jiri Slaby
  2022-09-27 10:58 ` Jiri Slaby
  0 siblings, 2 replies; 4+ messages in thread
From: Ilpo Järvinen @ 2022-09-27 10:47 UTC (permalink / raw)
  To: Jiri Slaby, Greg Kroah-Hartman, linux-serial; +Cc: LKML, Andy Shevchenko

[-- Attachment #1: Type: text/plain, Size: 5741 bytes --]

Convert struct serial_rs485 comments to kernel doc format and include
it into documentation.

Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

---
v2:
- Include serial_rs485 into documentation
- Add * to multi-line flag descriptions

For reasons unknown to me, the formatting in the flags doesn't produce the
effect promised by kerneldoc's documentation:

  https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html#return-values


 Documentation/driver-api/serial/serial-rs485.rst | 13 ++---
 include/uapi/linux/serial.h                      | 61 ++++++++++++++++--------
 2 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/Documentation/driver-api/serial/serial-rs485.rst b/Documentation/driver-api/serial/serial-rs485.rst
index 6ebad75c74ed..3b3492a60ecc 100644
--- a/Documentation/driver-api/serial/serial-rs485.rst
+++ b/Documentation/driver-api/serial/serial-rs485.rst
@@ -29,11 +29,11 @@ RS485 Serial Communications
 3. Data Structures Already Available in the Kernel
 ==================================================
 
-   The Linux kernel provides the serial_rs485 structure (see [1]) to handle
-   RS485 communications. This data structure is used to set and configure RS485
+   The Linux kernel provides the serial_rs485 structure to handle RS485
+   communications.  This data structure is used to set and configure RS485
    parameters in the platform data and in ioctls.
 
-   The device tree can also provide RS485 boot time parameters (see [2]
+   The device tree can also provide RS485 boot time parameters (see [1]
    for bindings). The driver is in charge of filling this data structure from
    the values given by the device tree.
 
@@ -47,6 +47,9 @@ RS485 Serial Communications
    for the uart_port. TIOCGRS485 ioctl can be used to read back the
    serial_rs485 structure matching to the current configuration.
 
+.. kernel-doc:: include/uapi/linux/serial.h
+   :identifiers: serial_rs485
+
 4. Usage from user-level
 ========================
 
@@ -126,6 +129,4 @@ RS485 Serial Communications
 6. References
 =============
 
- [1]	include/uapi/linux/serial.h
-
- [2]	Documentation/devicetree/bindings/serial/rs485.txt
+ [1]	Documentation/devicetree/bindings/serial/rs485.txt
diff --git a/include/uapi/linux/serial.h b/include/uapi/linux/serial.h
index cea06924b295..47b09d8c2fe7 100644
--- a/include/uapi/linux/serial.h
+++ b/include/uapi/linux/serial.h
@@ -107,37 +107,56 @@ struct serial_icounter_struct {
 	int reserved[9];
 };
 
-/*
+/**
+ * struct serial_rs485 - serial interface for controlling RS485 settings.
+ * @flags:			RS485 feature flags.
+ * @delay_rts_before_send:	Delay before send (milliseconds).
+ * @delay_rts_after_send:	Delay after send (milliseconds).
+ * @addr_recv:			Receive filter for RS485 addressing mode
+ *				(used only when %SER_RS485_ADDR_RECV is set).
+ * @addr_dest:			Destination address for RS485 addressing mode
+ *				(used only when %SER_RS485_ADDR_DEST is set).
+ * @padding0:			Padding (set to zero).
+ * @padding1:			Padding (set to zero).
+ * @padding:			Deprecated, use @padding0 and @padding1 instead.
+ *				Do not use with @addr_recv and @addr_dest (due to
+ *				overlap).
+ *
  * Serial interface for controlling RS485 settings on chips with suitable
  * support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your
  * platform. The set function returns the new state, with any unsupported bits
  * reverted appropriately.
+ *
+ * serial_rs485::flags bits are:
+ * * %SER_RS485_ENABLED		- RS485 enabled.
+ * * %SER_RS485_RTS_ON_SEND	- Logical level for RTS pin when sending.
+ * * %SER_RS485_RTS_AFTER_SEND	- Logical level for RTS pin after sent.
+ * * %SER_RS485_RX_DURING_TX	- Full-duplex RS485 line.
+ * * %SER_RS485_TERMINATE_BUS	- Enable bus termination (if supported).
+ * * %SER_RS485_ADDRB		- Enable RS485 addressing mode.
+ * * %SER_RS485_ADDR_RECV	- Receive address filter (enables @addr_recv).
+ * *				  Requires %SER_RS485_ADDRB.
+ * * %SER_RS485_ADDR_DEST	- Destination address (enables @addr_dest).
+ * *				  Requires %SER_RS485_ADDRB.
  */
-
 struct serial_rs485 {
-	__u32	flags;			/* RS485 feature flags */
-#define SER_RS485_ENABLED		(1 << 0)	/* If enabled */
-#define SER_RS485_RTS_ON_SEND		(1 << 1)	/* Logical level for
-							   RTS pin when
-							   sending */
-#define SER_RS485_RTS_AFTER_SEND	(1 << 2)	/* Logical level for
-							   RTS pin after sent*/
+	__u32	flags;
+#define SER_RS485_ENABLED		(1 << 0)
+#define SER_RS485_RTS_ON_SEND		(1 << 1)
+#define SER_RS485_RTS_AFTER_SEND	(1 << 2)
 #define SER_RS485_RX_DURING_TX		(1 << 4)
-#define SER_RS485_TERMINATE_BUS		(1 << 5)	/* Enable bus
-							   termination
-							   (if supported) */
-
-/* RS-485 addressing mode */
-#define SER_RS485_ADDRB			(1 << 6)	/* Enable addressing mode */
-#define SER_RS485_ADDR_RECV		(1 << 7)	/* Receive address filter */
-#define SER_RS485_ADDR_DEST		(1 << 8)	/* Destination address */
+#define SER_RS485_TERMINATE_BUS		(1 << 5)
+#define SER_RS485_ADDRB			(1 << 6)
+#define SER_RS485_ADDR_RECV		(1 << 7)
+#define SER_RS485_ADDR_DEST		(1 << 8)
 
-	__u32	delay_rts_before_send;	/* Delay before send (milliseconds) */
-	__u32	delay_rts_after_send;	/* Delay after send (milliseconds) */
+	__u32	delay_rts_before_send;
+	__u32	delay_rts_after_send;
 
-	/* The fields below are defined by flags */
+	/* private: The fields below are defined by flags */
 	union {
-		__u32	padding[5];		/* Memory is cheap, new structs are a pain */
+		/* private: Memory is cheap, new structs are a pain. */
+		__u32	padding[5];
 
 		struct {
 			__u8	addr_recv;

-- 
tg: (2eb6f6da8b51..) rs485/kdoc (depends on: supported-fix/intro-kernel_serial_rs485_to_user_rs485)

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] serial: Convert serial_rs485 to kernel doc
  2022-09-27 10:47 [PATCH v2] serial: Convert serial_rs485 to kernel doc Ilpo Järvinen
@ 2022-09-27 10:56 ` Jiri Slaby
  2022-09-27 11:07   ` Ilpo Järvinen
  2022-09-27 10:58 ` Jiri Slaby
  1 sibling, 1 reply; 4+ messages in thread
From: Jiri Slaby @ 2022-09-27 10:56 UTC (permalink / raw)
  To: Ilpo Järvinen, Greg Kroah-Hartman, linux-serial
  Cc: LKML, Andy Shevchenko

On 27. 09. 22, 12:47, Ilpo Järvinen wrote:
> For reasons unknown to me, the formatting in the flags doesn't produce the
> effect promised by kerneldoc's documentation:
> 
>    https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html#return-values

Returns are special.

>    * Serial interface for controlling RS485 settings on chips with suitable
>    * support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your
>    * platform. The set function returns the new state, with any unsupported bits
>    * reverted appropriately.
> + *
> + * serial_rs485::flags bits are:

Put one more \n here.

> + * * %SER_RS485_ENABLED		- RS485 enabled.
> + * * %SER_RS485_RTS_ON_SEND	- Logical level for RTS pin when sending.
> + * * %SER_RS485_RTS_AFTER_SEND	- Logical level for RTS pin after sent.
> + * * %SER_RS485_RX_DURING_TX	- Full-duplex RS485 line.
> + * * %SER_RS485_TERMINATE_BUS	- Enable bus termination (if supported).
> + * * %SER_RS485_ADDRB		- Enable RS485 addressing mode.
> + * * %SER_RS485_ADDR_RECV	- Receive address filter (enables @addr_recv).
> + * *				  Requires %SER_RS485_ADDRB.

And perhaps remove the second * here?

> + * * %SER_RS485_ADDR_DEST	- Destination address (enables @addr_dest).

regards,
-- 
js
suse labs


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] serial: Convert serial_rs485 to kernel doc
  2022-09-27 10:47 [PATCH v2] serial: Convert serial_rs485 to kernel doc Ilpo Järvinen
  2022-09-27 10:56 ` Jiri Slaby
@ 2022-09-27 10:58 ` Jiri Slaby
  1 sibling, 0 replies; 4+ messages in thread
From: Jiri Slaby @ 2022-09-27 10:58 UTC (permalink / raw)
  To: Ilpo Järvinen, Greg Kroah-Hartman, linux-serial
  Cc: LKML, Andy Shevchenko

On 27. 09. 22, 12:47, Ilpo Järvinen wrote:
> --- a/Documentation/driver-api/serial/serial-rs485.rst
> +++ b/Documentation/driver-api/serial/serial-rs485.rst
> @@ -29,11 +29,11 @@ RS485 Serial Communications
>   3. Data Structures Already Available in the Kernel
>   ==================================================
>   
> -   The Linux kernel provides the serial_rs485 structure (see [1]) to handle
> -   RS485 communications. This data structure is used to set and configure RS485
> +   The Linux kernel provides the serial_rs485 structure to handle RS485
> +   communications.  This data structure is used to set and configure RS485
>      parameters in the platform data and in ioctls.
>   
> -   The device tree can also provide RS485 boot time parameters (see [2]
> +   The device tree can also provide RS485 boot time parameters (see [1]
>      for bindings). The driver is in charge of filling this data structure from
>      the values given by the device tree.
>   
> @@ -47,6 +47,9 @@ RS485 Serial Communications
>      for the uart_port. TIOCGRS485 ioctl can be used to read back the
>      serial_rs485 structure matching to the current configuration.
>   
> +.. kernel-doc:: include/uapi/linux/serial.h
> +   :identifiers: serial_rs485
> +
>   4. Usage from user-level
>   ========================
>   
> @@ -126,6 +129,4 @@ RS485 Serial Communications
>   6. References
>   =============
>   
> - [1]	include/uapi/linux/serial.h
> -
> - [2]	Documentation/devicetree/bindings/serial/rs485.txt
> + [1]	Documentation/devicetree/bindings/serial/rs485.txt

BTW could that [1] be converted into proper hyperlink too (separately)?

thanks,
-- 
js
suse labs


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] serial: Convert serial_rs485 to kernel doc
  2022-09-27 10:56 ` Jiri Slaby
@ 2022-09-27 11:07   ` Ilpo Järvinen
  0 siblings, 0 replies; 4+ messages in thread
From: Ilpo Järvinen @ 2022-09-27 11:07 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Greg Kroah-Hartman, linux-serial, LKML, Andy Shevchenko

[-- Attachment #1: Type: text/plain, Size: 1529 bytes --]

On Tue, 27 Sep 2022, Jiri Slaby wrote:

> On 27. 09. 22, 12:47, Ilpo Järvinen wrote:
> > For reasons unknown to me, the formatting in the flags doesn't produce the
> > effect promised by kerneldoc's documentation:
> > 
> >    https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html#return-values
> 
> Returns are special.

Might be but I understood that formatting thing to be more general.

> >    * Serial interface for controlling RS485 settings on chips with suitable
> >    * support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by
> > your
> >    * platform. The set function returns the new state, with any unsupported
> > bits
> >    * reverted appropriately.
> > + *
> > + * serial_rs485::flags bits are:
> 
> Put one more \n here.
> 
> > + * * %SER_RS485_ENABLED		- RS485 enabled.
> > + * * %SER_RS485_RTS_ON_SEND	- Logical level for RTS pin when sending.
> > + * * %SER_RS485_RTS_AFTER_SEND	- Logical level for RTS pin after
> > sent.
> > + * * %SER_RS485_RX_DURING_TX	- Full-duplex RS485 line.
> > + * * %SER_RS485_TERMINATE_BUS	- Enable bus termination (if
> > supported).
> > + * * %SER_RS485_ADDRB		- Enable RS485 addressing mode.
> > + * * %SER_RS485_ADDR_RECV	- Receive address filter (enables @addr_recv).
> > + * *				  Requires %SER_RS485_ADDRB.
> 
> And perhaps remove the second * here?

It gave me error earlier but now when I added also that newline above you 
suggested, it seems to no longer triggers the error. Thus, I ended up 
making both of the changes you suggested.


-- 
 i.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-09-27 11:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-27 10:47 [PATCH v2] serial: Convert serial_rs485 to kernel doc Ilpo Järvinen
2022-09-27 10:56 ` Jiri Slaby
2022-09-27 11:07   ` Ilpo Järvinen
2022-09-27 10:58 ` Jiri Slaby

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).