Commit 6181073d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
  ...
parents 881eccbe 30963b2f
Loading
Loading
Loading
Loading
+0 −98
Original line number Diff line number Diff line
* 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 −0
Original line number Diff line number Diff line
# 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>;
    };
+1 −0
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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

Loading