123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- 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" which is IRQ line from CORE and
- optional ones are described in next section.
- - 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)
- - <supply-name>-supply: handle to the regulator device tree node
- Required "supply-name" is "HSUSB_VDDCX" (when voting for VDDCX) or
- "hsusb_vdd_dig" (when voting for VDDCX Corner voltage),
- "HSUSB_1p8-supply" and "HSUSB_3p3-supply".
- Optional properties :
- - interrupt-names : Optional interrupt resource entries are:
- "async_irq" : Interrupt from HSPHY for asynchronous wakeup events in LPM.
- "pmic_id_irq" : Interrupt from PMIC for external ID pin notification.
- - qcom,hsusb-otg-disable-reset: If present then core is RESET only during
- init, otherwise core is RESET for every cable disconnect as well
- - qcom,hsusb-otg-pnoc-errata-fix: If present then workaround for PNOC
- performance issue is applied which requires changing the mem-type
- attribute via VMIDMT.
- - 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
- - Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
- below optional properties:
- - qcom,msm_bus,name
- - qcom,msm_bus,num_cases - There are three valid cases for this: NONE, MAX
- and MIN bandwidth votes. Minimum two cases must be defined for
- both NONE and MAX votes. If MIN vote is different from NONE VOTE
- then specify third case for MIN VOTE.
- - qcom,msm_bus,active_only
- - qcom,msm_bus,num_paths
- - qcom,msm_bus,vectors
- - qcom,hsusb-otg-lpm-on-dev-suspend: If present then USB enter to
- low power mode upon receiving bus suspend.
- - qcom,hsusb-otg-clk-always-on-workaround: If present then USB core clocks
- remain active upon receiving bus suspend and USB cable is connected.
- Used for allowing USB to respond for remote wakup.
- - qcom,hsusb-otg-delay-lpm: If present then USB core will wait one second
- after disconnect before entering low power mode.
- - qcom,hsusb-otg-delay-lpm-hndshk-on-disconnect: If present then USB core will
- wait for the handshake with the IPA to complete before entering low
- power mode.
- - <supply-name>-supply: handle to the regulator device tree node.
- Optional "supply-name" is "vbus_otg" to supply vbus in host mode.
- - 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.
- - qcom,dp-manual-pullup: If present, vbus is not routed to USB controller/phy
- and controller driver therefore enables pull-up explicitly before
- starting controller using usbcmd run/stop bit.
- - qcom,usb2-enable-hsphy2: If present then USB2 controller is connected to 2nd
- HSPHY.
- - qcom,hsusb-log2-itc: value of 2^(log2_itc-1) will be used as the
- interrupt threshold (ITC), when log2_itc is between 1 to 7.
- - qcom,hsusb-l1-supported: If present, the device supports l1 (Link power
- management).
- - qcom,no-selective-suspend: If present selective suspend is disabled on hub ports.
- - qcom,hsusb-otg-mpm-dpsehv-int: If present, indicates mpm interrupt to be configured
- for detection of dp line transition during VDD minimization.
- - qcom,hsusb-otg-mpm-dmsehv-int: If present, indicates mpm interrupt to be configured
- for detection of dm line transition during VDD minimization.
- - qcom,ahb-async-bridge-bypass: If present, indicates that enable AHB2AHB By Pass
- mode with device controller for better throughput. With this mode, USB Core
- runs using PNOC clock and synchronous to it. Hence it is must to have proper
- "qcom,msm_bus,vectors" to have high bus frequency. User shouldn't try to
- enable this feature without proper bus voting.
- -qcom,disable-retention-with-vdd-min: If present dont allow phy retention but allow
- vdd min.
- - qcom,usbin-vadc: Corresponding vadc device's phandle to read usbin voltage using VADC.
- This will be used to get value of usb power supply's VOLTAGE_NOW property.
- 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-pnoc-errata-fix;
- 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-lpm-on-dev-suspend;
- qcom,hsusb-otg-clk-always-on-workaround;
- hsusb_vdd_dig-supply = <&pm8226_s1_corner>;
- HSUSB_1p8-supply = <&pm8226_l10>;
- HSUSB_3p3-supply = <&pm8226_l20>;
- qcom,vdd-voltage-level = <1 5 7>;
- qcom,dp-manual-pullup;
- qcom,disable-retention-with-vdd-min;
- qcom,hsusb-otg-dpsehv-int = <49>;
- qcom,hsusb-otg-dmsehv-int = <58>;
- qcom,usbin-vadc = <&pm8226_vadc>;
- 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>;
- };
- MSM HSUSB EHCI controller
- Required properties :
- - compatible : should be "qcom,ehci-host"
- - 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:
- HSUSB EHCI expects "core_irq" and optionally "async_irq".
- - <supply-name>-supply: handle to the regulator device tree node
- Required "supply-name" is either "hsusb_vdd_dig" or "HSUSB_VDDCX"
- "HSUSB_1p8-supply" "HSUSB_3p3-supply".
- - qcom,usb2-power-budget: maximum vbus power (in mA) that can be provided.
- Optional properties :
- - qcom,usb2-enable-hsphy2: If present, select second PHY for USB operation.
- - qcom,resume-gpio: if present then peripheral connected to usb controller
- cannot wakeup from XO shutdown using in-band usb bus resume. Use resume
- gpio to wakeup peripheral.
- - qcom,vdd-voltage-level: This property must be a list of five integer
- values (no, 0.5vsuspend, 0.75suspend, min, max) where each value respresents
- either a voltage in microvolts or a value corresponding to voltage corner.
- First value represents value to vote when USB is not at all active, second
- value represents value to vote when target is not connected to dock during low
- power mode, third value represents vlaue to vote when target is connected to dock
- and no peripheral connected over dock during low power mode, fourth value represents
- minimum value to vote when USB is operational, fifth item represents maximum value
- to vote for USB is operational.
- - qcom,usb2-enable-uicc: If present, usb2 port will be used for uicc card connection.
- Example MSM HSUSB EHCI controller device node :
- ehci: qcom,ehci-host@f9a55000 {
- compatible = "qcom,ehci-host";
- reg = <0xf9a55000 0x400>;
- interrupts = <0 134 0>, <0 140 0>;
- interrupt-names = "core_irq", "async_irq";
- hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
- HSUSB_1p8-supply = <&pm8941_l6>;
- HSUSB_3p3-supply = <&pm8941_l24>;
- qcom,usb2-enable-hsphy2;
- qcom,usb2-power-budget = <500>;
- qcom,vdd-voltage-level = <1 2 3 5 7>;
- qcom,usb2-enable-uicc;
- };
- ANDROID USB:
- Required properties:
- - compatible: should be "qcom,android-usb"
- Optional properties :
- - reg : offset and length of memory region that is used by device to
- update USB PID and serial numbers used by bootloader in DLOAD mode.
- - qcom,android-usb-swfi-latency : value to be used by device to vote
- for DMA latency in microsecs.
- - qcom,android-usb-cdrom : if this property is present then device creates
- a new LUN as CD-ROM
- - qcom,android-usb-internal-ums : if this property is present then device
- creates a new LUN as internal usb mass storage.
- - qcom,streaming-func : add list of usb function name. If mention usb function
- is being enable as part of USB composition, streaming mode is enable with
- usb device controller to get better throughput. NOTE: Inverted CRC and
- turnaround timeout is observed on enabling streaming. Hence it is required
- to see these errors and number of erros on enabling this at USB level to make
- final decision to enable this feature or not.
- - qcom,android-usb-uicc-nluns : Number of mass storage LUNs required for
- the UICC card.
- Example Android USB device node :
- android_usb@fc42b0c8 {
- compatible = "qcom,android-usb";
- reg = <0xfc42b0c8 0xc8>;
- qcom,android-usb-swfi-latency = <1>;
- qcom,streaming-func = "rndis","mtp";
- qcom,android-usb-uicc-nluns = <1>;
- };
- 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), in 1-1 correspondence with the
- registers in 'reg'. This list should contain at least as many names
- as the number of unique values given in both 'usb-active-bam' and
- all the subnodes' 'usb-bam-type' properties.
- If SSUSB_BAM is used, "ssusb" should be present.
- If HSUSB_BAM is used, "hsusb" should be present.
- If HSIC_BAM is used, "hsic" should be present.
- If a QSCRATCH RAM1 register is designated for providing USB3
- private memory to use as a BAM FIFO, specify "qscratch_ram1_reg".
- - interrupts: IRQ lines for BAM devices
- - interrupt-names: BAM interrupt name(s), in 1-1 correspondence with
- 'interrupts' above.
- If SSUSB_BAM is used, "ssusb" should be present.
- If HSUSB_BAM is used, "hsusb" should be present.
- If HSIC_BAM is used, "hsic" should be present.
- - qcom,usb-bam-num-pipes: max number of pipes that can be used
- Optional properties:
- - qcom,usb-bam-fifo-baseaddr: base address for bam pipe's data and descriptor
- fifos. This can be on chip memory (ocimem) or usb private memory. This
- property is required if sub-node's mem-type is ocimem or usb private mem.
- A number of USB BAM pipe parameters are represented as sub-nodes:
- Subnode Required:
- - label: a string describing uniquely the usb bam pipe. The string can be
- constracted as follows: <core>-<peer>-<direction>-<pipe num>.
- core options: hsusb, ssusb/dwc3, hsic
- peer options: qdss, ipa, a2
- direction options: in (from peer to usb), out (from usb to peer)
- pipe num options: 0..127
- - 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-bam-fifo-baseaddr'
- 2 - System RAM allocated by driver
- 3 - OCI memory residing @ 'qcom,usb-bam-fifo-baseaddr'
- - qcom,bam-type: BAM type can be one of
- 0 - SSUSB_BAM
- 1 - HSUSB_BAM
- 2 - HSIC_BAM
- - qcom,dir: pipe direction
- 0 - from usb (out)
- 1 - to usb (in)
- - qcom,pipe-num: pipe number
- - qcom,peer-bam: peer BAM can be one of
- 0 - A2_P_BAM
- 1 - QDSS_P_BAM
- 2 - IPA_P_BAM
- - qcom,data-fifo-size: data fifo size
- - qcom,descriptor-fifo-size: descriptor fifo size
- Optional Properties for Subnode:
- - qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
- pipe. This may be required if BAM peripheral is also reset before connect.
- - qcom,dst-bam-physical-address: destination BAM physical address
- - qcom,dst-bam-pipe-index: destination BAM pipe index
- - qcom,src-bam-physical-address: source BAM physical address
- - qcom,src-bam-pipe-index: source BAM pipe index
- - qcom,data-fifo-offset: data fifo offset address
- - qcom,descriptor-fifo-offset: descriptor fifo offset address
- Optional properties :
- - qcom,ignore-core-reset-ack: If present then BAM ignores ACK from USB core
- while performing PIPE RESET
- - qcom,disable-clk-gating: If present then disable BAM clock gating.
- Example USB BAM controller device node:
- qcom,usbbam@f9a44000 {
- compatible = "qcom,usb-bam-msm";
- reg = <0xf9a44000 0x11000>;
- reg-names = "hsusb";
- interrupts = <0 135 0>;
- interrupt-names = "hsusb";
- qcom,usb-bam-num-pipes = <16>;
- qcom,ignore-core-reset-ack;
- qcom,disable-clk-gating;
- qcom,pipe0 {
- label = "hsusb-ipa-out-0";
- qcom,usb-bam-mem-type = <0>;
- qcom,bam-type = <1>;
- qcom,dir = <0>;
- qcom,pipe-num = <0>;
- qcom,peer-bam = <2>;
- qcom,src-bam-physical-address = <0xf9a44000>;
- qcom,src-bam-pipe-index = <1>;
- qcom,data-fifo-offset = <0x2200>;
- qcom,data-fifo-size = <0x1e00>;
- qcom,descriptor-fifo-offset = <0x2100>;
- qcom,descriptor-fifo-size = <0x100>;
- };
- qcom,pipe1 {
- label = "hsusb-ipa-in-0";
- qcom,usb-bam-mem-type = <0>;
- qcom,bam-type = <1>;
- qcom,dir = <1>;
- qcom,pipe-num = <0>;
- qcom,peer-bam = <2>;
- qcom,dst-bam-physical-address = <0xf9a44000>;
- qcom,dst-bam-pipe-index = <0>;
- qcom,data-fifo-offset = <0x300>;
- qcom,data-fifo-size = <0x1e00>;
- qcom,descriptor-fifo-offset = <0>;
- qcom,descriptor-fifo-size = <0x300>;
- };
- };
|