> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PMIC

PMIC 是一种专用电子元件，用于管理设备内的各种电源需求。

PMIC 负责管理电源需求，包括以下方面：

* 电池管理任务，例如充电和电量计量。
* 用户界面组件，例如闪光灯、显示屏和 RGB 色彩空间。
* 片上系统（SoC）基础设施元件，例如时钟、模数转换器（ADC）和上电（PON）功能。

某些 PMIC 资源可以通过 `XBL_CFG` 镜像在 XBL 中进行定制。配置 PMIC XBL DT 属性可确保最佳性能和集成。您可以使用 DT 框架执行这些定制。

Linux 设备的 PMIC DTSI 文件位于 `boot_images/boot/Settings/Soc/<Chipset>/Core/PMIC/pm.dtsi, access.dtsi`。

<Frame caption="**表：PMIC DT 属性**" />

| 属性名称                        | 属性描述                                   | 数据类型        | 可能的值/取值范围                                                                                                                                                    | 设备行为                                                                       |
| --------------------------- | -------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- |
| `s2-kpdpwr`                 | 启用 PMIC 电源键引脚复位配置。                     | 布尔型         | • `PM_TRUE`<br />• `PM_FALSE`                                                                                                                                | 当按住电源键达到 `s1-ms` 和 `s2-ms` 中指定的时长时，电源键被配置为复位或关闭设备。若为 `PM_FALSE`，则使用硬件默认设置。 |
| `reset-type`                | 选择复位类型。                                | UINT8       | • `PM_WARM_RESET`<br />• `PM_HARD_RESET`<br />• `PM_SHUTDOWN`                                                                                                | • WARM\_RESET：崩溃转储收集<br />• HARD\_RESET：重启<br />• SHUTDOWN：关机              |
| `s1-ms`                     | 按键持续时间（从支持的值中选择）。                      | UINT32      | 0, 32, 56, 80, 128, 184, 272, 408, 608, 904, 1352, 2048, 3072, 4480, 6720, 10256                                                                             | `KPDPWR_N_RESET_S1_TIMER`，单位为 ms                                           |
| `s2-ms`                     | 按键持续时间（从支持的值中选择）。                      | UINT32      | 0, 10, 50, 100, 250, 500, 1000, 2000                                                                                                                         | `KPDPWR_N_RESET_S2_TIMER`，单位为 ms                                           |
| `s2-kpdpwr-resin`           | 配置 PMIC 电源键和 resin 键组合。                | 布尔型         | • `PM_TRUE`<br />• `PM_FALSE`                                                                                                                                | 电源键和 resin 键组合在 `s1-ms` 和 `s2-ms` 指定的时长内均适用。若为 `PM_FALSE`，则使用硬件默认值。        |
| `reset-type`                | 选择复位类型。                                | UINT32      | • `PM_WARM_RESET`<br />• `PM_HARD_RESET`<br />• `PM_SHUTDOWN`                                                                                                | WARM\_RESET：崩溃转储，HARD\_RESET：重启，SHUTDOWN：关机                                |
| `s1-ms`                     | 按键持续时间（选择支持的值）。                        | UINT32      | 0, 32, 56, 80, 128, 184, 272, 408, 608, 904, 1352, 2048, 3072, 4480, 6720, 10256                                                                             | `RESIN_AND_KPDPWR_RESET_S1_TIMER`，单位为 ms                                   |
| `s2-ms`                     | 按键持续时间（选择支持的值）。                        | UINT32      | 0, 10, 50, 100, 250, 500, 1000, 2000                                                                                                                         | `RESIN_AND_KPDPWR_RESET_S2_TIMER`，单位为 ms                                   |
| `s2-resin`                  | 配置用作音量减键的 resin 键引脚。                   | 布尔型         | • `PM_TRUE`<br />• `PM_FALSE`                                                                                                                                | 当按住 resin 键达到 `s1-ms` / `s2-ms` 时长时，可复位或关闭设备。若为 `PM_FALSE`，则应用硬件默认值。       |
| `reset-type`                | 选择复位类型。                                | UINT8       | • `PM_WARM_RESET`<br />• `PM_HARD_RESET`<br />• `PM_SHUTDOWN`                                                                                                | WARM\_RESET：崩溃转储，HARD\_RESET：重启，SHUTDOWN：关机                                |
| `s1-ms`                     | 按键持续时间（选择支持的值）。                        | UINT32      | 0, 32, 56, 80, 128, 184, 272, 408, 608, 904, 1352, 2048, 3072, 4480, 6720, 10256                                                                             | `RESIN_N_RESET_S1_TIMER`，单位为 ms                                            |
| `s2-ms`                     | 按键持续时间（选择支持的值）。                        | UINT32      | 0, 10, 50, 100, 250, 500, 1000, 2000                                                                                                                         | `RESIN_N_RESET_S2_TIMER`，单位为 ms                                            |
| `s3-reset`                  | 配置 S3 复位。                              | 布尔型         | • `PM_TRUE`<br />• `PM_FALSE`                                                                                                                                | 在 S2 复位失败时用作故障保护复位或恢复出厂设置。在定时器到期后触发。                                       |
| `s3-src`                    | 选择复位源。                                 | UINT8       | • `PM_PON_RESET_SOURCE_KPDPWR`<br />• `PM_PON_RESET_SOURCE_RESIN`<br />• `PM_PON_RESET_SOURCE_RESIN_AND_KPDPWR`<br />• `PM_PON_RESET_SOURCE_RESIN_OR_KPDPWR` | 电源键、resin 键或其组合                                                            |
| `timervalue-ms`             | S3 复位的按键持续时间。                          | UINT32      | 0, 8, 16, 32, 63, 125, 240, 500, 1000, 2000, 4000, 8000, 16000, 32000, 64000, 128000                                                                         | `RESET_S3_TIMER_n`，单位为 ms                                                  |
| `uvlo-config`               | 配置欠压锁定阈值。                              | UINT8       | PMIC\_A、PMIC\_B、PMIC\_C、PMIC\_D、PMIC\_E、PMIC\_I、PMIC\_K                                                                                                      | 达到 UVLO 阈值时设备关机。                                                           |
| `uvlo_thresh`               | UVLO 阈值。                               | UINT32      | mV                                                                                                                                                           | 阈值，单位为毫伏                                                                   |
| `uvlo_hyst`                 | UVLO 迟滞。                               | UINT32      | mV                                                                                                                                                           | 迟滞，单位为毫伏                                                                   |
| `uvlo_enable`               | 启用 UVLO 配置。                            | 布尔型         | `PM_ENABLE`、`PM_DISABLE`                                                                                                                                     | 若为 `PM_DISABLE`，则应用硬件默认值。                                                  |
| `ovlo-config`               | 配置过压锁定阈值。                              | PMIC\_INDEX | PMIC\_A–PMIC\_K                                                                                                                                              | 达到 OVLO 阈值时设备关机。                                                           |
| `ovlo_thresh`               | OVLO 阈值。                               | –           | mV                                                                                                                                                           | 阈值，单位为毫伏                                                                   |
| `ovlo_hyst`                 | OVLO 迟滞。                               | –           | mV                                                                                                                                                           | 迟滞，单位为毫伏                                                                   |
| `ovlo_enable`               | 启用 OVLO 配置。                            | –           | `PM_ENABLE`、`PM_DISABLE`                                                                                                                                     | 若为 `PM_DISABLE`，则应用硬件默认值。                                                  |
| `Long-pwrkey-dbnc-chk`      | 启动期间的电源键去抖检查。                          | UINT32      | msec                                                                                                                                                         | 如果在去抖窗口内未按下按键，设备将关机。                                                       |
| `chk-at`                    | 检查按键的阶段。                               | UINT8       | 0, 1, 2                                                                                                                                                      | 0：不检查，1：XBL Loader，2：XBL core（UEFI）                                        |
| `sw-config`                 | 在启动期间修改 LDO、SMPS、时钟和 GPIO 的 PMIC 软件配置。 | UINT32      | PM\_EVENT\_LOG\_LEVEL\_\*                                                                                                                                    | 控制 UART 中 PON 日志的详细程度。                                                     |
| `Charger`                   | 充电器配置组。                                | UINT32      | PMIC\_D / PMIC\_I                                                                                                                                            | 主充电器 PMIC 索引。                                                              |
| `no-batt-cfg-enable`        | 启用无电池配置。                               | UINT8       | `PM_TRUE`、`PM_FALSE`                                                                                                                                         | 如果未检测到电池，设备将自动启动。                                                          |
| `Secondary-charger-present` | 指示是否存在辅助充电器。                           | UINT8       | `PM_TRUE`、`PM_FALSE`                                                                                                                                         | 辅助充电器设置。                                                                   |

