summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/mmc/mtk-sd.txt
blob: 8a532f4453f26a798487b7da906489790288b54c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
* MTK MMC controller

The MTK  MSDC can act as a MMC controller
to support MMC, SD, and SDIO types of memory cards.

This file documents differences between the core properties in mmc.txt
and the properties used by the msdc driver.

Required properties:
- compatible: value should be either of the following.
	"mediatek,mt8135-mmc": for mmc host ip compatible with mt8135
	"mediatek,mt8173-mmc": for mmc host ip compatible with mt8173
	"mediatek,mt8183-mmc": for mmc host ip compatible with mt8183
	"mediatek,mt8516-mmc": for mmc host ip compatible with mt8516
	"mediatek,mt2701-mmc": for mmc host ip compatible with mt2701
	"mediatek,mt2712-mmc": for mmc host ip compatible with mt2712
	"mediatek,mt7622-mmc": for MT7622 SoC
	"mediatek,mt7623-mmc", "mediatek,mt2701-mmc": for MT7623 SoC
	"mediatek,mt7620-mmc", for MT7621 SoC (and others)

- reg: physical base address of the controller and length
- interrupts: Should contain MSDC interrupt number
- clocks: Should contain phandle for the clock feeding the MMC controller
- clock-names: Should contain the following:
	"source" - source clock (required)
	"hclk" - HCLK which used for host (required)
	"source_cg" - independent source clock gate (required for MT2712)
	"bus_clk" - bus clock used for internal register access (required for MT2712 MSDC0/3)
- pinctrl-names: should be "default", "state_uhs"
- pinctrl-0: should contain default/high speed pin ctrl
- pinctrl-1: should contain uhs mode pin ctrl
- vmmc-supply: power to the Core
- vqmmc-supply: power to the IO

Optional properties:
- assigned-clocks: PLL of the source clock
- assigned-clock-parents: parent of source clock, used for HS400 mode to get 400Mhz source clock
- hs400-ds-delay: HS400 DS delay setting
- mediatek,hs200-cmd-int-delay: HS200 command internal delay setting.
				This field has total 32 stages.
				The value is an integer from 0 to 31.
- mediatek,hs400-cmd-int-delay: HS400 command internal delay setting
				This field has total 32 stages.
				The value is an integer from 0 to 31.
- mediatek,hs400-cmd-resp-sel-rising:  HS400 command response sample selection
				       If present,HS400 command responses are sampled on rising edges.
				       If not present,HS400 command responses are sampled on falling edges.
- mediatek,latch-ck: Some SoCs do not support enhance_rx, need set correct latch-ck to avoid data crc
		     error caused by stop clock(fifo full)
		     Valid range = [0:0x7]. if not present, default value is 0.
		     applied to compatible "mediatek,mt2701-mmc".

Examples:
mmc0: mmc@11230000 {
	compatible = "mediatek,mt8173-mmc", "mediatek,mt8135-mmc";
	reg = <0 0x11230000 0 0x108>;
	interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_LOW>;
	vmmc-supply = <&mt6397_vemc_3v3_reg>;
	vqmmc-supply = <&mt6397_vio18_reg>;
	clocks = <&pericfg CLK_PERI_MSDC30_0>,
	         <&topckgen CLK_TOP_MSDC50_0_H_SEL>;
	clock-names = "source", "hclk";
	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc0_pins_default>;
	pinctrl-1 = <&mmc0_pins_uhs>;
	assigned-clocks = <&topckgen CLK_TOP_MSDC50_0_SEL>;
	assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>;
	hs400-ds-delay = <0x14015>;
	mediatek,hs200-cmd-int-delay = <26>;
	mediatek,hs400-cmd-int-delay = <14>;
	mediatek,hs400-cmd-resp-sel-rising;
};