mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
Merge tag 'tty-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial driver updates from Greg KH:
"Here is the big set of TTY and Serial driver updates for 6.1-rc1.
Lots of cleanups in here, no real new functionality this time around,
with the diffstat being that we removed more lines than we added!
Included in here are:
- termios unification cleanups from Al Viro, it's nice to finally get
this work done
- tty serial transmit cleanups in various drivers in preparation for
more cleanup and unification in future releases (that work was not
ready for this release)
- n_gsm fixes and updates
- ktermios cleanups and code reductions
- dt bindings json conversions and updates for new devices
- some serial driver updates for new devices
- lots of other tiny cleanups and janitorial stuff. Full details in
the shortlog.
All of these have been in linux-next for a while with no reported
issues"
* tag 'tty-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (102 commits)
serial: cpm_uart: Don't request IRQ too early for console port
tty: serial: do unlock on a common path in altera_jtaguart_console_putc()
tty: serial: unify TX space reads under altera_jtaguart_tx_space()
tty: serial: use FIELD_GET() in lqasc_tx_ready()
tty: serial: extend lqasc_tx_ready() to lqasc_console_putchar()
tty: serial: allow pxa.c to be COMPILE_TESTed
serial: stm32: Fix unused-variable warning
tty: serial: atmel: Add COMMON_CLK dependency to SERIAL_ATMEL
serial: 8250: Fix restoring termios speed after suspend
serial: Deassert Transmit Enable on probe in driver-specific way
serial: 8250_dma: Convert to use uart_xmit_advance()
serial: 8250_omap: Convert to use uart_xmit_advance()
MAINTAINERS: Solve warning regarding inexistent atmel-usart binding
serial: stm32: Deassert Transmit Enable on ->rs485_config()
serial: ar933x: Deassert Transmit Enable on ->rs485_config()
tty: serial: atmel: Use FIELD_PREP/FIELD_GET
tty: serial: atmel: Make the driver aware of the existence of GCLK
tty: serial: atmel: Only divide Clock Divisor if the IP is USART
tty: serial: atmel: Separate mode clearing between UART and USART
dt-bindings: serial: atmel,at91-usart: Add gclk as a possible USART clock
...
This commit is contained in:
@@ -1,98 +0,0 @@
|
||||
* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
|
||||
|
||||
Required properties for USART:
|
||||
- compatible: Should be one of the following:
|
||||
- "atmel,at91rm9200-usart"
|
||||
- "atmel,at91sam9260-usart"
|
||||
- "microchip,sam9x60-usart"
|
||||
- "atmel,at91rm9200-dbgu", "atmel,at91rm9200-usart"
|
||||
- "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart"
|
||||
- "microchip,sam9x60-dbgu", "microchip,sam9x60-usart"
|
||||
- reg: Should contain registers location and length
|
||||
- interrupts: Should contain interrupt
|
||||
- clock-names: tuple listing input clock names.
|
||||
Required elements: "usart"
|
||||
- clocks: phandles to input clocks.
|
||||
|
||||
Required properties for USART in SPI mode:
|
||||
- #size-cells : Must be <0>
|
||||
- #address-cells : Must be <1>
|
||||
- cs-gpios: chipselects (internal cs not supported)
|
||||
- atmel,usart-mode : Must be <AT91_USART_MODE_SPI> (found in dt-bindings/mfd/at91-usart.h)
|
||||
|
||||
Optional properties in serial and SPI mode:
|
||||
- dma bindings for dma transfer:
|
||||
- dmas: DMA specifier, consisting of a phandle to DMA controller node,
|
||||
memory peripheral interface and USART DMA channel ID, FIFO configuration.
|
||||
The order of DMA channels is fixed. The first DMA channel must be TX
|
||||
associated channel and the second one must be RX associated channel.
|
||||
Refer to dma.txt and atmel-dma.txt for details.
|
||||
- dma-names: "tx" for TX channel.
|
||||
"rx" for RX channel.
|
||||
The order of dma-names is also fixed. The first name must be "tx"
|
||||
and the second one must be "rx" as in the examples below.
|
||||
|
||||
Optional properties in serial mode:
|
||||
- atmel,use-dma-rx: use of PDC or DMA for receiving data
|
||||
- atmel,use-dma-tx: use of PDC or DMA for transmitting data
|
||||
- {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD line respectively.
|
||||
It will use specified PIO instead of the peripheral function pin for the USART feature.
|
||||
If unsure, don't specify this property.
|
||||
- atmel,fifo-size: maximum number of data the RX and TX FIFOs can store for FIFO
|
||||
capable USARTs.
|
||||
- rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt
|
||||
|
||||
<chip> compatible description:
|
||||
- at91rm9200: legacy USART support
|
||||
- at91sam9260: generic USART implementation for SAM9 SoCs
|
||||
|
||||
Example:
|
||||
- use PDC:
|
||||
usart0: serial@fff8c000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xfff8c000 0x4000>;
|
||||
interrupts = <7>;
|
||||
clocks = <&usart0_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,use-dma-rx;
|
||||
atmel,use-dma-tx;
|
||||
rts-gpios = <&pioD 15 GPIO_ACTIVE_LOW>;
|
||||
cts-gpios = <&pioD 16 GPIO_ACTIVE_LOW>;
|
||||
dtr-gpios = <&pioD 17 GPIO_ACTIVE_LOW>;
|
||||
dsr-gpios = <&pioD 18 GPIO_ACTIVE_LOW>;
|
||||
dcd-gpios = <&pioD 20 GPIO_ACTIVE_LOW>;
|
||||
rng-gpios = <&pioD 19 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
- use DMA:
|
||||
usart0: serial@f001c000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xf001c000 0x100>;
|
||||
interrupts = <12 4 5>;
|
||||
clocks = <&usart0_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,use-dma-rx;
|
||||
atmel,use-dma-tx;
|
||||
dmas = <&dma0 2 0x3>,
|
||||
<&dma0 2 0x204>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <32>;
|
||||
};
|
||||
|
||||
- SPI mode:
|
||||
#include <dt-bindings/mfd/at91-usart.h>
|
||||
|
||||
spi0: spi@f001c000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "atmel,at91rm9200-usart", "atmel,at91sam9260-usart";
|
||||
atmel,usart-mode = <AT91_USART_MODE_SPI>;
|
||||
reg = <0xf001c000 0x100>;
|
||||
interrupts = <12 IRQ_TYPE_LEVEL_HIGH 5>;
|
||||
clocks = <&usart0_clk>;
|
||||
clock-names = "usart";
|
||||
dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(3)>,
|
||||
<&dma0 2 (AT91_DMA_CFG_PER_ID(4) | AT91_DMA_CFG_FIFOCFG_ASAP)>;
|
||||
dma-names = "tx", "rx";
|
||||
cs-gpios = <&pioB 3 0>;
|
||||
};
|
||||
190
Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml
Normal file
190
Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml
Normal file
@@ -0,0 +1,190 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
# Copyright (C) 2022 Microchip Technology, Inc. and its subsidiaries
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/serial/atmel,at91-usart.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
|
||||
|
||||
maintainers:
|
||||
- Richard Genoud <richard.genoud@gmail.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- atmel,at91rm9200-usart
|
||||
- atmel,at91sam9260-usart
|
||||
- microchip,sam9x60-usart
|
||||
- items:
|
||||
- const: atmel,at91rm9200-dbgu
|
||||
- const: atmel,at91rm9200-usart
|
||||
- items:
|
||||
- const: atmel,at91sam9260-dbgu
|
||||
- const: atmel,at91sam9260-usart
|
||||
- items:
|
||||
- const: microchip,sam9x60-dbgu
|
||||
- const: microchip,sam9x60-usart
|
||||
- const: atmel,at91sam9260-dbgu
|
||||
- const: atmel,at91sam9260-usart
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: usart
|
||||
- const: gclk
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: USART Peripheral Clock
|
||||
- description: USART Generic Clock
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: TX DMA Channel
|
||||
- description: RX DMA Channel
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
atmel,usart-mode:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Must be either <AT91_USART_MODE_SPI> for SPI or
|
||||
<AT91_USART_MODE_SERIAL> for USART (found in dt-bindings/mfd/at91-usart.h).
|
||||
enum: [ 0, 1 ]
|
||||
|
||||
atmel,use-dma-rx:
|
||||
type: boolean
|
||||
description: use of PDC or DMA for receiving data
|
||||
|
||||
atmel,use-dma-tx:
|
||||
type: boolean
|
||||
description: use of PDC or DMA for transmitting data
|
||||
|
||||
atmel,fifo-size:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Maximum number of data the RX and TX FIFOs can store for FIFO
|
||||
capable USARTS.
|
||||
enum: [ 16, 32 ]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clock-names
|
||||
- clocks
|
||||
- atmel,usart-mode
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
atmel,usart-mode:
|
||||
const: 1
|
||||
then:
|
||||
allOf:
|
||||
- $ref: /schemas/spi/spi-controller.yaml#
|
||||
|
||||
properties:
|
||||
atmel,use-dma-rx: false
|
||||
|
||||
atmel,use-dma-tx: false
|
||||
|
||||
atmel,fifo-size: false
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
required:
|
||||
- "#size-cells"
|
||||
- "#address-cells"
|
||||
|
||||
else:
|
||||
allOf:
|
||||
- $ref: /schemas/serial/serial.yaml#
|
||||
- $ref: /schemas/serial/rs485.yaml#
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/mfd/at91-usart.h>
|
||||
#include <dt-bindings/dma/at91.h>
|
||||
|
||||
/* use PDC */
|
||||
usart0: serial@fff8c000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xfff8c000 0x4000>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
interrupts = <7>;
|
||||
clocks = <&usart0_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,use-dma-rx;
|
||||
atmel,use-dma-tx;
|
||||
rts-gpios = <&pioD 15 GPIO_ACTIVE_LOW>;
|
||||
cts-gpios = <&pioD 16 GPIO_ACTIVE_LOW>;
|
||||
dtr-gpios = <&pioD 17 GPIO_ACTIVE_LOW>;
|
||||
dsr-gpios = <&pioD 18 GPIO_ACTIVE_LOW>;
|
||||
dcd-gpios = <&pioD 20 GPIO_ACTIVE_LOW>;
|
||||
rng-gpios = <&pioD 19 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/mfd/at91-usart.h>
|
||||
#include <dt-bindings/dma/at91.h>
|
||||
|
||||
/* use DMA */
|
||||
usart1: serial@f001c000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xf001c000 0x100>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
interrupts = <12 IRQ_TYPE_LEVEL_HIGH 5>;
|
||||
clocks = <&usart0_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,use-dma-rx;
|
||||
atmel,use-dma-tx;
|
||||
dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(3)>,
|
||||
<&dma0 2 (AT91_DMA_CFG_PER_ID(4) | AT91_DMA_CFG_FIFOCFG_ASAP)>;
|
||||
dma-names = "tx", "rx";
|
||||
atmel,fifo-size = <32>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/mfd/at91-usart.h>
|
||||
#include <dt-bindings/dma/at91.h>
|
||||
|
||||
/* SPI mode */
|
||||
spi0: spi@f001c000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xf001c000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SPI>;
|
||||
interrupts = <12 IRQ_TYPE_LEVEL_HIGH 5>;
|
||||
clocks = <&usart0_clk>;
|
||||
clock-names = "usart";
|
||||
dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(3)>,
|
||||
<&dma0 2 (AT91_DMA_CFG_PER_ID(4) | AT91_DMA_CFG_FIFOCFG_ASAP)>;
|
||||
dma-names = "tx", "rx";
|
||||
cs-gpios = <&pioB 3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
@@ -42,6 +42,7 @@ properties:
|
||||
- mediatek,mt8173-uart
|
||||
- mediatek,mt8183-uart
|
||||
- mediatek,mt8186-uart
|
||||
- mediatek,mt8188-uart
|
||||
- mediatek,mt8192-uart
|
||||
- mediatek,mt8195-uart
|
||||
- mediatek,mt8516-uart
|
||||
|
||||
@@ -94,6 +94,12 @@ properties:
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reg-io-width:
|
||||
description:
|
||||
The size (in bytes) of the IO accesses that should be performed
|
||||
on the device.
|
||||
enum: [1, 4]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
@@ -76,7 +76,7 @@ properties:
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,scif-r9a07g043 # RZ/G2UL
|
||||
- renesas,scif-r9a07g043 # RZ/G2UL and RZ/Five
|
||||
- renesas,scif-r9a07g054 # RZ/V2L
|
||||
- const: renesas,scif-r9a07g044 # RZ/G2{L,LC} fallback
|
||||
|
||||
|
||||
@@ -40,7 +40,6 @@ properties:
|
||||
description: |
|
||||
The size (in bytes) of the IO accesses that should be performed
|
||||
on the device.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [ 1, 4 ]
|
||||
|
||||
clocks:
|
||||
@@ -72,6 +71,9 @@ properties:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
samsung,uart-fifosize:
|
||||
description: The fifo size supported by the UART channel.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
@@ -26,6 +26,7 @@ properties:
|
||||
- rockchip,rk1808-uart
|
||||
- rockchip,rk3036-uart
|
||||
- rockchip,rk3066-uart
|
||||
- rockchip,rk3128-uart
|
||||
- rockchip,rk3188-uart
|
||||
- rockchip,rk3288-uart
|
||||
- rockchip,rk3308-uart
|
||||
|
||||
@@ -71,7 +71,6 @@ Magic Name Number Structure File
|
||||
PG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h``
|
||||
CMAGIC 0x0111 user ``include/linux/a.out.h``
|
||||
MKISS_DRIVER_MAGIC 0x04bf mkiss_channel ``drivers/net/mkiss.h``
|
||||
HDLC_MAGIC 0x239e n_hdlc ``drivers/char/n_hdlc.c``
|
||||
APM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c``
|
||||
DB_MAGIC 0x4442 fc_info ``drivers/net/iph5526_novram.c``
|
||||
DL_MAGIC 0x444d fc_info ``drivers/net/iph5526_novram.c``
|
||||
@@ -84,9 +83,6 @@ SLIP_MAGIC 0x5302 slip ``drivers/net/sl
|
||||
STRIP_MAGIC 0x5303 strip ``drivers/net/strip.c``
|
||||
SIXPACK_MAGIC 0x5304 sixpack ``drivers/net/hamradio/6pack.h``
|
||||
AX25_MAGIC 0x5316 ax_disp ``drivers/net/mkiss.h``
|
||||
TTY_MAGIC 0x5401 tty_struct ``include/linux/tty.h``
|
||||
MGSL_MAGIC 0x5401 mgsl_info ``drivers/char/synclink.c``
|
||||
TTY_DRIVER_MAGIC 0x5402 tty_driver ``include/linux/tty_driver.h``
|
||||
MGSLPC_MAGIC 0x5402 mgslpc_info ``drivers/char/pcmcia/synclink_cs.c``
|
||||
USB_SERIAL_MAGIC 0x6702 usb_serial ``drivers/usb/serial/usb-serial.h``
|
||||
FULL_DUPLEX_MAGIC 0x6969 ``drivers/net/ethernet/dec/tulip/de2104x.c``
|
||||
|
||||
@@ -77,7 +77,6 @@ Nome magico Numero Struttura File
|
||||
PG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h``
|
||||
CMAGIC 0x0111 user ``include/linux/a.out.h``
|
||||
MKISS_DRIVER_MAGIC 0x04bf mkiss_channel ``drivers/net/mkiss.h``
|
||||
HDLC_MAGIC 0x239e n_hdlc ``drivers/char/n_hdlc.c``
|
||||
APM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c``
|
||||
DB_MAGIC 0x4442 fc_info ``drivers/net/iph5526_novram.c``
|
||||
DL_MAGIC 0x444d fc_info ``drivers/net/iph5526_novram.c``
|
||||
@@ -90,9 +89,6 @@ SLIP_MAGIC 0x5302 slip ``drivers/net/sl
|
||||
STRIP_MAGIC 0x5303 strip ``drivers/net/strip.c``
|
||||
SIXPACK_MAGIC 0x5304 sixpack ``drivers/net/hamradio/6pack.h``
|
||||
AX25_MAGIC 0x5316 ax_disp ``drivers/net/mkiss.h``
|
||||
TTY_MAGIC 0x5401 tty_struct ``include/linux/tty.h``
|
||||
MGSL_MAGIC 0x5401 mgsl_info ``drivers/char/synclink.c``
|
||||
TTY_DRIVER_MAGIC 0x5402 tty_driver ``include/linux/tty_driver.h``
|
||||
MGSLPC_MAGIC 0x5402 mgslpc_info ``drivers/char/pcmcia/synclink_cs.c``
|
||||
USB_SERIAL_MAGIC 0x6702 usb_serial ``drivers/usb/serial/usb-serial.h``
|
||||
FULL_DUPLEX_MAGIC 0x6969 ``drivers/net/ethernet/dec/tulip/de2104x.c``
|
||||
|
||||
@@ -60,7 +60,6 @@ Linux 魔术数
|
||||
PG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h``
|
||||
CMAGIC 0x0111 user ``include/linux/a.out.h``
|
||||
MKISS_DRIVER_MAGIC 0x04bf mkiss_channel ``drivers/net/mkiss.h``
|
||||
HDLC_MAGIC 0x239e n_hdlc ``drivers/char/n_hdlc.c``
|
||||
APM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c``
|
||||
DB_MAGIC 0x4442 fc_info ``drivers/net/iph5526_novram.c``
|
||||
DL_MAGIC 0x444d fc_info ``drivers/net/iph5526_novram.c``
|
||||
@@ -73,9 +72,6 @@ SLIP_MAGIC 0x5302 slip ``drivers/net/sl
|
||||
STRIP_MAGIC 0x5303 strip ``drivers/net/strip.c``
|
||||
SIXPACK_MAGIC 0x5304 sixpack ``drivers/net/hamradio/6pack.h``
|
||||
AX25_MAGIC 0x5316 ax_disp ``drivers/net/mkiss.h``
|
||||
TTY_MAGIC 0x5401 tty_struct ``include/linux/tty.h``
|
||||
MGSL_MAGIC 0x5401 mgsl_info ``drivers/char/synclink.c``
|
||||
TTY_DRIVER_MAGIC 0x5402 tty_driver ``include/linux/tty_driver.h``
|
||||
MGSLPC_MAGIC 0x5402 mgslpc_info ``drivers/char/pcmcia/synclink_cs.c``
|
||||
USB_SERIAL_MAGIC 0x6702 usb_serial ``drivers/usb/serial/usb-serial.h``
|
||||
FULL_DUPLEX_MAGIC 0x6969 ``drivers/net/ethernet/dec/tulip/de2104x.c``
|
||||
|
||||
@@ -63,7 +63,6 @@ Linux 魔術數
|
||||
PG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h``
|
||||
CMAGIC 0x0111 user ``include/linux/a.out.h``
|
||||
MKISS_DRIVER_MAGIC 0x04bf mkiss_channel ``drivers/net/mkiss.h``
|
||||
HDLC_MAGIC 0x239e n_hdlc ``drivers/char/n_hdlc.c``
|
||||
APM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c``
|
||||
DB_MAGIC 0x4442 fc_info ``drivers/net/iph5526_novram.c``
|
||||
DL_MAGIC 0x444d fc_info ``drivers/net/iph5526_novram.c``
|
||||
@@ -76,9 +75,6 @@ SLIP_MAGIC 0x5302 slip ``drivers/net/sl
|
||||
STRIP_MAGIC 0x5303 strip ``drivers/net/strip.c``
|
||||
SIXPACK_MAGIC 0x5304 sixpack ``drivers/net/hamradio/6pack.h``
|
||||
AX25_MAGIC 0x5316 ax_disp ``drivers/net/mkiss.h``
|
||||
TTY_MAGIC 0x5401 tty_struct ``include/linux/tty.h``
|
||||
MGSL_MAGIC 0x5401 mgsl_info ``drivers/char/synclink.c``
|
||||
TTY_DRIVER_MAGIC 0x5402 tty_driver ``include/linux/tty_driver.h``
|
||||
MGSLPC_MAGIC 0x5402 mgslpc_info ``drivers/char/pcmcia/synclink_cs.c``
|
||||
USB_SERIAL_MAGIC 0x6702 usb_serial ``drivers/usb/serial/usb-serial.h``
|
||||
FULL_DUPLEX_MAGIC 0x6969 ``drivers/net/ethernet/dec/tulip/de2104x.c``
|
||||
|
||||
@@ -13339,7 +13339,7 @@ F: include/dt-bindings/dma/at91.h
|
||||
MICROCHIP AT91 SERIAL DRIVER
|
||||
M: Richard Genoud <richard.genoud@gmail.com>
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/mfd/atmel-usart.txt
|
||||
F: Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml
|
||||
F: drivers/tty/serial/atmel_serial.c
|
||||
F: drivers/tty/serial/atmel_serial.h
|
||||
|
||||
@@ -13347,7 +13347,7 @@ MICROCHIP AT91 USART MFD DRIVER
|
||||
M: Radu Pirea <radu_nicolae.pirea@upb.ro>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/mfd/atmel-usart.txt
|
||||
F: Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml
|
||||
F: drivers/mfd/at91-usart.c
|
||||
F: include/dt-bindings/mfd/at91-usart.h
|
||||
|
||||
@@ -13355,7 +13355,7 @@ MICROCHIP AT91 USART SPI DRIVER
|
||||
M: Radu Pirea <radu_nicolae.pirea@upb.ro>
|
||||
L: linux-spi@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/mfd/atmel-usart.txt
|
||||
F: Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml
|
||||
F: drivers/spi/spi-at91-usart.c
|
||||
|
||||
MICROCHIP AUDIO ASOC DRIVERS
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _ALPHA_TERMIOS_H
|
||||
#define _ALPHA_TERMIOS_H
|
||||
|
||||
#include <uapi/asm/termios.h>
|
||||
|
||||
/* eof=^D eol=\0 eol2=\0 erase=del
|
||||
werase=^W kill=^U reprint=^R sxtc=\0
|
||||
intr=^C quit=^\ susp=^Z <OSF/1 VDSUSP>
|
||||
start=^Q stop=^S lnext=^V discard=^U
|
||||
vmin=\1 vtime=\0
|
||||
*/
|
||||
#define INIT_C_CC "\004\000\000\177\027\025\022\000\003\034\032\000\021\023\026\025\001\000"
|
||||
|
||||
/*
|
||||
* Translate a "termio" structure into a "termios". Ugh.
|
||||
*/
|
||||
|
||||
#define user_termio_to_kernel_termios(a_termios, u_termio) \
|
||||
({ \
|
||||
struct ktermios *k_termios = (a_termios); \
|
||||
struct termio k_termio; \
|
||||
int canon, ret; \
|
||||
\
|
||||
ret = copy_from_user(&k_termio, u_termio, sizeof(k_termio)); \
|
||||
if (!ret) { \
|
||||
/* Overwrite only the low bits. */ \
|
||||
*(unsigned short *)&k_termios->c_iflag = k_termio.c_iflag; \
|
||||
*(unsigned short *)&k_termios->c_oflag = k_termio.c_oflag; \
|
||||
*(unsigned short *)&k_termios->c_cflag = k_termio.c_cflag; \
|
||||
*(unsigned short *)&k_termios->c_lflag = k_termio.c_lflag; \
|
||||
canon = k_termio.c_lflag & ICANON; \
|
||||
\
|
||||
k_termios->c_cc[VINTR] = k_termio.c_cc[_VINTR]; \
|
||||
k_termios->c_cc[VQUIT] = k_termio.c_cc[_VQUIT]; \
|
||||
k_termios->c_cc[VERASE] = k_termio.c_cc[_VERASE]; \
|
||||
k_termios->c_cc[VKILL] = k_termio.c_cc[_VKILL]; \
|
||||
k_termios->c_cc[VEOL2] = k_termio.c_cc[_VEOL2]; \
|
||||
k_termios->c_cc[VSWTC] = k_termio.c_cc[_VSWTC]; \
|
||||
k_termios->c_cc[canon ? VEOF : VMIN] = k_termio.c_cc[_VEOF]; \
|
||||
k_termios->c_cc[canon ? VEOL : VTIME] = k_termio.c_cc[_VEOL]; \
|
||||
} \
|
||||
ret; \
|
||||
})
|
||||
|
||||
/*
|
||||
* Translate a "termios" structure into a "termio". Ugh.
|
||||
*
|
||||
* Note the "fun" _VMIN overloading.
|
||||
*/
|
||||
#define kernel_termios_to_user_termio(u_termio, a_termios) \
|
||||
({ \
|
||||
struct ktermios *k_termios = (a_termios); \
|
||||
struct termio k_termio; \
|
||||
int canon; \
|
||||
\
|
||||
k_termio.c_iflag = k_termios->c_iflag; \
|
||||
k_termio.c_oflag = k_termios->c_oflag; \
|
||||
k_termio.c_cflag = k_termios->c_cflag; \
|
||||
canon = (k_termio.c_lflag = k_termios->c_lflag) & ICANON; \
|
||||
\
|
||||
k_termio.c_line = k_termios->c_line; \
|
||||
k_termio.c_cc[_VINTR] = k_termios->c_cc[VINTR]; \
|
||||
k_termio.c_cc[_VQUIT] = k_termios->c_cc[VQUIT]; \
|
||||
k_termio.c_cc[_VERASE] = k_termios->c_cc[VERASE]; \
|
||||
k_termio.c_cc[_VKILL] = k_termios->c_cc[VKILL]; \
|
||||
k_termio.c_cc[_VEOF] = k_termios->c_cc[canon ? VEOF : VMIN]; \
|
||||
k_termio.c_cc[_VEOL] = k_termios->c_cc[canon ? VEOL : VTIME]; \
|
||||
k_termio.c_cc[_VEOL2] = k_termios->c_cc[VEOL2]; \
|
||||
k_termio.c_cc[_VSWTC] = k_termios->c_cc[VSWTC]; \
|
||||
\
|
||||
copy_to_user(u_termio, &k_termio, sizeof(k_termio)); \
|
||||
})
|
||||
|
||||
#define user_termios_to_kernel_termios(k, u) \
|
||||
copy_from_user(k, u, sizeof(struct termios2))
|
||||
|
||||
#define kernel_termios_to_user_termios(u, k) \
|
||||
copy_to_user(u, k, sizeof(struct termios2))
|
||||
|
||||
#define user_termios_to_kernel_termios_1(k, u) \
|
||||
copy_from_user(k, u, sizeof(struct termios))
|
||||
|
||||
#define kernel_termios_to_user_termios_1(u, k) \
|
||||
copy_to_user(u, k, sizeof(struct termios))
|
||||
|
||||
#endif /* _ALPHA_TERMIOS_H */
|
||||
@@ -9,7 +9,7 @@ ccflags-y := -Wno-sign-compare
|
||||
|
||||
obj-y := entry.o traps.o process.o osf_sys.o irq.o \
|
||||
irq_alpha.o signal.o setup.o ptrace.o time.o \
|
||||
systbls.o err_common.o io.o bugs.o
|
||||
systbls.o err_common.o io.o bugs.o termios.o
|
||||
|
||||
obj-$(CONFIG_VGA_HOSE) += console.o
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
|
||||
56
arch/alpha/kernel/termios.c
Normal file
56
arch/alpha/kernel/termios.c
Normal file
@@ -0,0 +1,56 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <linux/termios_internal.h>
|
||||
|
||||
int user_termio_to_kernel_termios(struct ktermios *termios,
|
||||
struct termio __user *termio)
|
||||
{
|
||||
struct termio v;
|
||||
bool canon;
|
||||
|
||||
if (copy_from_user(&v, termio, sizeof(struct termio)))
|
||||
return -EFAULT;
|
||||
|
||||
termios->c_iflag = (0xffff0000 & termios->c_iflag) | v.c_iflag;
|
||||
termios->c_oflag = (0xffff0000 & termios->c_oflag) | v.c_oflag;
|
||||
termios->c_cflag = (0xffff0000 & termios->c_cflag) | v.c_cflag;
|
||||
termios->c_lflag = (0xffff0000 & termios->c_lflag) | v.c_lflag;
|
||||
termios->c_line = (0xffff0000 & termios->c_lflag) | v.c_line;
|
||||
|
||||
canon = v.c_lflag & ICANON;
|
||||
termios->c_cc[VINTR] = v.c_cc[_VINTR];
|
||||
termios->c_cc[VQUIT] = v.c_cc[_VQUIT];
|
||||
termios->c_cc[VERASE] = v.c_cc[_VERASE];
|
||||
termios->c_cc[VKILL] = v.c_cc[_VKILL];
|
||||
termios->c_cc[VEOL2] = v.c_cc[_VEOL2];
|
||||
termios->c_cc[VSWTC] = v.c_cc[_VSWTC];
|
||||
termios->c_cc[canon ? VEOF : VMIN] = v.c_cc[_VEOF];
|
||||
termios->c_cc[canon ? VEOL : VTIME] = v.c_cc[_VEOL];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int kernel_termios_to_user_termio(struct termio __user *termio,
|
||||
struct ktermios *termios)
|
||||
{
|
||||
struct termio v;
|
||||
bool canon;
|
||||
|
||||
memset(&v, 0, sizeof(struct termio));
|
||||
v.c_iflag = termios->c_iflag;
|
||||
v.c_oflag = termios->c_oflag;
|
||||
v.c_cflag = termios->c_cflag;
|
||||
v.c_lflag = termios->c_lflag;
|
||||
v.c_line = termios->c_line;
|
||||
|
||||
canon = v.c_lflag & ICANON;
|
||||
v.c_cc[_VINTR] = termios->c_cc[VINTR];
|
||||
v.c_cc[_VQUIT] = termios->c_cc[VQUIT];
|
||||
v.c_cc[_VERASE] = termios->c_cc[VERASE];
|
||||
v.c_cc[_VKILL] = termios->c_cc[VKILL];
|
||||
v.c_cc[_VEOF] = termios->c_cc[canon ? VEOF : VMIN];
|
||||
v.c_cc[_VEOL] = termios->c_cc[canon ? VEOL : VTIME];
|
||||
v.c_cc[_VEOL2] = termios->c_cc[VEOL2];
|
||||
v.c_cc[_VSWTC] = termios->c_cc[VSWTC];
|
||||
|
||||
return copy_to_user(termio, &v, sizeof(struct termio));
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/termios.h>
|
||||
#include <linux/amba/bus.h>
|
||||
#include <linux/amba/serial.h>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/termios.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Modified 1999
|
||||
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
|
||||
*
|
||||
* 99/01/28 Added N_IRDA and N_SMSBLOCK
|
||||
*/
|
||||
#ifndef _ASM_IA64_TERMIOS_H
|
||||
#define _ASM_IA64_TERMIOS_H
|
||||
|
||||
#include <uapi/asm/termios.h>
|
||||
|
||||
|
||||
/* intr=^C quit=^\ erase=del kill=^U
|
||||
eof=^D vtime=\0 vmin=\1 sxtc=\0
|
||||
start=^Q stop=^S susp=^Z eol=\0
|
||||
reprint=^R discard=^U werase=^W lnext=^V
|
||||
eol2=\0
|
||||
*/
|
||||
#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
|
||||
|
||||
/*
|
||||
* Translate a "termio" structure into a "termios". Ugh.
|
||||
*/
|
||||
#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
|
||||
unsigned short __tmp; \
|
||||
get_user(__tmp,&(termio)->x); \
|
||||
*(unsigned short *) &(termios)->x = __tmp; \
|
||||
}
|
||||
|
||||
#define user_termio_to_kernel_termios(termios, termio) \
|
||||
({ \
|
||||
SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
|
||||
SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
|
||||
SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
|
||||
SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
|
||||
copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
|
||||
})
|
||||
|
||||
/*
|
||||
* Translate a "termios" structure into a "termio". Ugh.
|
||||
*/
|
||||
#define kernel_termios_to_user_termio(termio, termios) \
|
||||
({ \
|
||||
put_user((termios)->c_iflag, &(termio)->c_iflag); \
|
||||
put_user((termios)->c_oflag, &(termio)->c_oflag); \
|
||||
put_user((termios)->c_cflag, &(termio)->c_cflag); \
|
||||
put_user((termios)->c_lflag, &(termio)->c_lflag); \
|
||||
put_user((termios)->c_line, &(termio)->c_line); \
|
||||
copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
|
||||
})
|
||||
|
||||
#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
|
||||
#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
|
||||
#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
|
||||
#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
|
||||
|
||||
#endif /* _ASM_IA64_TERMIOS_H */
|
||||
@@ -1,51 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Modified 1999
|
||||
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
|
||||
*
|
||||
* 99/01/28 Added N_IRDA and N_SMSBLOCK
|
||||
*/
|
||||
#ifndef _UAPI_ASM_IA64_TERMIOS_H
|
||||
#define _UAPI_ASM_IA64_TERMIOS_H
|
||||
|
||||
|
||||
#include <asm/termbits.h>
|
||||
#include <asm/ioctls.h>
|
||||
|
||||
struct winsize {
|
||||
unsigned short ws_row;
|
||||
unsigned short ws_col;
|
||||
unsigned short ws_xpixel;
|
||||
unsigned short ws_ypixel;
|
||||
};
|
||||
|
||||
#define NCC 8
|
||||
struct termio {
|
||||
unsigned short c_iflag; /* input mode flags */
|
||||
unsigned short c_oflag; /* output mode flags */
|
||||
unsigned short c_cflag; /* control mode flags */
|
||||
unsigned short c_lflag; /* local mode flags */
|
||||
unsigned char c_line; /* line discipline */
|
||||
unsigned char c_cc[NCC]; /* control characters */
|
||||
};
|
||||
|
||||
/* modem lines */
|
||||
#define TIOCM_LE 0x001
|
||||
#define TIOCM_DTR 0x002
|
||||
#define TIOCM_RTS 0x004
|
||||
#define TIOCM_ST 0x008
|
||||
#define TIOCM_SR 0x010
|
||||
#define TIOCM_CTS 0x020
|
||||
#define TIOCM_CAR 0x040
|
||||
#define TIOCM_RNG 0x080
|
||||
#define TIOCM_DSR 0x100
|
||||
#define TIOCM_CD TIOCM_CAR
|
||||
#define TIOCM_RI TIOCM_RNG
|
||||
#define TIOCM_OUT1 0x2000
|
||||
#define TIOCM_OUT2 0x4000
|
||||
#define TIOCM_LOOP 0x8000
|
||||
|
||||
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
|
||||
|
||||
|
||||
#endif /* _UAPI_ASM_IA64_TERMIOS_H */
|
||||
@@ -21,7 +21,6 @@ generic-y += shmbuf.h
|
||||
generic-y += statfs.h
|
||||
generic-y += socket.h
|
||||
generic-y += sockios.h
|
||||
generic-y += termios.h
|
||||
generic-y += termbits.h
|
||||
generic-y += poll.h
|
||||
generic-y += param.h
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user