These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / Documentation / serial / serial-rs485.txt
index 39dac95..2253b8b 100644 (file)
    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