Merge tag 'tty-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial updates from Greg KH: "Here is the big tty and serial pull request for 4.20-rc1 Lots of little things here, including a merge from the SPI tree in order to keep things simpler for everyone to sync around for one platform. Major stuff is: - tty buffer clearing after use - atmel_serial fixes and additions - xilinx uart driver updates and of course, lots of tiny fixes and additions to individual serial drivers. All of these have been in linux-next with no reported issues for a while" * tag 'tty-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (66 commits) of: base: Change logic in of_alias_get_alias_list() of: base: Fix english spelling in of_alias_get_alias_list() serial: sh-sci: do not warn if DMA transfers are not supported serial: uartps: Do not allow use aliases >= MAX_UART_INSTANCES tty: check name length in tty_find_polling_driver() serial: sh-sci: Add r8a77990 support tty: wipe buffer if not echoing data tty: wipe buffer. serial: fsl_lpuart: Remove the alias node dependence TTY: sn_console: Replace spin_is_locked() with spin_trylock() Revert "serial:serial_core: Allow use of CTS for PPS line discipline" serial: 8250_uniphier: add auto-flow-control support serial: 8250_uniphier: flatten probe function serial: 8250_uniphier: remove unused "fifo-size" property dt-bindings: serial: sh-sci: Document r8a7744 bindings serial: uartps: Fix missing unlock on error in cdns_get_id() tty/serial: atmel: add ISO7816 support tty/serial_core: add ISO7816 infrastructure serial:serial_core: Allow use of CTS for PPS line discipline serial: docs: Fix filename for serial reference implementation ...
This commit is contained in:
@@ -14,6 +14,10 @@ Required properties:
|
||||
- "renesas,scifa-r8a7743" for R8A7743 (RZ/G1M) SCIFA compatible UART.
|
||||
- "renesas,scifb-r8a7743" for R8A7743 (RZ/G1M) SCIFB compatible UART.
|
||||
- "renesas,hscif-r8a7743" for R8A7743 (RZ/G1M) HSCIF compatible UART.
|
||||
- "renesas,scif-r8a7744" for R8A7744 (RZ/G1N) SCIF compatible UART.
|
||||
- "renesas,scifa-r8a7744" for R8A7744 (RZ/G1N) SCIFA compatible UART.
|
||||
- "renesas,scifb-r8a7744" for R8A7744 (RZ/G1N) SCIFB compatible UART.
|
||||
- "renesas,hscif-r8a7744" for R8A7744 (RZ/G1N) HSCIF compatible UART.
|
||||
- "renesas,scif-r8a7745" for R8A7745 (RZ/G1E) SCIF compatible UART.
|
||||
- "renesas,scifa-r8a7745" for R8A7745 (RZ/G1E) SCIFA compatible UART.
|
||||
- "renesas,scifb-r8a7745" for R8A7745 (RZ/G1E) SCIFB compatible UART.
|
||||
@@ -50,6 +54,8 @@ Required properties:
|
||||
- "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART.
|
||||
- "renesas,scif-r8a77980" for R8A77980 (R-Car V3H) SCIF compatible UART.
|
||||
- "renesas,hscif-r8a77980" for R8A77980 (R-Car V3H) HSCIF compatible UART.
|
||||
- "renesas,scif-r8a77990" for R8A77990 (R-Car E3) SCIF compatible UART.
|
||||
- "renesas,hscif-r8a77990" for R8A77990 (R-Car E3) HSCIF compatible UART.
|
||||
- "renesas,scif-r8a77995" for R8A77995 (R-Car D3) SCIF compatible UART.
|
||||
- "renesas,hscif-r8a77995" for R8A77995 (R-Car D3) HSCIF compatible UART.
|
||||
- "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART.
|
||||
|
@@ -7,7 +7,7 @@ Required properties:
|
||||
- clocks: phandle to the input clock.
|
||||
|
||||
Optional properties:
|
||||
- fifo-size: the RX/TX FIFO size. Defaults to 64 if not specified.
|
||||
-auto-flow-control: enable automatic flow control support.
|
||||
|
||||
Example:
|
||||
aliases {
|
||||
@@ -19,5 +19,4 @@ Example:
|
||||
reg = <0x54006800 0x40>;
|
||||
interrupts = <0 33 4>;
|
||||
clocks = <&uart_clk>;
|
||||
fifo-size = <64>;
|
||||
};
|
||||
|
@@ -7,7 +7,7 @@ This document is meant as a brief overview of some aspects of the new serial
|
||||
driver. It is not complete, any questions you have should be directed to
|
||||
<rmk@arm.linux.org.uk>
|
||||
|
||||
The reference implementation is contained within amba_pl011.c.
|
||||
The reference implementation is contained within amba-pl011.c.
|
||||
|
||||
|
||||
|
||||
|
83
Documentation/serial/serial-iso7816.txt
Normal file
83
Documentation/serial/serial-iso7816.txt
Normal file
@@ -0,0 +1,83 @@
|
||||
ISO7816 SERIAL COMMUNICATIONS
|
||||
|
||||
1. INTRODUCTION
|
||||
|
||||
ISO/IEC7816 is a series of standards specifying integrated circuit cards (ICC)
|
||||
also known as smart cards.
|
||||
|
||||
2. HARDWARE-RELATED CONSIDERATIONS
|
||||
|
||||
Some CPUs/UARTs (e.g., Microchip AT91) contain a built-in mode capable of
|
||||
handling communication with a smart card.
|
||||
|
||||
For these microcontrollers, the Linux driver should be made capable of
|
||||
working in both modes, and proper ioctls (see later) should be made
|
||||
available at user-level to allow switching from one mode to the other, and
|
||||
vice versa.
|
||||
|
||||
3. DATA STRUCTURES ALREADY AVAILABLE IN THE KERNEL
|
||||
|
||||
The Linux kernel provides the serial_iso7816 structure (see [1]) to handle
|
||||
ISO7816 communications. This data structure is used to set and configure
|
||||
ISO7816 parameters in ioctls.
|
||||
|
||||
Any driver for devices capable of working both as RS232 and ISO7816 should
|
||||
implement the iso7816_config callback in the uart_port structure. The
|
||||
serial_core calls iso7816_config to do the device specific part in response
|
||||
to TIOCGISO7816 and TIOCSISO7816 ioctls (see below). The iso7816_config
|
||||
callback receives a pointer to struct serial_iso7816.
|
||||
|
||||
4. USAGE FROM USER-LEVEL
|
||||
|
||||
From user-level, ISO7816 configuration can be get/set using the previous
|
||||
ioctls. For instance, to set ISO7816 you can use the following code:
|
||||
|
||||
#include <linux/serial.h>
|
||||
|
||||
/* Include definition for ISO7816 ioctls: TIOCSISO7816 and TIOCGISO7816 */
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
/* Open your specific device (e.g., /dev/mydevice): */
|
||||
int fd = open ("/dev/mydevice", O_RDWR);
|
||||
if (fd < 0) {
|
||||
/* Error handling. See errno. */
|
||||
}
|
||||
|
||||
struct serial_iso7816 iso7816conf;
|
||||
|
||||
/* Reserved fields as to be zeroed */
|
||||
memset(&iso7816conf, 0, sizeof(iso7816conf));
|
||||
|
||||
/* Enable ISO7816 mode: */
|
||||
iso7816conf.flags |= SER_ISO7816_ENABLED;
|
||||
|
||||
/* Select the protocol: */
|
||||
/* T=0 */
|
||||
iso7816conf.flags |= SER_ISO7816_T(0);
|
||||
/* or T=1 */
|
||||
iso7816conf.flags |= SER_ISO7816_T(1);
|
||||
|
||||
/* Set the guard time: */
|
||||
iso7816conf.tg = 2;
|
||||
|
||||
/* Set the clock frequency*/
|
||||
iso7816conf.clk = 3571200;
|
||||
|
||||
/* Set transmission factors: */
|
||||
iso7816conf.sc_fi = 372;
|
||||
iso7816conf.sc_di = 1;
|
||||
|
||||
if (ioctl(fd_usart, TIOCSISO7816, &iso7816conf) < 0) {
|
||||
/* Error handling. See errno. */
|
||||
}
|
||||
|
||||
/* Use read() and write() syscalls here... */
|
||||
|
||||
/* Close the device when finished: */
|
||||
if (close (fd) < 0) {
|
||||
/* Error handling. See errno. */
|
||||
}
|
||||
|
||||
5. REFERENCES
|
||||
|
||||
[1] include/uapi/linux/serial.h
|
Reference in New Issue
Block a user