18c2ecf20Sopenharmony_ci* Samsung Exynos specific extensions to the Synopsys Designware Mobile
28c2ecf20Sopenharmony_ci  Storage Host Controller
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciThe Synopsys designware mobile storage host controller is used to interface
58c2ecf20Sopenharmony_cia SoC with storage medium such as eMMC or SD/MMC cards. This file documents
68c2ecf20Sopenharmony_cidifferences between the core Synopsys dw mshc controller properties described
78c2ecf20Sopenharmony_ciby synopsys-dw-mshc.txt and the properties used by the Samsung Exynos specific
88c2ecf20Sopenharmony_ciextensions to the Synopsys Designware Mobile Storage Host Controller.
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciRequired Properties:
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci* compatible: should be
138c2ecf20Sopenharmony_ci	- "samsung,exynos4210-dw-mshc": for controllers with Samsung Exynos4210
148c2ecf20Sopenharmony_ci	  specific extensions.
158c2ecf20Sopenharmony_ci	- "samsung,exynos4412-dw-mshc": for controllers with Samsung Exynos4412
168c2ecf20Sopenharmony_ci	  specific extensions.
178c2ecf20Sopenharmony_ci	- "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250
188c2ecf20Sopenharmony_ci	  specific extensions.
198c2ecf20Sopenharmony_ci	- "samsung,exynos5420-dw-mshc": for controllers with Samsung Exynos5420
208c2ecf20Sopenharmony_ci	  specific extensions.
218c2ecf20Sopenharmony_ci	- "samsung,exynos7-dw-mshc": for controllers with Samsung Exynos7
228c2ecf20Sopenharmony_ci	  specific extensions.
238c2ecf20Sopenharmony_ci	- "samsung,exynos7-dw-mshc-smu": for controllers with Samsung Exynos7
248c2ecf20Sopenharmony_ci	  specific extensions having an SMU.
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci* samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface
278c2ecf20Sopenharmony_ci  unit (ciu) clock. This property is applicable only for Exynos5 SoC's and
288c2ecf20Sopenharmony_ci  ignored for Exynos4 SoC's. The valid range of divider value is 0 to 7.
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci* samsung,dw-mshc-sdr-timing: Specifies the value of CIU clock phase shift value
318c2ecf20Sopenharmony_ci  in transmit mode and CIU clock phase shift value in receive mode for single
328c2ecf20Sopenharmony_ci  data rate mode operation. Refer notes below for the order of the cells and the
338c2ecf20Sopenharmony_ci  valid values.
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci* samsung,dw-mshc-ddr-timing: Specifies the value of CUI clock phase shift value
368c2ecf20Sopenharmony_ci  in transmit mode and CIU clock phase shift value in receive mode for double
378c2ecf20Sopenharmony_ci  data rate mode operation. Refer notes below for the order of the cells and the
388c2ecf20Sopenharmony_ci  valid values.
398c2ecf20Sopenharmony_ci* samsung,dw-mshc-hs400-timing: Specifies the value of CIU TX and RX clock phase
408c2ecf20Sopenharmony_ci  shift value for hs400 mode operation.
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  Notes for the sdr-timing and ddr-timing values:
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci    The order of the cells should be
458c2ecf20Sopenharmony_ci      - First Cell: CIU clock phase shift value for tx mode.
468c2ecf20Sopenharmony_ci      - Second Cell: CIU clock phase shift value for rx mode.
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci    Valid values for SDR and DDR CIU clock timing for Exynos5250:
498c2ecf20Sopenharmony_ci      - valid value for tx phase shift and rx phase shift is 0 to 7.
508c2ecf20Sopenharmony_ci      - when CIU clock divider value is set to 3, all possible 8 phase shift
518c2ecf20Sopenharmony_ci        values can be used.
528c2ecf20Sopenharmony_ci      - if CIU clock divider value is 0 (that is divide by 1), both tx and rx
538c2ecf20Sopenharmony_ci        phase shift clocks should be 0.
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci* samsung,read-strobe-delay: RCLK (Data strobe) delay to control HS400 mode
568c2ecf20Sopenharmony_ci  (Latency value for delay line in Read path)
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciRequired properties for a slot (Deprecated - Recommend to use one slot per host):
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci* gpios: specifies a list of gpios used for command, clock and data bus. The
618c2ecf20Sopenharmony_ci  first gpio is the command line and the second gpio is the clock line. The
628c2ecf20Sopenharmony_ci  rest of the gpios (depending on the bus-width property) are the data lines in
638c2ecf20Sopenharmony_ci  no particular order. The format of the gpio specifier depends on the gpio
648c2ecf20Sopenharmony_ci  controller.
658c2ecf20Sopenharmony_ci(Deprecated - Refer to Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt)
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ciExample:
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci  The MSHC controller node can be split into two portions, SoC specific and
708c2ecf20Sopenharmony_ci  board specific portions as listed below.
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci	dwmmc0@12200000 {
738c2ecf20Sopenharmony_ci		compatible = "samsung,exynos5250-dw-mshc";
748c2ecf20Sopenharmony_ci		reg = <0x12200000 0x1000>;
758c2ecf20Sopenharmony_ci		interrupts = <0 75 0>;
768c2ecf20Sopenharmony_ci		#address-cells = <1>;
778c2ecf20Sopenharmony_ci		#size-cells = <0>;
788c2ecf20Sopenharmony_ci	};
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci	dwmmc0@12200000 {
818c2ecf20Sopenharmony_ci		cap-mmc-highspeed;
828c2ecf20Sopenharmony_ci		cap-sd-highspeed;
838c2ecf20Sopenharmony_ci		broken-cd;
848c2ecf20Sopenharmony_ci		fifo-depth = <0x80>;
858c2ecf20Sopenharmony_ci		card-detect-delay = <200>;
868c2ecf20Sopenharmony_ci		samsung,dw-mshc-ciu-div = <3>;
878c2ecf20Sopenharmony_ci		samsung,dw-mshc-sdr-timing = <2 3>;
888c2ecf20Sopenharmony_ci		samsung,dw-mshc-ddr-timing = <1 2>;
898c2ecf20Sopenharmony_ci		samsung,dw-mshc-hs400-timing = <0 2>;
908c2ecf20Sopenharmony_ci		samsung,read-strobe-delay = <90>;
918c2ecf20Sopenharmony_ci		bus-width = <8>;
928c2ecf20Sopenharmony_ci	};
93