Управление питанием HID через SPI
В этой статье описываются сведения об управлении питанием узла и устройства через SPI.
Оптимизация питания, инициированная устройством
Устройство отвечает за оптимизацию использования энергии при отсутствии параметров питания от узла. Это позволяет устройству переходить в состояние наименьшего энергопотребления без вмешательства узла, обеспечивая при этом возможность своевременного взаимодействия устройства с узлом.
Чтобы правильно выполнить оптимизацию питания, инициированную устройством, выполните приведенные далее действия.
- Устройство отвечает за сохранение своего состояния в режиме низкого энергопотребления.
- Все оптимизации питания устройства должны быть прозрачными для узла и конечных пользователей.
- Устройство должно своевременно отвечать на все запросы от узла. Устройство отвечает за своевременное подключение к более высоким режимам питания при взаимодействии с пользователем или системой.
- Устройство должно уведомлять узел о любых изменениях входного отчета без потери. Никакие события не должны быть потеряны или удалены устройством.
- Состояния питания, описанные в разделе Оптимизация питания, инициированная узлом , не применяются к оптимизации питания, инициированной устройством.
Сценарии, в которых обычно развертываются средства оптимизации питания, инициированные устройством, включают следующие:
- Устройство простаит в течение короткого интервала времени. Устройство определяет, что оно бездействует, и переводит себя в состояние с наименьшим энергопотреблением, где оно снижает частоту внутреннего зондирования до тех пор, пока движение не будет повторно инициировано. Как только начинается движение, данные немедленно отправляются на узел.
- Устройство уменьшает частоту зондирования. Устройство уменьшает частоту сканирования данных.
Оптимизация питания, инициированная узлом
Узел отвечает за оптимизацию возможностей всей системы и устройства. Этот метод оптимизации питания следует использовать, когда узел хочет предоставлять уведомления об оптимизации питания устройствам.
Следующие состояния питания определяются для оптимизации питания, инициированной узлом, и их не следует путать с состояниями оптимизации питания, инициированными конкретными поставщиками устройств.
- ON
- SLEEP (устройство может разбудить систему)
- OFF (устройство не может разбудить систему, питание может быть отключено)
В состоянии ON устройство ведет себя нормально и может использовать инициированные устройством оптимизации питания для снижения энергопотребления. Устройство отвечает за то, что находится в состоянии ON при инициировании связи HIDSPI после сброса узла.
Узел указывает устройству перейти в состояние низкого энергопотребления из состояния ON, выполнив определенную Set Power
команду. Узел решит сделать это в соответствии с политикой питания операционной системы для устройства.
Узел переводит устройство в спящий режим, когда политика питания платформы позволяет устройству пробуждение либо самого, либо системы. Поддержка SLEEP является необязательной и указывается операционной системе узла через ACPI или способом, соответствующим шине для контроллера конкретной платформы. SET POWER SLEEP
Получив команду, устройство должно немедленно перейти в состояние с низким энергопотреблением, в котором оно будет ожидать взаимодействия с пользователем и не должно утверждать прерывания, за исключением запуска пробуждения. Если устройство обнаруживает входные данные, оно утверждает прерывание и ожидает отправки команды узлом SET POWER ON
. Устройство отвечает на SET POWER ON
команду и возобновляет отправку входных данных на узел.
Узел переводит устройство в состояние OFF, когда обмен данными с устройством больше не требуется. AcPI (или контроллер для конкретной платформы) должен быть настроен для обеспечения холодного состояния OFF. После получения SET POWER OFF
команды устройство сразу переходит в состояние с наименьшей мощностью и прекращает связь с узлом. Чтобы перевести устройство в состояние ON, узел инициирует сброс, после чего начинается процесс инициализации.
Для устройств с перечислением ACPI необходимо реализовать следующие состояния питания:
- D0 — нормальное рабочее состояние
- D2 — используется для состояния SLEEP, если поддерживается. Устройство должно указывать на поддержку пробуждения из этого состояния питания.
- D3 — этот параметр следует использовать для состояния OFF. Устройство не должно указывать на поддержку пробуждения из этого состояния питания.
Для контроллеров конкретной платформы можно использовать альтернативные сопоставления D-состояния, чтобы учесть требования к энергопотреблению оборудования контроллера.
Сопоставления состояния D на уровне платформы не отображаются и не передаются на устройство.
Обязанности состояния управления узлом и устройством
В таблице ниже указаны свойства, которые должны следовать устройству и узлу:
Состояние электропитания | Ответственность узла | Ответственность за устройство |
---|---|---|
ON | — При необходимости устранять прерывания и проблемы ввода-вывода на устройстве. | — состояние on power после сброса — обработка, но не предоставление ответа на SET POWER SLEEP команду или SET POWER OFF от узла. |
СПАТЬ | — инструктирует устройство о переходе в спящий режим. — Установка устройства в состояние ON, если устройство оповещает через строку прерывания. — Если узел должен взаимодействовать с устройством, он выдает SET POWER команду (в on) перед любой другой командой. |
— Отмена утверждения линии прерывания, если она была задана, до того, как узел инициировал оптимизацию питания. — отправка прерывания на узел для запроса обслуживания. Устройство не должно повторно выполнять прерывание до тех пор, пока узел не отправит SET POWER команду для входа в состояние ON, на которое устройство ответило. В этот момент устройство должно повторить прерывание, чтобы уведомить узел о любом отчете об ожидающих входных данных. — Сократите нагрузку на питание до абсолютного минимума, чтобы поддерживать состояние и при необходимости поддерживать удаленный пробуждение. — Отвечать на SET POWER ON команды от узла. |
OFF | — указание устройству перейти в состояние OFF. — направьте платформу, чтобы поместить устройство в состояние OFF. — переведите устройство в это состояние, когда оно не может проснуться. |
— Отмена утверждения линии прерывания, если она была задана, до того, как узел инициировал оптимизацию питания. — Устройство не сможет инициировать пробуждение или предоставлять прерывания в этом состоянии. — Уменьшите притягивая мощность до абсолютного минимума. Он не требуется для поддержания состояния. — Рассматривайте переход OFF —> ON так же, как и регулярное включение питания. |