## **SMPS/LDO/CLK 示例代码**

```text theme={null}
driver-post-init = <
      // PM_SMPS_SET_AHC_HR        PM_BUSID_0   PMIC_C  PM_SMPS_1    0x57
      // PM_SMPS_SET_ULS           PM_BUSID_0   PMIC_F  PM_SMPS_6    1375000          /*The Voltage is in microVolts*/
      // PM_LDO_SET_ULS            PM_BUSID_0   PMIC_F  PM_SMPS_6    1375000          /*The Voltage is in microVolts*/
      // PM_CLK_ENABLE             PM_BUSID_0   PMIC_A  PM_CLK_RF_1  PM_TRUE
      // PM_SMPS_SET_VOLT          PM_BUSID_0   PMIC_B  PM_SMPS_1    1200
      // PM_SMPS_SET_AHC           PM_BUSID_0   PMIC_B  PM_SMPS_1    PM_FALSE
      // PM_LDO_SET_AHC            PM_BUSID_0   PMIC_B  PM_LDO_1     PM_FALSE
      // PM_LDO_SET_VOLT           PM_BUSID_0   PMIC_B  PM_LDO_1     1200
      // PM_LDO_SET_MODE           PM_BUSID_0   PMIC_B  PM_LDO_1     PM_SW_MODE_NPM
      // PM_SMPS_SET_MODE          PM_BUSID_0   PMIC_B  PM_SMPS_1    PM_SW_MODE_NPM
      // PM_SMPS_SET_PD_CTRL       PM_BUSID_0   PMIC_B  PM_SMPS_1    PM_TRUE
      // PM_SMPS_SET_PIN_CTRL      PM_BUSID_0   PMIC_B  PM_SMPS_1    PM_TRUE
      // PM_SMPS_SET_OCP_BROADCAST PM_BUSID_0   PMIC_B  PM_SMPS_1    PM_TRUE
      // PM_LDO_SET_PD_CTRL        PM_BUSID_0   PMIC_B  PM_LDO_1     PM_TRUE
      // PM_LDO_SET_PIN_CTRL       PM_BUSID_0   PMIC_B  PM_LDO_1     PM_TRUE
      // PM_LDO_SET_OCP_BROADCAST  PM_BUSID_0   PMIC_B  PM_LDO_1     PM_TRUE
      // PM_CLK_DRV_STR            PM_BUSID_0   PMIC_A  PM_CLK_RF_1  3
      // PM_SMPS_SET_ENABLE        PM_BUSID_0   PMIC_B  PM_SMPS_1    PM_TRUE
      // PM_LDO_SET_ENABLE         PM_BUSID_0   PMIC_B  PM_LDO_1     PM_TRUE
      // PM_SPMI_CLK_DATA_CFG      PM_BUSID_0   PMIC_A  0x2          0x2              /*BUS_ID, PMIC_ID, CLK buff Config, DATA buff Config*/
      PM_DELAY(10)
      > ;
```
