| MSM SoC HSUSB controllers |
| |
| OTG: |
| |
| Required properties : |
| - compatible : should be "qcom,hsusb-otg" |
| - regs : offset and length of the register set in the memory map |
| - interrupts: IRQ line |
| - interrupt-names: OTG interrupt name(s) referenced in interrupts above |
| HSUSB OTG expects "core_irq" and optionally "async_irq". |
| - qcom,hsusb-otg-phy-type: PHY type can be one of |
| 1 - Chipidea 45nm PHY |
| 2 - Synopsis 28nm PHY |
| - qcom,hsusb-otg-mode: Operational mode. Can be one of |
| 1 - Peripheral only mode |
| 2 - Host only mode |
| 3 - OTG mode |
| Based on the mode, OTG driver registers platform devices for |
| gadget and host. |
| - qcom,hsusb-otg-control: OTG control (VBUS and ID notifications) |
| can be one of |
| 1 - PHY control |
| 2 - PMIC control |
| 3 - User control (via debugfs) |
| - qcom,hsusb-otg-disable-reset: It present then core is RESET only during |
| init, otherwise core is RESET for every cable disconnect as well |
| |
| Optional properties : |
| - qcom,hsusb-otg-default-mode: The default USB mode after boot-up. |
| Applicable only when OTG is controlled by user. Can be one of |
| 0 - None. Low power mode |
| 1 - Peripheral |
| 2 - Host |
| - qcom,hsusb-otg-phy-init-seq: PHY configuration sequence. val, reg pairs |
| terminate with -1 |
| - qcom,hsusb-otg-power-budget: VBUS power budget in mA |
| 0 will be treated as 500mA |
| - qcom,hsusb-otg-pclk-src-name: The source of pclk |
| - qcom,hsusb-otg-pmic-id-irq: ID, routed to PMIC IRQ number |
| - 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,active_only |
| - qcom,msm_bus,num_paths |
| - qcom,msm_bus,vectors |
| |
| Example HSUSB OTG controller device node : |
| usb@f9690000 { |
| compatible = "qcom,hsusb-otg"; |
| reg = <0xf9690000 0x400>; |
| interrupts = <134>; |
| interrupt-names = "core_irq"; |
| |
| qcom,hsusb-otg-phy-type = <2>; |
| qcom,hsusb-otg-mode = <1>; |
| qcom,hsusb-otg-otg-control = <1>; |
| qcom,hsusb-otg-disable-reset; |
| qcom,hsusb-otg-default-mode = <2>; |
| qcom,hsusb-otg-phy-init-seq = <0x01 0x90 0xffffffff>; |
| qcom,hsusb-otg-power-budget = <500>; |
| qcom,hsusb-otg-pclk-src-name = "dfab_usb_clk"; |
| qcom,hsusb-otg-pmic-id-irq = <47> |
| |
| qcom,msm_bus,name = "usb2"; |
| qcom,msm_bus,num_cases = <2>; |
| qcom,msm_bus,active_only = <0>; |
| qcom,msm_bus,num_paths = <1>; |
| qcom,msm_bus,vectors = |
| <87 512 0 0>, |
| <87 512 60000000 960000000>; |
| }; |
| |
| ANDROID USB: |
| |
| Required properties: |
| - compatible: should be "qcom,android-usb" |
| |
| Optional properties : |
| - reg : offset and length of memory region that is used by driver to |
| update USB PID and serial numbers used by bootloader in DLOAD mode. |
| |
| Example Android USB device node : |
| android_usb@fc42b0c8 { |
| compatible = "qcom,android-usb"; |
| reg = <0xfc42b0c8 0xc8>; |
| }; |
| |
| |
| BAM: |
| |
| Required properties: |
| - compatible: should be "qcom,usb-bam-msm" |
| - reg : pairs of physical base addresses and region sizes |
| of all the memory mapped BAM devices present |
| - reg-names : Register region name(s) referenced in reg above |
| SSUSB BAM expects "ssusb" and "hsusb" for HSSUB BAM. |
| Specify "qscratch_ram1_reg" to provide QSCRATCH's RAM1 |
| register to control USB3 private memory for uses as BAM FIFOs. |
| - interrupts: IRQ lines for BAM devices |
| - interrupt-names: BAM interrupt name(s) referenced in interrupts above |
| SSUSB BAM expects "ssusb" and "hsusb" for HSSUB BAM |
| - qcom,usb-active-bam: active BAM type. Can be one of |
| 0 - SSUSB_BAM |
| 1 - HSUSB_BAM |
| 2 - HSIC_BAM |
| - qcom,usb-total-bam-num: total number of BAMs that are supported |
| - qcom,usb-bam-num-pipes: max number of pipes that can be used |
| - qcom,usb-base-address: physical base address of the BAM |
| |
| A number of USB BAM pipe parameters are represented as sub-nodes: |
| |
| Subnode Required: |
| - label: a string describing the pipe's direction and BAM instance under use |
| - qcom,usb-bam-type: BAM type. Can be one of |
| 0 - SSUSB_BAM |
| 1 - HSUSB_BAM |
| 2 - HSIC_BAM |
| - qcom,usb-bam-mem-type: Type of memory used by this PIPE. Can be one of |
| 0 - Uses SPS's dedicated pipe memory |
| 1 - USB's private memory residing @ 'qcom,usb-base-address' |
| 2 - System RAM allocated by driver |
| - qcom,src-bam-physical-address: source BAM physical address |
| - qcom,src-bam-pipe-index: source BAM pipe index |
| - qcom,dst-bam-physical-address: destination BAM physical address |
| - qcom,dst-bam-pipe-index: destination BAM pipe index |
| - qcom,data-fifo-offset: data fifo offset address |
| - qcom,data-fifo-size: data fifo size |
| - qcom,descriptor-fifo-offset: descriptor fifo offset address |
| - qcom,descriptor-fifo-size: descriptor fifo size |
| |
| Optional properties : |
| - qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core |
| while performing PIPE RESET |
| |
| Example USB BAM controller device node: |
| |
| qcom,usbbam@f9304000 { |
| compatible = "qcom,usb-bam-msm"; |
| reg = <0xf9304000 0x5000>, |
| <0xf9a44000 0x11000>, |
| <0xf92f880c 0x4>; |
| reg-names = "ssusb", "hsusb", "qscratch_ram1_reg"; |
| interrupts = <0 132 0 0 135 0>; |
| interrupt-names = "ssusb", "hsusb"; |
| qcom,usb-active-bam = <0>; |
| qcom,usb-total-bam-num = <2>; |
| qcom,usb-bam-num-pipes = <16>; |
| qcom,usb-base-address = <0xf9200000>; |
| qcom,ignore-core-reset-ack; |
| |
| qcom,pipe1 { |
| label = "usb-to-peri-qdss-dwc3"; |
| qcom,usb-bam-type = <0>; |
| qcom,usb-bam-mem-type = <1>; |
| qcom,src-bam-physical-address = <0>; |
| qcom,src-bam-pipe-index = <0>; |
| qcom,dst-bam-physical-address = <0>; |
| qcom,dst-bam-pipe-index = <0>; |
| qcom,data-fifo-offset = <0>; |
| qcom,data-fifo-size = <0>; |
| qcom,descriptor-fifo-offset = <0>; |
| qcom,descriptor-fifo-size = <0>; |
| }; |
| |
| qcom,pipe2 { |
| label = "peri-to-usb-qdss-dwc3"; |
| qcom,usb-bam-type = <0>; |
| qcom,usb-bam-mem-type = <1>; |
| qcom,src-bam-physical-address = <0xfc37C000>; |
| qcom,src-bam-pipe-index = <0>; |
| qcom,dst-bam-physical-address = <0xf9304000>; |
| qcom,dst-bam-pipe-index = <2>; |
| qcom,data-fifo-offset = <0xf0000>; |
| qcom,data-fifo-size = <0x4000>; |
| qcom,descriptor-fifo-offset = <0xf4000>; |
| qcom,descriptor-fifo-size = <0x1400>; |
| }; |
| |
| qcom,pipe3 { |
| label = "usb-to-peri-qdss-hsusb"; |
| qcom,usb-bam-type = <1>; |
| qcom,usb-bam-mem-type = <1>; |
| qcom,src-bam-physical-address = <0>; |
| qcom,src-bam-pipe-index = <0>; |
| qcom,dst-bam-physical-address = <0>; |
| qcom,dst-bam-pipe-index = <0>; |
| qcom,data-fifo-offset = <0>; |
| qcom,data-fifo-size = <0>; |
| qcom,descriptor-fifo-offset = <0>; |
| qcom,descriptor-fifo-size = <0>; |
| }; |
| |
| qcom,pipe4 { |
| label = "peri-to-usb-qdss-hsusb"; |
| qcom,usb-bam-type = <1>; |
| qcom,usb-bam-mem-type = <1>; |
| qcom,src-bam-physical-address = <0xfc37c000>; |
| qcom,src-bam-pipe-index = <0>; |
| qcom,dst-bam-physical-address = <0xf9a44000>; |
| qcom,dst-bam-pipe-index = <2>; |
| qcom,data-fifo-offset = <0xf4000>; |
| qcom,data-fifo-size = <0x1000>; |
| qcom,descriptor-fifo-offset = <0xf5000>; |
| qcom,descriptor-fifo-size = <0x400>; |
| }; |
| }; |