| Attached MDM Modem Devices |
| |
| External modems are devices that are attached to the msm and controlled by gpios. |
| There is also a data channel between the msm and the external modem that sometimes needs |
| to be reset. |
| |
| Required Properties: |
| - compatible: The bus devices need to be compatible with |
| "qcom,mdm2-modem", "qcom,ext-mdm9x25", "qcom,ext-mdm9x35", "qcom, ext-mdm9x45", |
| "qcom,ext-mdm9x55". |
| |
| Required named gpio properties: |
| - qcom,mdm2ap-errfatal-gpio: gpio for the external modem to indicate to the apps processor |
| of an error fatal condition on the modem. |
| - qcom,ap2mdm-errfatal-gpio: gpio for the apps processor to indicate to the external modem |
| of an error fatal condition on the apps processor. |
| - qcom,mdm2ap-status-gpio: gpio to indicate to the apps processor when there is a watchdog |
| bite on the external modem. |
| - qcom,ap2mdm-status-gpio: gpio for the apps processor to indicate to the modem that an apps |
| processor watchdog bite has occurred. |
| - qcom,ap2mdm-soft-reset-gpio: gpio for the apps processor to use to soft-reset the external |
| modem. If the flags parameter has a value of 0x1 then the gpio is active LOW. |
| |
| Required Interrupts: |
| - "err_fatal_irq": Interrupt generated on the apps processor when the error fatal gpio is pulled |
| high by the external modem. |
| - "status_irq": Interrupt generated on the apps processor when the mdm2ap-status gpio falls low |
| on the external modem. This usually indicates a watchdog bite on the modem. |
| - "plbrdy_irq": Interrupt generated on the aps processor when the mdm2ap-pblrdy gpio is pulled |
| either high or low by the external modem. This is an indication that the modem |
| has rebooted. |
| - "mdm2ap_vddmin_irq": Interrupt generated on the apps processor when the external modem goes |
| into vddmin power state. |
| |
| Optional named gpio properties: |
| - qcom,mdm2ap-pblrdy-gpio: gpio used by some external modems to indicate when the modem has |
| booted into the PBL bootloader. |
| - qcom,ap2mdm-wakeup-gpio: gpio used by the apps processor to wake the external modem |
| out of a low power state. |
| - qcom,ap2mdm-chnl-rdy-gpio: gpio used by the apps processor to inform the external modem |
| that data link is ready. |
| - qcom,mdm2ap-wakeup-gpio: gpio from the external modem to the apps processor to wake it |
| out of a low power state. |
| - qcom,ap2mdm-vddmin-gpio: gpio to indicate to the external modem when the apps processor |
| is about to enter vddmin power state. |
| - qcom,mdm2ap-vddmin-gpio: gpio used by the external modem to inform the apps processor |
| when it is about to enter vddmin power state. |
| - qcom,ap2mdm-kpdpwr-gpio: gpio used to simulate a power button press on the external |
| modem. Some modems use this as part of their initial power-up sequence. |
| If the "flags" parameter has a value of 0x1 then it is active LOW. |
| - qcom,ap2mdm-pmic-pwr-en-gpio: Some modems need this gpio for the apps processor to enable |
| the pmic on the external modem. |
| - qcom,use-usb-port-gpio: some modems use this gpio to switch a port connection from uart to usb. |
| This is used during firmware upgrade of some modems. |
| - qcom,mdm-link-detect-gpio: some modems may support two interfaces. This gpio |
| indicates whether only one or both links can be used. |
| |
| Optional driver parameters: |
| - qcom,ramdump-delay-ms: time in milliseconds to wait before starting to collect ramdumps. |
| This interval is the time to wait after an error on the external modem is |
| signaled to the apps processor before starting to collect ramdumps. Its |
| value depends on the type of external modem (e.g. MDM vs QSC), and how |
| error fatal handing is done on the modem. |
| The default value is 2 seconds (2000 milliseconds) as specified by the |
| mdm9x15 software developer. Consultation with the developer of the modem |
| software is required to determine this value for that modem. |
| - qcom,ps-hold-delay-ms: minimum delay in milliseconds between consecutive PS_HOLD toggles. |
| SGLTE targets that use a QSC1215 modem require a minimum delay between consecutive |
| toggling of the PS_HOLD pmic input. For one target it is 500 milliseconds but it |
| may vary depending on the target and how the external modem is connected. The value |
| is specified by the hardware designers. |
| - qcom,early-power-on: boolean flag to indicate if to power on the modem when the device is probed. |
| - qcom,sfr-query: boolean flag to indicate if to query the modem for a reset reason. |
| - qcom,no-powerdown-after-ramdumps: boolean flag to indicate if to power down the modem after ramdumps. |
| - qcom,no-a2m-errfatal-on-ssr: boolean to tell driver not to raise ap2mdm errfatal during SSR. |
| - qcom,no-reset-on-first-powerup: boolean to tell driver not to reset the modem when first |
| powering up the modem. |
| - qcom,ramdump-timeout-ms: ramdump timeout interval in milliseconds. |
| This interval is the time to wait for collection of the external modem's ramdump |
| to complete. It's value depends on the speed of the data connection between the |
| external modem and the apps processor on the platform. If the connection is a |
| UART port then this delay needs to be longer in order to avoid premature timeout |
| of the ramdump collection. |
| The default value is 2 minutes (120000 milliseconds) which is based on the |
| measured time it takes over a UART connection. It is reduced when the data |
| connection is an HSIC port. The value is usually tuned empirically for a |
| particular target. |
| - qcom,image-upgrade-supported: boolean flag to indicate if software upgrade is supported. |
| - qcom,support-shutdown: boolean flag to indicate if graceful shutdown is supported. |
| - qcom,vddmin-drive-strength: drive strength in milliamps of the ap2mdm-vddmin gpio. |
| The ap2mdm_vddmin gpio is controlled by the RPM processor. It is pulled low |
| to indicate to the external modem that the apps processor has entered vddmin |
| state, and high to indicate the reverse. Its parameters are passed to the RPM |
| software from the HLOS because the RPM software has to way of saving this type |
| of configuration when an external modem is attached. |
| The value of the drive strength is specified by the hardware designers. A value |
| of 8 milliamps is typical. |
| This property is ignored if the property "qcom,ap2mdm-vddmin-gpio" is |
| not set. |
| - qcom,vddmin-modes: a string indicating the "modes" requested for the ap2mdm-vddmin gpio. |
| This value is passed to RPM and is used by the RPM module to determine the |
| gpio mux function. The only currently supported modes string is "normal" and |
| corresponds to the value 0x03 that is passed to RPM. |
| - qcom,restart-group: List of subsystems that will need to restart together. |
| - qcom,mdm-dual-link: Boolean indicates whether both links can used for |
| communication. |
| - qcom,ssctl-instance-id: Instance id used by the subsystem to connect with the SSCTL service. |
| - qcom,sysmon-id: platform device id that sysmon is probed with for the subsystem. |
| - qcom,pil-force-shutdown: Boolean. If set, the SSR framework will not trigger graceful shutdown |
| on behalf of the subsystem driver. |
| - qcom,mdm-link-info: a string indicating additional info about the physical link. |
| For example: "devID_domain.bus.slot" in case of PCIe. |
| |
| Example: |
| mdm0: qcom,mdm0 { |
| compatible = "qcom,mdm2-modem"; |
| cell-index = <0>; |
| #address-cells = <0>; |
| interrupt-parent = <&mdm0>; |
| interrupts = <0 1 2 3>; |
| #interrupt-cells = <1>; |
| interrupt-map-mask = <0xffffffff>; |
| interrupt-map = |
| <0 &msmgpio 82 0x3 |
| 1 &msmgpio 46 0x3 |
| 2 &msmgpio 80 0x3 |
| 3 &msmgpio 27 0x3>; |
| interrupt-names = |
| "err_fatal_irq", |
| "status_irq", |
| "plbrdy_irq", |
| "mdm2ap_vddmin_irq"; |
| |
| qcom,mdm2ap-errfatal-gpio = <&msmgpio 82 0x00>; |
| qcom,ap2mdm-errfatal-gpio = <&msmgpio 106 0x00>; |
| qcom,mdm2ap-status-gpio = <&msmgpio 46 0x00>; |
| qcom,ap2mdm-status-gpio = <&msmgpio 105 0x00>; |
| qcom,ap2mdm-soft-reset-gpio = <&msmgpio 24 0x00>; |
| qcom,mdm2ap-pblrdy-gpio = <&msmgpio 80 0x00>; |
| qcom,ap2mdm-wakeup-gpio = <&msmgpio 104 0x00>; |
| qcom,ap2mdm-vddmin-gpio = <&msmgpio 108 0x00>; |
| qcom,mdm2ap-vddmin-gpio = <&msmgpio 27 0x00>; |
| |
| qcom,ramdump-delay-ms = <2000>; |
| qcom,ramdump-timeout-ms = <120000>; |
| qcom,vddmin-modes = "normal"; |
| qcom,vddmin-drive-strength = <8>; |
| qcom,ssctl-instance-id = <10>; |
| qcom,sysmon-id = <20>; |
| }; |