gpt4 book ai didi

android - 内核如何知道 USB 设备何时自行进入低功耗模式(不是由主机启动)?

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:43 25 4
gpt4 key购买 nike

一个 USB 设备可以进入低功耗模式(支持挂起和恢复)。

主机还可以为设备启动挂起和恢复,在这种情况下,主机知道设备状态。

场景是:

  • 设备启动低功耗模式。
  • 主机驱动程序想要访问有关设备低功耗状态的信息
  • 驱动程序如何从 Linux 内核获取此信息?

最佳答案

根据 USB 规范,USB 设备不能暂停与 USB 主机的链接。只有主机可以暂停链接。此外,挂起(U3)与低功耗模式(U1/U2)不同。设备可以通过与主机协商而不是暂停来开始切换到低功耗模式。

现在假设您指的是低功耗模式 (U1/U2),那么主机驱动程序无法知道端口何时切换到由设备启动的低功耗模式,因为不会有任何事件发生。您需要自己监控链路状态,以查看链路是否已切换到低功耗模式。

据我所知,有一个 API 用于获取连接到集线器的设备的链路状态。

static void xhci_hub_report_link_state(struct xhci_hcd *xhci,
u32 *status, u32 status_reg)

此 API 可用于跟踪通过外部集线器连接的设备的链接状态。但是没有可用于读取根集线器端口链路状态的 API。如果主机 Controller 驱动程序公开任何接口(interface),则可以使用该接口(interface)。

查看 dwc3 Controller 代码,它公开了一个可用于读取链接状态的 debugfs 接口(interface)。

路径 - usb/dwc3/debugfs.c

API-

static int dwc3_link_state_show(struct seq_file *s, void *unused)

PS - 我认为您有 XHCI Controller 。但 EHCI Controller 也几乎相同。设备永远不会暂停 USB 链接。

关于android - 内核如何知道 USB 设备何时自行进入低功耗模式(不是由主机启动)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45351924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com