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 Original line Diff line number Diff line
@@ -33,50 +33,10 @@
   the values given by the device tree.
   the values given by the device tree.


   Any driver for devices capable of working both as RS232 and RS485 should
   Any driver for devices capable of working both as RS232 and RS485 should
   provide at least the following ioctls:
   implement the rs485_config callback in the uart_port structure. The

   serial_core calls rs485_config to do the device specific part in response
    - TIOCSRS485 (typically associated with number 0x542F). This ioctl is used
   to TIOCSRS485 and TIOCGRS485 ioctls (see below). The rs485_config callback
      to enable/disable RS485 mode from user-space
   receives a pointer to struct serial_rs485.

    - 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;

		/* ... */
		}
	}



4. USAGE FROM USER-LEVEL
4. USAGE FROM USER-LEVEL


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


	#include <linux/serial.h>
	#include <linux/serial.h>


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