mirror of
https://github.com/torvalds/linux.git
synced 2026-05-01 04:52:32 -04:00
While testing on a Freescale MPC8314E board, I noticed that changing the UART compatible string from ns16550 to ns16550a breaks the output, suggesting that the FIFOs don't work correctly. To accommodate this fact, move the definition of fsl,ns16550 to the section of 8250.yaml that allows broken FIFOs. Signed-off-by: J. Neuschäfer <j.ne@posteo.net> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20250209-uartfifo-v1-1-501a510a5f07@posteo.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
267 lines
7.0 KiB
YAML
267 lines
7.0 KiB
YAML
# Copyright 2020 Lubomir Rintel <lkundrak@v3.sk>
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/serial/8250.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: UART (Universal Asynchronous Receiver/Transmitter)
|
|
|
|
maintainers:
|
|
- devicetree@vger.kernel.org
|
|
|
|
allOf:
|
|
- $ref: serial.yaml#
|
|
- $ref: /schemas/memory-controllers/mc-peripheral-props.yaml#
|
|
- if:
|
|
anyOf:
|
|
- required:
|
|
- aspeed,lpc-io-reg
|
|
- required:
|
|
- aspeed,lpc-interrupts
|
|
- required:
|
|
- aspeed,sirq-polarity-sense
|
|
then:
|
|
properties:
|
|
compatible:
|
|
const: aspeed,ast2500-vuart
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: mrvl,mmp-uart
|
|
then:
|
|
properties:
|
|
reg-shift:
|
|
const: 2
|
|
required:
|
|
- reg-shift
|
|
- if:
|
|
not:
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- ns8250
|
|
- ns16450
|
|
- ns16550
|
|
- ns16550a
|
|
then:
|
|
anyOf:
|
|
- required: [ clock-frequency ]
|
|
- required: [ clocks ]
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- const: ns8250
|
|
- const: ns16450
|
|
- const: ns16550
|
|
- const: ns16550a
|
|
- const: ns16850
|
|
- const: aspeed,ast2400-vuart
|
|
- const: aspeed,ast2500-vuart
|
|
- const: intel,xscale-uart
|
|
- const: mrvl,pxa-uart
|
|
- const: nuvoton,wpcm450-uart
|
|
- const: nuvoton,npcm750-uart
|
|
- const: nvidia,tegra20-uart
|
|
- const: nxp,lpc3220-uart
|
|
- items:
|
|
- enum:
|
|
- exar,xr16l2552
|
|
- exar,xr16l2551
|
|
- exar,xr16l2550
|
|
- const: ns8250
|
|
- items:
|
|
- enum:
|
|
- altr,16550-FIFO32
|
|
- altr,16550-FIFO64
|
|
- altr,16550-FIFO128
|
|
- fsl,16550-FIFO64
|
|
- andestech,uart16550
|
|
- nxp,lpc1850-uart
|
|
- opencores,uart16550-rtlsvn105
|
|
- ti,da830-uart
|
|
- const: ns16550a
|
|
- items:
|
|
- enum:
|
|
- ns16750
|
|
- fsl,ns16550
|
|
- cavium,octeon-3860-uart
|
|
- xlnx,xps-uart16550-2.00.b
|
|
- ralink,rt2880-uart
|
|
- enum:
|
|
- ns16550 # Deprecated, unless the FIFO really is broken
|
|
- ns16550a
|
|
- items:
|
|
- enum:
|
|
- nuvoton,npcm845-uart
|
|
- const: nuvoton,npcm750-uart
|
|
- items:
|
|
- enum:
|
|
- ralink,mt7620a-uart
|
|
- ralink,rt3052-uart
|
|
- ralink,rt3883-uart
|
|
- const: ralink,rt2880-uart
|
|
- enum:
|
|
- ns16550 # Deprecated, unless the FIFO really is broken
|
|
- ns16550a
|
|
- items:
|
|
- enum:
|
|
- mediatek,mt7622-btif
|
|
- mediatek,mt7623-btif
|
|
- const: mediatek,mtk-btif
|
|
- items:
|
|
- enum:
|
|
- mrvl,mmp-uart
|
|
- spacemit,k1-uart
|
|
- const: intel,xscale-uart
|
|
- items:
|
|
- enum:
|
|
- nvidia,tegra30-uart
|
|
- nvidia,tegra114-uart
|
|
- nvidia,tegra124-uart
|
|
- nvidia,tegra210-uart
|
|
- nvidia,tegra186-uart
|
|
- nvidia,tegra194-uart
|
|
- nvidia,tegra234-uart
|
|
- const: nvidia,tegra20-uart
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clock-frequency: true
|
|
|
|
clocks:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
current-speed:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description: The current active speed of the UART.
|
|
|
|
reg-offset:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description: |
|
|
Offset to apply to the mapbase from the start of the registers.
|
|
|
|
reg-shift:
|
|
description: Quantity to shift the register offsets by.
|
|
|
|
reg-io-width:
|
|
description: |
|
|
The size (in bytes) of the IO accesses that should be performed on the
|
|
device. There are some systems that require 32-bit accesses to the
|
|
UART (e.g. TI davinci).
|
|
|
|
used-by-rtas:
|
|
type: boolean
|
|
description: |
|
|
Set to indicate that the port is in use by the OpenFirmware RTAS and
|
|
should not be registered.
|
|
|
|
no-loopback-test:
|
|
type: boolean
|
|
description: |
|
|
Set to indicate that the port does not implement loopback test mode.
|
|
|
|
fifo-size:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description: The fifo size of the UART.
|
|
|
|
auto-flow-control:
|
|
type: boolean
|
|
description: |
|
|
One way to enable automatic flow control support. The driver is
|
|
allowed to detect support for the capability even without this
|
|
property.
|
|
|
|
tx-threshold:
|
|
description: |
|
|
Specify the TX FIFO low water indication for parts with programmable
|
|
TX FIFO thresholds.
|
|
|
|
overrun-throttle-ms:
|
|
description: |
|
|
How long to pause uart rx when input overrun is encountered.
|
|
|
|
rts-gpios: true
|
|
cts-gpios: true
|
|
dtr-gpios: true
|
|
dsr-gpios: true
|
|
rng-gpios: true
|
|
dcd-gpios: true
|
|
|
|
aspeed,sirq-polarity-sense:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
description: |
|
|
Phandle to aspeed,ast2500-scu compatible syscon alongside register
|
|
offset and bit number to identify how the SIRQ polarity should be
|
|
configured. One possible data source is the LPC/eSPI mode bit. Only
|
|
applicable to aspeed,ast2500-vuart.
|
|
deprecated: true
|
|
|
|
aspeed,lpc-io-reg:
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
maxItems: 1
|
|
description: |
|
|
The VUART LPC address. Only applicable to aspeed,ast2500-vuart.
|
|
|
|
aspeed,lpc-interrupts:
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
minItems: 2
|
|
maxItems: 2
|
|
description: |
|
|
A 2-cell property describing the VUART SIRQ number and SIRQ
|
|
polarity (IRQ_TYPE_LEVEL_LOW or IRQ_TYPE_LEVEL_HIGH). Only
|
|
applicable to aspeed,ast2500-vuart.
|
|
|
|
required:
|
|
- reg
|
|
- interrupts
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
serial@80230000 {
|
|
compatible = "ns8250";
|
|
reg = <0x80230000 0x100>;
|
|
interrupts = <10>;
|
|
reg-shift = <2>;
|
|
clock-frequency = <48000000>;
|
|
};
|
|
- |
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
serial@49042000 {
|
|
compatible = "andestech,uart16550", "ns16550a";
|
|
reg = <0x49042000 0x400>;
|
|
interrupts = <80>;
|
|
clock-frequency = <48000000>;
|
|
cts-gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;
|
|
rts-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
|
|
dtr-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
|
|
dsr-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
|
|
dcd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
|
|
rng-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
|
|
};
|
|
- |
|
|
#include <dt-bindings/clock/aspeed-clock.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
serial@1e787000 {
|
|
compatible = "aspeed,ast2500-vuart";
|
|
reg = <0x1e787000 0x40>;
|
|
reg-shift = <2>;
|
|
interrupts = <8>;
|
|
clocks = <&syscon ASPEED_CLK_APB>;
|
|
no-loopback-test;
|
|
aspeed,lpc-io-reg = <0x3f8>;
|
|
aspeed,lpc-interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
|
};
|
|
|
|
...
|