313 lines
9.1 KiB
YAML
313 lines
9.1 KiB
YAML
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||
|
# Copyright (c) 2020 MediaTek
|
||
|
%YAML 1.2
|
||
|
---
|
||
|
$id: http://devicetree.org/schemas/phy/mediatek,tphy.yaml#
|
||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||
|
|
||
|
title: MediaTek T-PHY Controller
|
||
|
|
||
|
maintainers:
|
||
|
- Chunfeng Yun <chunfeng.yun@mediatek.com>
|
||
|
|
||
|
description: |
|
||
|
The T-PHY controller supports physical layer functionality for a number of
|
||
|
controllers on MediaTek SoCs, includes USB2.0, USB3.0, PCIe and SATA.
|
||
|
|
||
|
Layout differences of banks between T-PHY V1 (mt8173/mt2701) and
|
||
|
T-PHY V2 (mt2712) / V3 (mt8195) when works on USB mode:
|
||
|
-----------------------------------
|
||
|
Version 1:
|
||
|
port offset bank
|
||
|
shared 0x0000 SPLLC
|
||
|
0x0100 FMREG
|
||
|
u2 port0 0x0800 U2PHY_COM
|
||
|
u3 port0 0x0900 U3PHYD
|
||
|
0x0a00 U3PHYD_BANK2
|
||
|
0x0b00 U3PHYA
|
||
|
0x0c00 U3PHYA_DA
|
||
|
u2 port1 0x1000 U2PHY_COM
|
||
|
u3 port1 0x1100 U3PHYD
|
||
|
0x1200 U3PHYD_BANK2
|
||
|
0x1300 U3PHYA
|
||
|
0x1400 U3PHYA_DA
|
||
|
u2 port2 0x1800 U2PHY_COM
|
||
|
...
|
||
|
|
||
|
Version 2/3:
|
||
|
port offset bank
|
||
|
u2 port0 0x0000 MISC
|
||
|
0x0100 FMREG
|
||
|
0x0300 U2PHY_COM
|
||
|
u3 port0 0x0700 SPLLC
|
||
|
0x0800 CHIP
|
||
|
0x0900 U3PHYD
|
||
|
0x0a00 U3PHYD_BANK2
|
||
|
0x0b00 U3PHYA
|
||
|
0x0c00 U3PHYA_DA
|
||
|
u2 port1 0x1000 MISC
|
||
|
0x1100 FMREG
|
||
|
0x1300 U2PHY_COM
|
||
|
u3 port1 0x1700 SPLLC
|
||
|
0x1800 CHIP
|
||
|
0x1900 U3PHYD
|
||
|
0x1a00 U3PHYD_BANK2
|
||
|
0x1b00 U3PHYA
|
||
|
0x1c00 U3PHYA_DA
|
||
|
u2 port2 0x2000 MISC
|
||
|
...
|
||
|
|
||
|
SPLLC shared by u3 ports and FMREG shared by u2 ports on V1 are put back
|
||
|
into each port; a new bank MISC for u2 ports and CHIP for u3 ports are
|
||
|
added on V2; the FMREG bank for slew rate calibration is not used anymore
|
||
|
and reserved on V3;
|
||
|
|
||
|
properties:
|
||
|
$nodename:
|
||
|
pattern: "^t-phy@[0-9a-f]+$"
|
||
|
|
||
|
compatible:
|
||
|
oneOf:
|
||
|
- items:
|
||
|
- enum:
|
||
|
- mediatek,mt2701-tphy
|
||
|
- mediatek,mt7623-tphy
|
||
|
- mediatek,mt7622-tphy
|
||
|
- mediatek,mt8516-tphy
|
||
|
- const: mediatek,generic-tphy-v1
|
||
|
- items:
|
||
|
- enum:
|
||
|
- mediatek,mt2712-tphy
|
||
|
- mediatek,mt7629-tphy
|
||
|
- mediatek,mt8183-tphy
|
||
|
- mediatek,mt8186-tphy
|
||
|
- mediatek,mt8192-tphy
|
||
|
- mediatek,mt8365-tphy
|
||
|
- const: mediatek,generic-tphy-v2
|
||
|
- items:
|
||
|
- enum:
|
||
|
- mediatek,mt8188-tphy
|
||
|
- mediatek,mt8195-tphy
|
||
|
- const: mediatek,generic-tphy-v3
|
||
|
- const: mediatek,mt2701-u3phy
|
||
|
deprecated: true
|
||
|
- const: mediatek,mt2712-u3phy
|
||
|
deprecated: true
|
||
|
- const: mediatek,mt8173-u3phy
|
||
|
|
||
|
reg:
|
||
|
description:
|
||
|
Register shared by multiple ports, exclude port's private register.
|
||
|
It is needed for T-PHY V1, such as mt2701 and mt8173, but not for
|
||
|
T-PHY V2/V3, such as mt2712.
|
||
|
maxItems: 1
|
||
|
|
||
|
"#address-cells":
|
||
|
enum: [1, 2]
|
||
|
|
||
|
"#size-cells":
|
||
|
enum: [1, 2]
|
||
|
|
||
|
# Used with non-empty value if optional 'reg' is not provided.
|
||
|
# The format of the value is an arbitrary number of triplets of
|
||
|
# (child-bus-address, parent-bus-address, length).
|
||
|
ranges: true
|
||
|
|
||
|
mediatek,src-ref-clk-mhz:
|
||
|
description:
|
||
|
Frequency of reference clock for slew rate calibrate
|
||
|
default: 26
|
||
|
|
||
|
mediatek,src-coef:
|
||
|
description:
|
||
|
Coefficient for slew rate calibrate, depends on SoC process
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
default: 28
|
||
|
|
||
|
# Required child node:
|
||
|
patternProperties:
|
||
|
"^(usb|pcie|sata)-phy@[0-9a-f]+$":
|
||
|
type: object
|
||
|
description:
|
||
|
A sub-node is required for each port the controller provides.
|
||
|
Address range information including the usual 'reg' property
|
||
|
is used inside these nodes to describe the controller's topology.
|
||
|
|
||
|
properties:
|
||
|
reg:
|
||
|
maxItems: 1
|
||
|
|
||
|
clocks:
|
||
|
minItems: 1
|
||
|
items:
|
||
|
- description: Reference clock, (HS is 48Mhz, SS/P is 24~27Mhz)
|
||
|
- description: Reference clock of analog phy
|
||
|
description:
|
||
|
Uses both clocks if the clock of analog and digital phys are
|
||
|
separated, otherwise uses "ref" clock only if needed.
|
||
|
|
||
|
clock-names:
|
||
|
minItems: 1
|
||
|
items:
|
||
|
- const: ref
|
||
|
- const: da_ref
|
||
|
|
||
|
"#phy-cells":
|
||
|
const: 1
|
||
|
description: |
|
||
|
The cells contain the following arguments.
|
||
|
|
||
|
- description: The PHY type
|
||
|
enum:
|
||
|
- PHY_TYPE_USB2
|
||
|
- PHY_TYPE_USB3
|
||
|
- PHY_TYPE_PCIE
|
||
|
- PHY_TYPE_SATA
|
||
|
- PHY_TYPE_SGMII
|
||
|
|
||
|
nvmem-cells:
|
||
|
items:
|
||
|
- description: internal R efuse for U2 PHY or U3/PCIe PHY
|
||
|
- description: rx_imp_sel efuse for U3/PCIe PHY
|
||
|
- description: tx_imp_sel efuse for U3/PCIe PHY
|
||
|
description: |
|
||
|
Phandles to nvmem cell that contains the efuse data;
|
||
|
Available only for U2 PHY or U3/PCIe PHY of version 2/3, these
|
||
|
three items should be provided at the same time for U3/PCIe PHY,
|
||
|
when use software to load efuse;
|
||
|
If unspecified, will use hardware auto-load efuse.
|
||
|
|
||
|
nvmem-cell-names:
|
||
|
items:
|
||
|
- const: intr
|
||
|
- const: rx_imp
|
||
|
- const: tx_imp
|
||
|
|
||
|
# The following optional vendor properties are only for debug or HQA test
|
||
|
mediatek,eye-src:
|
||
|
description:
|
||
|
The value of slew rate calibrate (U2 phy)
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 1
|
||
|
maximum: 7
|
||
|
|
||
|
mediatek,eye-vrt:
|
||
|
description:
|
||
|
The selection of VRT reference voltage (U2 phy)
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 1
|
||
|
maximum: 7
|
||
|
|
||
|
mediatek,eye-term:
|
||
|
description:
|
||
|
The selection of HS_TX TERM reference voltage (U2 phy)
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 1
|
||
|
maximum: 7
|
||
|
|
||
|
mediatek,intr:
|
||
|
description:
|
||
|
The selection of internal resistor (U2 phy)
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 1
|
||
|
maximum: 31
|
||
|
|
||
|
mediatek,discth:
|
||
|
description:
|
||
|
The selection of disconnect threshold (U2 phy)
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 1
|
||
|
maximum: 15
|
||
|
|
||
|
mediatek,pre-emphasis:
|
||
|
description:
|
||
|
The level of pre-emphasis which used to widen the eye opening and
|
||
|
boost eye swing, the unit step is about 4.16% increment; e.g. the
|
||
|
level 1 means amplitude increases about 4.16%, the level 2 is about
|
||
|
8.3% etc. (U2 phy)
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
minimum: 1
|
||
|
maximum: 3
|
||
|
|
||
|
mediatek,bc12:
|
||
|
description:
|
||
|
Specify the flag to enable BC1.2 if support it
|
||
|
type: boolean
|
||
|
|
||
|
mediatek,syscon-type:
|
||
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||
|
maxItems: 1
|
||
|
description:
|
||
|
A phandle to syscon used to access the register of type switch,
|
||
|
the field should always be 3 cells long.
|
||
|
items:
|
||
|
items:
|
||
|
- description:
|
||
|
The first cell represents a phandle to syscon
|
||
|
- description:
|
||
|
The second cell represents the register offset
|
||
|
- description:
|
||
|
The third cell represents the index of config segment
|
||
|
enum: [0, 1, 2, 3]
|
||
|
|
||
|
required:
|
||
|
- reg
|
||
|
- "#phy-cells"
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- "#address-cells"
|
||
|
- "#size-cells"
|
||
|
- ranges
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
examples:
|
||
|
- |
|
||
|
#include <dt-bindings/clock/mt8173-clk.h>
|
||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||
|
#include <dt-bindings/phy/phy.h>
|
||
|
usb@11271000 {
|
||
|
compatible = "mediatek,mt8173-mtu3", "mediatek,mtu3";
|
||
|
reg = <0x11271000 0x3000>, <0x11280700 0x0100>;
|
||
|
reg-names = "mac", "ippc";
|
||
|
phys = <&u2port0 PHY_TYPE_USB2>,
|
||
|
<&u3port0 PHY_TYPE_USB3>,
|
||
|
<&u2port1 PHY_TYPE_USB2>;
|
||
|
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
|
||
|
clocks = <&topckgen CLK_TOP_USB30_SEL>;
|
||
|
clock-names = "sys_ck";
|
||
|
};
|
||
|
|
||
|
t-phy@11290000 {
|
||
|
compatible = "mediatek,mt8173-u3phy";
|
||
|
reg = <0x11290000 0x800>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <1>;
|
||
|
ranges;
|
||
|
|
||
|
u2port0: usb-phy@11290800 {
|
||
|
reg = <0x11290800 0x100>;
|
||
|
clocks = <&apmixedsys CLK_APMIXED_REF2USB_TX>, <&clk48m>;
|
||
|
clock-names = "ref", "da_ref";
|
||
|
#phy-cells = <1>;
|
||
|
};
|
||
|
|
||
|
u3port0: usb-phy@11290900 {
|
||
|
reg = <0x11290900 0x700>;
|
||
|
clocks = <&clk26m>;
|
||
|
clock-names = "ref";
|
||
|
#phy-cells = <1>;
|
||
|
};
|
||
|
|
||
|
u2port1: usb-phy@11291000 {
|
||
|
reg = <0x11291000 0x100>;
|
||
|
#phy-cells = <1>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
...
|