msm-ehci-hsic.txt 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. MSM HSIC EHCI controller
  2. Required properties :
  3. - compatible : should be "qcom,hsic-host"
  4. - regs : offset and length of the register set in the memory map
  5. - interrupts: IRQ lines used by this controller
  6. - interrupt-names : Required interrupt resource entries are:
  7. "core_irq" : Interrupt for HSIC core
  8. - <supply-name>-supply: handle to the regulator device tree node
  9. Required "supply-name" is either "hsic_vdd_dig" or "HSIC_VDDCX" and
  10. optionally - "HSIC_GDSC".
  11. Optional properties :
  12. - interrupt-parent - This must provide reference to the current
  13. device node.
  14. - #address-cells - Should provide a value of 0.
  15. - interrupts - Should be <0 1 2> and it is an index to the
  16. interrupt-map.
  17. - #interrupt-cells - should provide a value of 1.
  18. - #interrupt-mask - should provide a value of 0xffffffff.
  19. - interrupt-map - Must create mapping for the number of interrupts
  20. that are defined in above interrupts property.
  21. For HSIC device node, it should define 3 mappings for
  22. core_irq, async_irq and wakeup in the format
  23. mentioned in below example node of HSIC.
  24. - interrupt-names : Optional interrupt resource entries are:
  25. "async_irq" : Interrupt from HSIC for asynchronous events in HSIC LPM.
  26. "wakeup" : Wakeup interrupt from HSIC during suspend (or XO shutdown).
  27. - hsic,<gpio-name>-gpio : handle to the GPIO node, see "gpios property"
  28. in Documentation/devicetree/bindings/gpio/gpio.txt.
  29. Optional "gpio-name" can be "strobe", "data" and "resume".
  30. - hsic,resume-gpio : if present then periperal connected to hsic controller
  31. cannot wakeup from XO shutdown using in-band hsic resume. Use resume
  32. gpio to wakeup peripheral
  33. - hsic,ignore-cal-pad-config : If present then HSIC CAL PAD configuration
  34. using TLMM is not performed.
  35. - hsic,strobe-pad-offset : Offset of TLMM register for configuring HSIC
  36. STROBE GPIO PAD.
  37. - hsic,data-pad-offset : Offset of TLMM register for configuring HSIC
  38. DATA GPIO PAD.
  39. - qcom,phy-sof-workaround : If present then HSIC PHY has h/w BUGs related to
  40. SOFs. All the relevant software workarounds are required for the same during
  41. suspend, reset and resume.
  42. - qcom,phy-susp-sof-workaround : If present then HSIC PHY has h/w BUG related to
  43. SOFs while entering SUSPEND. Relevant software workaround is required for the same
  44. during SUSPEND only.
  45. - qcom,pool-64-bit-align: If present then the pool's memory will be aligned
  46. to 64 bits
  47. - qcom,enable_hbm: if present host bus manager is enabled.
  48. - qcom,disable-park-mode: if present park mode is enabled. Park mode enables executing
  49. up to 3 usb packets from each QH.
  50. - hsic,consider-ipa-handshake: If present then hsic low power mode is
  51. depend on suitable handshake with the IPA peer.
  52. - qcom,ahb-async-bridge-bypass: if present AHB ASYNC bridge will be bypassed such that
  53. the bridge on the slave AHB is always used.
  54. - hsic,log2-itc: itc (interrupt threshold control) defines rate at which usb
  55. controller will issue interrupts. It represents max interrupt interval
  56. measured in micro frames. In high speed USB, each micro frame is 125us.
  57. Valid values are from zero to six. Zero is default. Higher ITC value will
  58. result in higher interrupt latency and can impact overall data latency.
  59. log2-itc - Max interrupt threshold
  60. -------- -----------------------
  61. 0 (2^0 = 1) 1 micro frame interrupt threshold aka 125us interrupt threshold
  62. 1 (2^1 = 2) 2 micro frame interrupt threshold aka 250us interrupt threshold
  63. 2 (2^2 = 4) 4 micro frame interrupt threshold aka 500us interrupt threshold
  64. 3 (2^3 = 8) 8 micro frame interrupt threshold aka 1ms interrupt threshold
  65. 4 (2^4 = 16) 16 micro frame interrupt threshold aka 2ms interrupt threshold
  66. 5 (2^5 = 32) 32 micro frame interrupt threshold aka 4ms interrupt threshold
  67. 6 (2^6 = 64) 64 micro frame interrupt threshold aka 8ms interrupt threshold
  68. - hsic,disable-cerr: CERR is 2bit down error counter that keeps track of number
  69. of consecutive errors detected on single usb transaction. When set to non
  70. zero value, hw decrements the count and updates qTD when transaction fails.
  71. If counter reaches zero, hw marks the qTD inactive and triggers the interrupt.
  72. When CERR is programmed to zero, hw ignores transaction failures. ECHI stack
  73. programs the CERR to 3 by default. When this flag is true, CERR is set to
  74. zero and transaction errors are ignored.
  75. - hsic,reset-delay: If present then add the given delay time (ms) between
  76. the reset and enumeration. Since some devices might take more than 100ms
  77. for initialization when receiving the bus reset, add delay to avoid the
  78. problem that enmueration is before device initialization done.
  79. - hsic,vdd-voltage-level: This property must be a list of three integer
  80. values (no, min, max) where each value represents either a voltage in
  81. microvolts or a value corresponding to voltage corner
  82. - Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
  83. below optional properties:
  84. - qcom,msm_bus,name
  85. - qcom,msm_bus,num_cases
  86. - qcom,msm_bus,active_only
  87. - qcom,msm_bus,num_paths
  88. - qcom,msm_bus,vectors
  89. Example MSM HSIC EHCI controller device node :
  90. hsic_host: hsic@f9a15000 {
  91. compatible = "qcom,hsic-host";
  92. reg = <0xf9a15000 0x400>;
  93. #address-cells = <0>;
  94. interrupt-parent = <&hsic_host>;
  95. interrupts = <0 1 2>;
  96. #interrupt-cells = <1>;
  97. interrupt-map-mask = <0xffffffff>;
  98. interrupt-map = <0 &intc 0 136 0
  99. 1 &intc 0 148 0
  100. 2 &msmgpio 144 0x8>;
  101. interrupt-names = "core_irq", "async_irq", "wakeup";
  102. hsic_vdd_dig-supply = <&pm8841_s2_corner>;
  103. HSIC_GDSC-supply = <&gdsc_usb_hsic>;
  104. hsic,strobe-gpio = <&msmgpio 144 0x00>;
  105. hsic,data-gpio = <&msmgpio 145 0x00>;
  106. hsic,resume-gpio = <&msmgpio 80 0x00>;
  107. hsic,ignore-cal-pad-config;
  108. hsic,strobe-pad-offset = <0x2050>;
  109. hsic,data-pad-offset = <0x2054>;
  110. hsic,consider-ipa-handshake;
  111. hsic,vdd-voltage-level = <1 5 7>;
  112. qcom,msm-bus,name = "hsic";
  113. qcom,msm-bus,num-cases = <2>;
  114. qcom,msm-bus,num-paths = <1>;
  115. qcom,msm-bus,vectors-KBps =
  116. <85 512 0 0>,
  117. <85 512 40000 160000>;
  118. };
  119. SMSC HSIC HUB
  120. Required properties :
  121. - compatible : should be "qcom,hsic-smsc-hub"
  122. - smsc,model-id : should be <3502>/<3503>/<4604> depending on hub model. It
  123. will be 0 for standalone HSIC controller configuration.
  124. - smsc,reset-gpio: this output gpio is used to assert/de-assert the hub reset
  125. - Sub node for "MSM HSIC EHCI controller".
  126. Sub node has the required properties mentioned above.
  127. Optional properties :
  128. - smsc,int-gpio: this input gpio indicate HUB suspend status and signal remote
  129. wakeup interrupt
  130. - smsc,refclk-gpio: this gpio is used to supply the reference clock
  131. - smsc,xo-clk-gio: this output gpio is used to control the external XO clock
  132. which is supplied to the hub as a reference clock
  133. - hub-vbus-supply: this regulator is used to supply the power to
  134. downstream ports
  135. - hub-int-supply: this regulator is used to bias the interrupt gpio
  136. - ext-hub-vddio-supply: this regulator is used to supply the power to one of
  137. the hub's VDD.
  138. Example SMSC HSIC HUB :
  139. hsic_hub {
  140. compatible = "qcom,hsic-smsc-hub";
  141. smsc,model-id = <4604>;
  142. ranges;
  143. smsc,reset-gpio = <&pm8941_gpios 8 0x00>;
  144. smsc,refclk-gpio = <&pm8941_gpios 16 0x00>;
  145. smsc,int-gpio = <&msmgpio 50 0x00>;
  146. hub-int-supply = <&pm8941_l10>;
  147. hub-vbus-supply = <&pm8941_mvs1>;
  148. hsic@f9a00000 {
  149. compatible = "qcom,hsic-host";
  150. reg = <0xf9a00000 0x400>;
  151. interrupts = <0 136 0>;
  152. interrupt-names = "core_irq";
  153. HSIC_VDDCX-supply = <&pm8841_s2>;
  154. HSIC_GDSC-supply = <&gdsc_usb_hsic>;
  155. hsic,strobe-gpio = <&msmgpio 144 0x00>;
  156. hsic,data-gpio = <&msmgpio 145 0x00>;
  157. hsic,ignore-cal-pad-config;
  158. hsic,strobe-pad-offset = <0x2050>;
  159. hsic,data-pad-offset = <0x2054>;
  160. };
  161. };