forked from linuxppc/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
From Herve Codina: This series add support for the QUICC Engine (QE) version of TSA and QMC components. CPM1 version is already supported and, as the QE version of those component are pretty similar to the CPM1 version, the series extend the already existing drivers to support for the QE version. The TSA and QMC components are tightly coupled and so the series provides modifications on both components. Of course, this series can be split if it is needed. Let me know. The series is composed of: - Patches 1 and 2: Fixes related to TRNSYNC in the QMC driver - Patches 3..6: Fixes of checkpatch detected issues in the TSA driver - Patch 7: The QE TSA device-tree binding - Patches 8..13: TSA driver preparations for adding support for QE - Patches 14 and 15: The support for QE in TSA + MAINTAINERS update - Patch 16: A TSA API improvement needed for the QE QMC driver - Patch 17: A clarification in the QE QMC driver - Patches 18..22: Fixes of checkpatch detected issues in the QMC driver - Patch 23: The QE QMC device-tree binding - Patches 24..31: QMC driver preparations for adding support for QE - Patches 32 and 33: Missing features additions in QE code - Patches 34..36: The QMC support for QE in QMC + MAINTAINERS update Compared to the previous iteration, this v2 series updates device-tree bindings and fixes issues detected by kernel test robots. Related to the QE QMC device-tree binding, I kept the unit address in decimal and the 3 compatible strings. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Tested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
- Loading branch information
Showing
10 changed files
with
1,549 additions
and
324 deletions.
There are no files selected for viewing
210 changes: 210 additions & 0 deletions
210
Documentation/devicetree/bindings/soc/fsl/cpm_qe/fsl,qe-tsa.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,210 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/soc/fsl/cpm_qe/fsl,qe-tsa.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: PowerQUICC QE Time-slot assigner (TSA) controller | ||
|
||
maintainers: | ||
- Herve Codina <herve.codina@bootlin.com> | ||
|
||
description: | ||
The TSA is the time-slot assigner that can be found on some PowerQUICC SoC. | ||
Its purpose is to route some TDM time-slots to other internal serial | ||
controllers. | ||
|
||
properties: | ||
compatible: | ||
items: | ||
- enum: | ||
- fsl,mpc8321-tsa | ||
- const: fsl,qe-tsa | ||
|
||
reg: | ||
items: | ||
- description: SI (Serial Interface) register base | ||
- description: SI RAM base | ||
|
||
reg-names: | ||
items: | ||
- const: si_regs | ||
- const: si_ram | ||
|
||
'#address-cells': | ||
const: 1 | ||
|
||
'#size-cells': | ||
const: 0 | ||
|
||
patternProperties: | ||
'^tdm@[0-3]$': | ||
description: | ||
The TDM managed by this controller | ||
type: object | ||
|
||
additionalProperties: false | ||
|
||
properties: | ||
reg: | ||
minimum: 0 | ||
maximum: 3 | ||
description: | ||
The TDM number for this TDM, 0 for TDMa, 1 for TDMb, 2 for TDMc and 3 | ||
for TDMd. | ||
|
||
fsl,common-rxtx-pins: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: | ||
The hardware can use four dedicated pins for Tx clock, Tx sync, Rx | ||
clock and Rx sync or use only two pins, Tx/Rx clock and Tx/Rx sync. | ||
Without the 'fsl,common-rxtx-pins' property, the four pins are used. | ||
With the 'fsl,common-rxtx-pins' property, two pins are used. | ||
|
||
clocks: | ||
minItems: 2 | ||
items: | ||
- description: Receive sync clock | ||
- description: Receive data clock | ||
- description: Transmit sync clock | ||
- description: Transmit data clock | ||
|
||
clock-names: | ||
minItems: 2 | ||
items: | ||
- const: rsync | ||
- const: rclk | ||
- const: tsync | ||
- const: tclk | ||
|
||
fsl,rx-frame-sync-delay-bits: | ||
enum: [0, 1, 2, 3] | ||
default: 0 | ||
description: | | ||
Receive frame sync delay in number of bits. | ||
Indicates the delay between the Rx sync and the first bit of the Rx | ||
frame. | ||
fsl,tx-frame-sync-delay-bits: | ||
enum: [0, 1, 2, 3] | ||
default: 0 | ||
description: | | ||
Transmit frame sync delay in number of bits. | ||
Indicates the delay between the Tx sync and the first bit of the Tx | ||
frame. | ||
fsl,clock-falling-edge: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: | ||
Data is sent on falling edge of the clock (and received on the rising | ||
edge). If not present, data is sent on the rising edge (and received | ||
on the falling edge). | ||
|
||
fsl,fsync-rising-edge: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: | ||
Frame sync pulses are sampled with the rising edge of the channel | ||
clock. If not present, pulses are sampled with the falling edge. | ||
|
||
fsl,fsync-active-low: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: | ||
Frame sync signals are active on low logic level. | ||
If not present, sync signals are active on high level. | ||
|
||
fsl,double-speed-clock: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: | ||
The channel clock is twice the data rate. | ||
|
||
patternProperties: | ||
'^fsl,[rt]x-ts-routes$': | ||
$ref: /schemas/types.yaml#/definitions/uint32-matrix | ||
description: | | ||
A list of tuple that indicates the Tx or Rx time-slots routes. | ||
items: | ||
items: | ||
- description: | ||
The number of time-slots | ||
minimum: 1 | ||
maximum: 64 | ||
- description: | | ||
The source (Tx) or destination (Rx) serial interface | ||
(dt-bindings/soc/qe-fsl,tsa.h defines these values) | ||
- 0: No destination | ||
- 1: UCC1 | ||
- 2: UCC2 | ||
- 3: UCC3 | ||
- 4: UCC4 | ||
- 5: UCC5 | ||
enum: [0, 1, 2, 3, 4, 5] | ||
minItems: 1 | ||
maxItems: 64 | ||
|
||
allOf: | ||
# If fsl,common-rxtx-pins is present, only 2 clocks are needed. | ||
# Else, the 4 clocks must be present. | ||
- if: | ||
required: | ||
- fsl,common-rxtx-pins | ||
then: | ||
properties: | ||
clocks: | ||
maxItems: 2 | ||
clock-names: | ||
maxItems: 2 | ||
else: | ||
properties: | ||
clocks: | ||
minItems: 4 | ||
clock-names: | ||
minItems: 4 | ||
|
||
required: | ||
- reg | ||
- clocks | ||
- clock-names | ||
|
||
required: | ||
- compatible | ||
- reg | ||
- reg-names | ||
- '#address-cells' | ||
- '#size-cells' | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
#include <dt-bindings/soc/qe-fsl,tsa.h> | ||
tsa@ae0 { | ||
compatible = "fsl,mpc8321-tsa", "fsl,qe-tsa"; | ||
reg = <0xae0 0x10>, | ||
<0xc00 0x200>; | ||
reg-names = "si_regs", "si_ram"; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
tdm@0 { | ||
/* TDMa */ | ||
reg = <0>; | ||
clocks = <&clk_l1rsynca>, <&clk_l1rclka>; | ||
clock-names = "rsync", "rclk"; | ||
fsl,common-rxtx-pins; | ||
fsl,fsync-rising-edge; | ||
fsl,tx-ts-routes = <2 0>, /* TS 0..1 */ | ||
<24 FSL_QE_TSA_UCC4>, /* TS 2..25 */ | ||
<1 0>, /* TS 26 */ | ||
<5 FSL_QE_TSA_UCC3>; /* TS 27..31 */ | ||
fsl,rx-ts-routes = <2 0>, /* TS 0..1 */ | ||
<24 FSL_QE_TSA_UCC4>, /* 2..25 */ | ||
<1 0>, /* TS 26 */ | ||
<5 FSL_QE_TSA_UCC3>; /* TS 27..31 */ | ||
}; | ||
}; |
Oops, something went wrong.