1* Synopsis Designware Mobile Storage Host Controller
   3The Synopsis designware mobile storage host controller is used to interface
   4a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
   5differences between the core mmc properties described by mmc.txt and the
   6properties used by the Synopsis Designware Mobile Storage Host Controller.
   8Required Properties:
  10* compatible: should be
  11        - snps,dw-mshc: for controllers compliant with synopsis dw-mshc.
  12* #address-cells: should be 1.
  13* #size-cells: should be 0.
  15# Slots: The slot specific information are contained within child-nodes with
  16  each child-node representing a supported slot. There should be atleast one
  17  child node representing a card slot. The name of the child node representing
  18  the slot is recommended to be slot@n where n is the unique number of the slot
  19  connnected to the controller. The following are optional properties which
  20  can be included in the slot child node.
  22        * reg: specifies the physical slot number. The valid values of this
  23          property is 0 to (num-slots -1), where num-slots is the value
  24          specified by the num-slots property.
  26        * bus-width: as documented in mmc core bindings.
  28        * wp-gpios: specifies the write protect gpio line. The format of the
  29          gpio specifier depends on the gpio controller. If a GPIO is not used
  30          for write-protect, this property is optional.
  32        * disable-wp: If the wp-gpios property isn't present then (by default)
  33          we'd assume that the write protect is hooked up directly to the
  34          controller's special purpose write protect line (accessible via
  35          the WRTPRT register).  However, it's possible that we simply don't
  36          want write protect.  In that case specify 'disable-wp'.
  37          NOTE: This property is not required for slots known to always
  38          connect to eMMC or SDIO cards.
  40Optional properties:
  42* clocks: from common clock binding: handle to biu and ciu clocks for the
  43  bus interface unit clock and the card interface unit clock.
  45* clock-names: from common clock binding: Shall be "biu" and "ciu".
  46  If the biu clock is missing we'll simply skip enabling it.  If the
  47  ciu clock is missing we'll just assume that the clock is running at
  48  clock-frequency.  It is an error to omit both the ciu clock and the
  49  clock-frequency.
  51* clock-frequency: should be the frequency (in Hz) of the ciu clock.  If this
  52  is specified and the ciu clock is specified then we'll try to set the ciu
  53  clock to this at probe time.
  55* num-slots: specifies the number of slots supported by the controller.
  56  The number of physical slots actually used could be equal or less than the
  57  value specified by num-slots. If this property is not specified, the value
  58  of num-slot property is assumed to be 1.
  60* fifo-depth: The maximum size of the tx/rx fifo's. If this property is not
  61  specified, the default value of the fifo size is determined from the
  62  controller registers.
  64* card-detect-delay: Delay in milli-seconds before detecting card after card
  65  insert event. The default value is 0.
  67* supports-highspeed: Enables support for high speed cards (up to 50MHz)
  69* broken-cd: as documented in mmc core bindings.
  71* vmmc-supply: The phandle to the regulator to use for vmmc.  If this is
  72  specified we'll defer probe until we can find this regulator.
  76- All the MSHC controller nodes should be represented in the aliases node using
  77  the following format 'mshc{n}' where n is a unique number for the alias.
  81The MSHC controller node can be split into two portions, SoC specific and
  82board specific portions as listed below.
  84        dwmmc0@12200000 {
  85                compatible = "snps,dw-mshc";
  86                clocks = <&clock 351>, <&clock 132>;
  87                clock-names = "biu", "ciu";
  88                reg = <0x12200000 0x1000>;
  89                interrupts = <0 75 0>;
  90                #address-cells = <1>;
  91                #size-cells = <0>;
  92        };
  94        dwmmc0@12200000 {
  95                clock-frequency = <400000000>;
  96                num-slots = <1>;
  97                supports-highspeed;
  98                broken-cd;
  99                fifo-depth = <0x80>;
 100                card-detect-delay = <200>;
 101                vmmc-supply = <&buck8>;
 103                slot@0 {
 104                        reg = <0>;
 105                        bus-width = <8>;
 106                };
 107        };