Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71206b9f authored by Baruch Siach's avatar Baruch Siach Committed by Greg Kroah-Hartman
Browse files

Doc: serial-rs485.txt: update RS485 driver interface



Since commit a5f276f1 (serial_core: Handle TIOC[GS]RS485 ioctls.,
2014-11-06) serial_core handles RS485 ioctls. Drivers only need to implement
the rs485_config callback. Update serial-rs485.txt to reflect these changes.

Signed-off-by: default avatarBaruch Siach <baruch@tkos.co.il>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3e20c31a
Loading
Loading
Loading
Loading
+5 −45
Original line number Diff line number Diff line
@@ -33,50 +33,10 @@
   the values given by the device tree.

   Any driver for devices capable of working both as RS232 and RS485 should
   provide at least the following ioctls:

    - TIOCSRS485 (typically associated with number 0x542F). This ioctl is used
      to enable/disable RS485 mode from user-space

    - TIOCGRS485 (typically associated with number 0x542E). This ioctl is used
      to get RS485 mode from kernel-space (i.e., driver) to user-space.

   In other words, the serial driver should contain a code similar to the next
   one:

	static struct uart_ops atmel_pops = {
		/* ... */
		.ioctl		= handle_ioctl,
	};

	static int handle_ioctl(struct uart_port *port,
		unsigned int cmd,
		unsigned long arg)
	{
		struct serial_rs485 rs485conf;

		switch (cmd) {
		case TIOCSRS485:
			if (copy_from_user(&rs485conf,
				(struct serial_rs485 *) arg,
				sizeof(rs485conf)))
					return -EFAULT;

			/* ... */
			break;

		case TIOCGRS485:
			if (copy_to_user((struct serial_rs485 *) arg,
				...,
				sizeof(rs485conf)))
					return -EFAULT;
			/* ... */
			break;

		/* ... */
		}
	}

   implement the rs485_config callback in the uart_port structure. The
   serial_core calls rs485_config to do the device specific part in response
   to TIOCSRS485 and TIOCGRS485 ioctls (see below). The rs485_config callback
   receives a pointer to struct serial_rs485.

4. USAGE FROM USER-LEVEL

@@ -85,7 +45,7 @@

	#include <linux/serial.h>

	/* Driver-specific ioctls: */
	/* RS485 ioctls: */
	#define TIOCGRS485      0x542E
	#define TIOCSRS485      0x542F