forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
5.7 KiB
209 lines
5.7 KiB
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
|
# Copyright (c) 2020 MediaTek |
|
%YAML 1.2 |
|
--- |
|
$id: http://devicetree.org/schemas/usb/mediatek,mtk-xhci.yaml# |
|
$schema: http://devicetree.org/meta-schemas/core.yaml# |
|
|
|
title: MediaTek USB3 xHCI Device Tree Bindings |
|
|
|
maintainers: |
|
- Chunfeng Yun <[email protected]> |
|
|
|
allOf: |
|
- $ref: "usb-xhci.yaml" |
|
|
|
description: | |
|
There are two scenarios: |
|
case 1: only supports xHCI driver; |
|
case 2: supports dual-role mode, and the host is based on xHCI driver. |
|
|
|
properties: |
|
# common properties for both case 1 and case 2 |
|
compatible: |
|
items: |
|
- enum: |
|
- mediatek,mt2701-xhci |
|
- mediatek,mt2712-xhci |
|
- mediatek,mt7622-xhci |
|
- mediatek,mt7623-xhci |
|
- mediatek,mt7629-xhci |
|
- mediatek,mt8173-xhci |
|
- mediatek,mt8183-xhci |
|
- mediatek,mt8192-xhci |
|
- mediatek,mt8195-xhci |
|
- const: mediatek,mtk-xhci |
|
|
|
reg: |
|
minItems: 1 |
|
items: |
|
- description: the registers of xHCI MAC |
|
- description: the registers of IP Port Control |
|
|
|
reg-names: |
|
minItems: 1 |
|
items: |
|
- const: mac |
|
- const: ippc # optional, only needed for case 1. |
|
|
|
interrupts: |
|
description: |
|
use "interrupts-extended" when the interrupts are connected to the |
|
separate interrupt controllers |
|
minItems: 1 |
|
items: |
|
- description: xHCI host controller interrupt |
|
- description: optional, wakeup interrupt used to support runtime PM |
|
|
|
interrupt-names: |
|
items: |
|
- const: host |
|
- const: wakeup |
|
|
|
power-domains: |
|
description: A phandle to USB power domain node to control USB's MTCMOS |
|
maxItems: 1 |
|
|
|
clocks: |
|
minItems: 1 |
|
items: |
|
- description: Controller clock used by normal mode |
|
- description: Reference clock used by low power mode etc |
|
- description: Mcu bus clock for register access |
|
- description: DMA bus clock for data transfer |
|
- description: controller clock |
|
|
|
clock-names: |
|
minItems: 1 |
|
items: |
|
- const: sys_ck # required, the following ones are optional |
|
- const: ref_ck |
|
- const: mcu_ck |
|
- const: dma_ck |
|
- const: xhci_ck |
|
|
|
assigned-clocks: |
|
minItems: 1 |
|
maxItems: 5 |
|
|
|
assigned-clock-parents: |
|
minItems: 1 |
|
maxItems: 5 |
|
|
|
phys: |
|
description: |
|
List of all PHYs used on this HCD, it's better to keep PHYs in order |
|
as the hardware layout |
|
minItems: 1 |
|
items: |
|
- description: USB2/HS PHY # required, others are optional |
|
- description: USB3/SS(P) PHY |
|
- description: USB2/HS PHY |
|
- description: USB3/SS(P) PHY |
|
- description: USB2/HS PHY |
|
- description: USB3/SS(P) PHY |
|
- description: USB2/HS PHY |
|
- description: USB3/SS(P) PHY |
|
- description: USB2/HS PHY |
|
|
|
vusb33-supply: |
|
description: Regulator of USB AVDD3.3v |
|
|
|
vbus-supply: |
|
description: Regulator of USB VBUS5v |
|
|
|
usb3-lpm-capable: true |
|
|
|
usb2-lpm-disable: true |
|
|
|
imod-interval-ns: |
|
description: |
|
Interrupt moderation interval value, it is 8 times as much as that |
|
defined in the xHCI spec on MTK's controller. |
|
default: 5000 |
|
|
|
# the following properties are only used for case 1 |
|
wakeup-source: |
|
description: enable USB remote wakeup, see power/wakeup-source.txt |
|
type: boolean |
|
|
|
mediatek,syscon-wakeup: |
|
$ref: /schemas/types.yaml#/definitions/phandle-array |
|
maxItems: 1 |
|
description: |
|
A phandle to syscon used to access the register of the USB wakeup glue |
|
layer between xHCI and SPM, 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 base address of the glue |
|
layer in syscon |
|
- description: | |
|
The third cell represents the hardware version of the glue layer, |
|
1 - used by mt8173 etc, revision 1 without following IPM rule; |
|
2 - used by mt2712 etc, revision 2 following IPM rule; |
|
101 - used by mt8183, specific 1.01; |
|
102 - used by mt8192, specific 1.02; |
|
enum: [1, 2, 101, 102] |
|
|
|
mediatek,u3p-dis-msk: |
|
$ref: /schemas/types.yaml#/definitions/uint32 |
|
description: The mask to disable u3ports, bit0 for u3port0, |
|
bit1 for u3port1, ... etc |
|
|
|
mediatek,u2p-dis-msk: |
|
$ref: /schemas/types.yaml#/definitions/uint32 |
|
description: The mask to disable u2ports, bit0 for u2port0, |
|
bit1 for u2port1, ... etc |
|
|
|
"#address-cells": |
|
const: 1 |
|
|
|
"#size-cells": |
|
const: 0 |
|
|
|
patternProperties: |
|
"@[0-9a-f]{1}$": |
|
type: object |
|
description: The hard wired USB devices. |
|
|
|
dependencies: |
|
wakeup-source: [ 'mediatek,syscon-wakeup' ] |
|
|
|
required: |
|
- compatible |
|
- reg |
|
- reg-names |
|
- interrupts |
|
- clocks |
|
- clock-names |
|
|
|
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> |
|
#include <dt-bindings/power/mt8173-power.h> |
|
|
|
usb@11270000 { |
|
compatible = "mediatek,mt8173-xhci", "mediatek,mtk-xhci"; |
|
reg = <0x11270000 0x1000>, <0x11280700 0x0100>; |
|
reg-names = "mac", "ippc"; |
|
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>; |
|
power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>; |
|
clocks = <&topckgen CLK_TOP_USB30_SEL>, <&clk26m>; |
|
clock-names = "sys_ck", "ref_ck"; |
|
phys = <&u3port0 PHY_TYPE_USB3>, <&u2port1 PHY_TYPE_USB2>; |
|
vusb33-supply = <&mt6397_vusb_reg>; |
|
vbus-supply = <&usb_p1_vbus>; |
|
imod-interval-ns = <10000>; |
|
mediatek,syscon-wakeup = <&pericfg 0x400 1>; |
|
wakeup-source; |
|
usb3-lpm-capable; |
|
}; |
|
...
|
|
|