dwc3_msm_pm_restore
时间: 2023-06-15 19:03:58 浏览: 236
dwc3_msm_pm_restore 是一个函数名,通常在 Linux 内核的 USB 驱动中使用。它用于在系统从睡眠模式恢复时,重新启用 USB 控制器的电源管理功能。DWC3 代表 DesignWare USB 3.0 控制器 IP,msm 表示 Qualcomm 的移动平台,pm_restore 是指电源管理的恢复。
相关问题
解释内核代码dwc3目录源码含义:enum dwc3_notify_event { DWC3_CONTROLLER_ERROR_EVENT, DWC3_CONTROLLER_RESET_EVENT, DWC3_CORE_PM_SUSPEND_EVENT, DWC3_CORE_PM_RESUME_EVENT, DWC3_CONTROLLER_CONNDONE_EVENT, DWC3_CONTROLLER_NOTIFY_OTG_EVENT, DWC3_CONTROLLER_SET_CURRENT_DRAW_EVENT, DWC3_CONTROLLER_NOTIFY_DISABLE_UPDXFER, DWC3_CONTROLLER_PULLUP, /* USB GSI event buffer related notification */ DWC3_GSI_EVT_BUF_ALLOC, DWC3_GSI_EVT_BUF_SETUP, DWC3_GSI_EVT_BUF_CLEANUP, DWC3_GSI_EVT_BUF_CLEAR, DWC3_GSI_EVT_BUF_FREE, DWC3_CONTROLLER_NOTIFY_CLEAR_DB, };
这段代码定义了一个名为 `dwc3_notify_event` 的枚举类型,用于表示 DWC3(DesignWare USB 3.0 超级速度 USB 控制器)的不同通知事件。这些事件用于在 DWC3 控制器的驱动程序中进行事件处理和通信。
下面是每个枚举值的含义和可能的用途:
- `DWC3_CONTROLLER_ERROR_EVENT`:表示控制器错误事件,用于处理控制器发生错误的情况。
- `DWC3_CONTROLLER_RESET_EVENT`:表示控制器复位事件,用于处理控制器复位操作。
- `DWC3_CORE_PM_SUSPEND_EVENT`:表示核心挂起事件,用于处理 USB 核心的挂起操作。
- `DWC3_CORE_PM_RESUME_EVENT`:表示核心恢复事件,用于处理 USB 核心的恢复操作。
- `DWC3_CONTROLLER_CONNDONE_EVENT`:表示连接完成事件,用于处理 DWC3 控制器连接完成后的操作。
- `DWC3_CONTROLLER_NOTIFY_OTG_EVENT`:表示 OTG(On-The-Go)通知事件,用于处理 OTG 相关的通知。
- `DWC3_CONTROLLER_SET_CURRENT_DRAW_EVENT`:表示设置当前电流消耗事件,用于设置 DWC3 控制器的当前电流消耗。
- `DWC3_CONTROLLER_NOTIFY_DISABLE_UPDXFER`:表示禁用更新传输事件,用于禁用传输更新。
- `DWC3_CONTROLLER_PULLUP`:表示上拉事件,用于处理 USB 接口的上拉操作。
此外,还有一些与 USB GSI(Generic SuperSpeed Inter-Chip)事件缓冲区相关的通知事件:
- `DWC3_GSI_EVT_BUF_ALLOC`:表示事件缓冲区分配事件。
- `DWC3_GSI_EVT_BUF_SETUP`:表示事件缓冲区设置事件。
- `DWC3_GSI_EVT_BUF_CLEANUP`:表示事件缓冲区清理事件。
- `DWC3_GSI_EVT_BUF_CLEAR`:表示事件缓冲区清除事件。
- `DWC3_GSI_EVT_BUF_FREE`:表示事件缓冲区释放事件。
最后,`DWC3_CONTROLLER_NOTIFY_CLEAR_DB` 表示清除数据包通知。
这些枚举值用于在 DWC3 控制器的驱动程序中标识和处理不同的通知事件。具体的使用和含义可能因驱动程序实现和配置而有所不同,需要查阅相关的文档或源代码来了解其具体用法和上下文。
struct dwc3_msm 结构体分析
`struct dwc3_msm` 是 Qualcomm 移动平台上用于 USB3.0 控制器的驱动程序中定义的结构体,其定义如下:
```c
struct dwc3_msm {
struct device *dev;
void __iomem *base;
struct reset_control *core_reset;
struct reset_control *iface_reset;
struct clk *iface_clk;
struct clk *iface_clk_ref;
struct regulator *vddio;
struct regulator *vdd;
struct gpio_desc *vbus_id_gpio;
struct gpio_desc *vbus_valid_gpio;
bool is_ulpi;
bool is_device;
bool is_host;
bool is_otg;
bool has_lpm_erratum;
bool has_lpm_exit_erratum;
bool has_req_exit_erratum;
bool has_lpm_nyet_erratum;
bool has_lpm_response_erratum;
bool has_lpm_retry_erratum;
bool has_lpm_ack_erratum;
bool has_lpm_sts_erratum;
bool has_lpm_incomplete_erratum;
u32 max_speed;
bool no_vbus;
bool no_p1u;
bool no_p2u;
bool no_p3u;
bool no_p3d;
bool no_hibernation;
bool no_lpm;
bool no_lpm_remote_wakeup;
bool no_lpm_erratum_wa;
bool no_lpm_exit_erratum_wa;
bool no_req_exit_erratum_wa;
bool no_lpm_nyet_erratum_wa;
bool no_lpm_response_erratum_wa;
bool no_lpm_retry_erratum_wa;
bool no_lpm_ack_erratum_wa;
bool no_lpm_sts_erratum_wa;
bool no_lpm_incomplete_erratum_wa;
bool no_lpm_erratum;
bool no_lpm_exit_erratum;
bool no_req_exit_erratum;
bool no_lpm_nyet_erratum;
bool no_lpm_response_erratum;
bool no_lpm_retry_erratum;
bool no_lpm_ack_erratum;
bool no_lpm_sts_erratum;
bool no_lpm_incomplete_erratum;
struct phy *phy;
struct dwc3_lpm_timing_parameters lpm_timing;
struct dwc3_lpm_parameters lpm_parameters;
bool force_b_host;
bool force_b_device;
bool force_b_srp;
};
```
其中,成员变量的含义如下:
- `struct device *dev`: 指向该设备的 struct device 结构体。
- `void __iomem *base`: USB3.0 控制器的寄存器基地址。
- `struct reset_control *core_reset`: 控制 USB3.0 核心复位的 reset 控制器。
- `struct reset_control *iface_reset`: 控制 USB3.0 接口复位的 reset 控制器。
- `struct clk *iface_clk`: USB3.0 接口时钟。
- `struct clk *iface_clk_ref`: USB3.0 接口参考时钟。
- `struct regulator *vddio`: 用于控制 USB3.0 VDDIO 电源的 regulator。
- `struct regulator *vdd`: 用于控制 USB3.0 VDD 电源的 regulator。
- `struct gpio_desc *vbus_id_gpio`: 用于检测 USB3.0 的 VBUS 和 ID 信号的 GPIO 描述符。
- `struct gpio_desc *vbus_valid_gpio`: 用于检测 USB3.0 的 VBUS_VALID 信号的 GPIO 描述符。
- `bool is_ulpi`: 表示 USB3.0 是否使用 ULPI 接口。
- `bool is_device`: 表示 USB3.0 是否为设备模式。
- `bool is_host`: 表示 USB3.0 是否为主机模式。
- `bool is_otg`: 表示 USB3.0 是否为 OTG 模式。
- `bool has_lpm_erratum`: 表示 USB3.0 控制器是否存在低功耗模式(LPM)的错误。
- `bool has_lpm_exit_erratum`: 表示 USB3.0 控制器是否存在 LPM 退出的错误。
- `bool has_req_exit_erratum`: 表示 USB3.0 控制器是否存在请求退出 LPM 的错误。
- `bool has_lpm_nyet_erratum`: 表示 USB3.0 控制器是否存在 LPM NYET 的错误。
- `bool has_lpm_response_erratum`: 表示 USB3.0 控制器是否存在 LPM 响应的错误。
- `bool has_lpm_retry_erratum`: 表示 USB3.0 控制器是否存在 LPM 重试的错误。
- `bool has_lpm_ack_erratum`: 表示 USB3.0 控制器是否存在 LPM ACK 的错误。
- `bool has_lpm_sts_erratum`: 表示 USB3.0 控制器是否存在 LPM 状态的错误。
- `bool has_lpm_incomplete_erratum`: 表示 USB3.0 控制器是否存在 LPM 不完整的错误。
- `u32 max_speed`: 表示 USB3.0 的最大速度。
- `bool no_vbus`: 表示 USB3.0 是否没有 VBUS。
- `bool no_p1u`: 表示 USB3.0 是否不支持 P1U。
- `bool no_p2u`: 表示 USB3.0 是否不支持 P2U。
- `bool no_p3u`: 表示 USB3.0 是否不支持 P3U。
- `bool no_p3d`: 表示 USB3.0 是否不支持 P3D。
- `bool no_hibernation`: 表示 USB3.0 是否不支持 Hibernation。
- `bool no_lpm`: 表示 USB3.0 是否不支持 LPM。
- `bool no_lpm_remote_wakeup`: 表示 USB3.0 是否不支持 LPM 远程唤醒。
- `bool no_lpm_erratum_wa`: 表示 USB3.0 是否不支持 LPM 错误的 Workaround。
- `bool no_lpm_exit_erratum_wa`: 表示 USB3.0 是否不支持 LPM 退出错误的 Workaround。
- `bool no_req_exit_erratum_wa`: 表示 USB3.0 是否不支持请求退出 LPM 的错误 Workaround。
- `bool no_lpm_nyet_erratum_wa`: 表示 USB3.0 是否不支持 LPM NYET 错误的 Workaround。
- `bool no_lpm_response_erratum_wa`: 表示 USB3.0 是否不支持 LPM 响应错误的 Workaround。
- `bool no_lpm_retry_erratum_wa`: 表示 USB3.0 是否不支持 LPM 重试错误的 Workaround。
- `bool no_lpm_ack_erratum_wa`: 表示 USB3.0 是否不支持 LPM ACK 错误的 Workaround。
- `bool no_lpm_sts_erratum_wa`: 表示 USB3.0 是否不支持 LPM 状态错误的 Workaround。
- `bool no_lpm_incomplete_erratum_wa`: 表示 USB3.0 是否不支持 LPM 不完整错误的 Workaround。
- `bool no_lpm_erratum`: 表示 USB3.0 是否不支持 LPM 错误。
- `bool no_lpm_exit_erratum`: 表示 USB3.0 是否不支持 LPM 退出错误。
- `bool no_req_exit_erratum`: 表示 USB3.0 是否不支持请求退出 LPM 的错误。
- `bool no_lpm_nyet_erratum`: 表示 USB3.0 是否不支持 LPM NYET 错误。
- `bool no_lpm_response_erratum`: 表示 USB3.0 是否不支持 LPM 响应错误。
- `bool no_lpm_retry_erratum`: 表示 USB3.0 是否不支持 LPM 重试错误。
- `bool no_lpm_ack_erratum`: 表示 USB3.0 是否不支持 LPM ACK 错误。
- `bool no_lpm_sts_erratum`: 表示 USB3.0 是否不支持 LPM 状态错误。
- `bool no_lpm_incomplete_erratum`: 表示 USB3.0 是否不支持 LPM 不完整错误。
- `struct phy *phy`: 指向 USB3.0 PHY 的结构体。
- `struct dwc3_lpm_timing_parameters lpm_timing`: LPM 时序参数。
- `struct dwc3_lpm_parameters lpm_parameters`: LPM 参数。
- `bool force_b_host`: 是否强制 USB3.0 为 B-Host。
- `bool force_b_device`: 是否强制 USB3.0 为 B-Device。
- `bool force_b_srp`: 是否强制 USB3.0 为 B-SRP。
阅读全文
相关推荐


















