blob: b77e3b61f67e8b900aaa456e914bfaaaf9b684b7 [file] [log] [blame]
MSM HSIC XHCI controller
Required properties :
- compatible : should be "qcom,xhci-msm-hsic"
- reg : offset and length of the register set in the memory map
- interrupts: IRQ lines used by this controller.
- interrupt-names : Required interrupt resource entries are:
"core_irq" : Interrupt for HSIC core
"pwr_event_irq" : Interrupt generated by HSIC controller due to
change in power state.
- <supply-name>-supply: handle to the regulator device tree node
Required "supply-name" are "hsic-vdd-dig" and "hsic-gdsc-supply".
- pinctrl-names : This should be defined if a target uses pinctrl framework.
See "pinctrl" in Documentation/devicetree/bindings/pinctrl/msm-pinctrl.txt.
It should specify the names of the configs that pinctrl can install in driver
Following are the pinctrl configs that can be installed
"hsic_xhci_active" : Active configuration of pins, this should specify active
config defined in pin groups of used gpio's from strobe, data and
host-ready.
"hsic_xhci_sleep" : Disabled configuration of pins, this should specify sleep
config defined in pin groups of used gpio's from strobe, data and
host-ready.
- hsic,<gpio-name>-gpio : handle to the GPIO node, see "gpios property"
in Documentation/devicetree/bindings/gpio/gpio.txt.
If pinctrl is being used we need to only define gpio's which drives signals
using gpiolib api's like host-ready in dt, the node name in such cases should
be msm_gpio as defined in pinctrl-dtsi. For gpio's only installing active and
sleep configs it is not required to specify the gpio in dt file.
Required "gpio-name" are "strobe" and "data".
- qcom,vdd-voltage-level: This property must be a list of three integer
values (no, min, max) where each value represents either a voltage in
microvolts or a value corresponding to voltage corner.
Optional properties :
- interrupt-names : Optional interrupt resource entry is:
"wakeup_irq" : Interrupt generated by out of band remote wakeup gpio.
- qcom,host-ready-gpio: This gpio will be used to indicate hsic host
readiness to attached peripheral
- Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
below optional properties:
- qcom,msm_bus,name
- qcom,msm_bus,num_cases
- qcom,msm_bus,num_paths
- qcom,msm_bus,vectors
- qcom,disable-hw-clk-gating: If present then hw clock gating in controller
is disabled. Internal clock gating is enabled by default in hw.
Example MSM HSIC XHCI controller device node :
xhci_hsic_host: qcom,xhci-msm-hsic@0xf9c00000 {
compatible = "qcom,xhci-msm-hsic";
reg = <0xf9c00000 0xfc000>;
interrupt-parent = <&xhci_hsic_host>;
interrupts = <0 1 2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0xffffffff>;
interrupt-map = <0 &intc 0 32 0
1 &intc 0 29 0
2 &msm_gpio 107 0x8>;
interrupt-names = "core_irq", "pwr_event_irq", "wakeup_irq";
hsic-vdd-dig-supply = <&pma8084_s2_corner>;
hsic-gdsc-supply = <&gdsc_usb_hsic>;
/* If pinctrl is used */
pinctrl-names = "hsic_xhci_active","hsic_xhci_sleep";
pinctrl-0 = <&hsic_act>;
pinctrl-1 = <&hsic_sus>;
qcom,host-ready-gpio = <&msm_gpio 106 0x00>;
/* else (pinctrl is not used) */
hsic,strobe-gpio = <&msmgpio 134 0x00>;
hsic,data-gpio = <&msmgpio 135 0x00>;
qcom,host-ready-gpio = <&msmgpio 106 0x00>;
/* End */
qcom,vdd-voltage-level = <1 5 7>;
qcom,msm-bus,name = "hsic";
qcom,msm-bus,num-cases = <2>;
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps =
<85 512 0 0>,
<85 512 40000 160000>;
};