forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: serial: tegra-hsuart: Convert to json-schema
Convert the Tegra High-Speed UART bindings from the free-form text format to json-schema. Signed-off-by: Thierry Reding <treding@nvidia.com>
- Loading branch information
1 parent
11e1711
commit af40fd2
Showing
2 changed files
with
124 additions
and
73 deletions.
There are no files selected for viewing
73 changes: 0 additions & 73 deletions
73
Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt
This file was deleted.
Oops, something went wrong.
124 changes: 124 additions & 0 deletions
124
Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/serial/nvidia,tegra20-hsuart.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: NVIDIA Tegra20/Tegra30 high speed (DMA based) UART controller driver | ||
|
||
maintainers: | ||
- Thierry Reding <thierry.reding@gmail.com> | ||
- Jon Hunter <jonathanh@nvidia.com> | ||
|
||
properties: | ||
compatible: | ||
oneOf: | ||
- const: nvidia,tegra20-hsuart | ||
- const: nvidia,tegra30-hsuart | ||
- items: | ||
- const: nvidia,tegra124-hsuart | ||
- const: nvidia,tegra30-hsuart | ||
- const: nvidia,tegra186-hsuart | ||
- const: nvidia,tegra194-hsuart | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
interrupts: | ||
maxItems: 1 | ||
|
||
clocks: | ||
items: | ||
- description: module clock | ||
|
||
resets: | ||
items: | ||
- description: module reset | ||
|
||
reset-names: | ||
items: | ||
- const: serial | ||
|
||
dmas: | ||
items: | ||
- description: DMA channel used for reception | ||
- description: DMA channel used for transmission | ||
|
||
dma-names: | ||
items: | ||
- const: rx | ||
- const: tx | ||
|
||
nvidia,enable-modem-interrupt: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: Enable modem interrupts. Should be enable only if all 8 lines of UART controller | ||
are pinmuxed. | ||
|
||
nvidia,adjust-baud-rates: | ||
$ref: /schemas/types.yaml#/definitions/uint32-matrix | ||
description: | | ||
List of entries providing percentage of baud rate adjustment within a range. Each entry | ||
contains a set of 3 values: range low/high and adjusted rate. When the baud rate set on the | ||
controller falls within the range mentioned in this field, the baud rate will be adjusted by | ||
percentage mentioned here. | ||
Example: <9600 115200 200> | ||
Increase baud rate by 2% when set baud rate falls within range 9600 to 115200. | ||
Standard UART devices are expected to have tolerance for baud rate error by -4 to +4 %. All | ||
Tegra devices till Tegra210 had this support. However, Tegra186 chip has a known hardware | ||
issue. UART RX baud rate tolerance level is 0% to +4% in 1-stop config. Otherwise, the | ||
received data will have corruption/invalid framing errors. Parker errata suggests adjusting | ||
baud rate to be higher than the deviations observed in TX. | ||
TX deviation of connected device can be captured over scope (or noted from its spec) for | ||
valid range and Tegra baud rate has to be set above actual TX baud rate observed. To do this | ||
we use nvidia,adjust-baud-rates. | ||
As an example, consider there is deviation observed in TX for baud rates as listed below. 0 | ||
to 9600 has 1% deviation 9600 to 115200 2% deviation. This slight deviation is expcted and | ||
Tegra UART is expected to handle it. Due to the issue stated above, baud rate on Tegra UART | ||
should be set equal to or above deviation observed for avoiding frame errors. Property | ||
should be set like this: | ||
nvidia,adjust-baud-rates = <0 9600 100>, | ||
<9600 115200 200>; | ||
items: | ||
items: | ||
- description: range lower bound | ||
- description: range upper bound | ||
- description: adjustment (in permyriad, i.e. 0.01%) | ||
|
||
allOf: | ||
- $ref: serial.yaml | ||
|
||
unevaluatedProperties: false | ||
|
||
required: | ||
- compatible | ||
- reg | ||
- interrupts | ||
- clocks | ||
- resets | ||
- reset-names | ||
- dmas | ||
- dma-names | ||
|
||
examples: | ||
- | | ||
#include <dt-bindings/clock/tegra30-car.h> | ||
#include <dt-bindings/interrupt-controller/arm-gic.h> | ||
serial@70006000 { | ||
compatible = "nvidia,tegra30-hsuart"; | ||
reg = <0x70006000 0x40>; | ||
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; | ||
nvidia,enable-modem-interrupt; | ||
clocks = <&tegra_car TEGRA30_CLK_UARTA>; | ||
resets = <&tegra_car 6>; | ||
reset-names = "serial"; | ||
dmas = <&apbdma 8>, <&apbdma 8>; | ||
dma-names = "rx", "tx"; | ||
nvidia,adjust-baud-rates = <1000000 4000000 136>; /* 1.36% shift */ | ||
}; |