USB-фильтр для поддержки USB-зарядных устройств

Напишите драйвер фильтра, поддерживающий обнаружение зарядных устройств, если контроллер функции использует встроенные драйверы Synopsys и ChipIdea. Если вы пишете драйвер клиента для проприетарного контроллера функций, обнаружение зарядного устройства и подключения интегрировано в драйвер клиента путем реализации компонентов EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET и EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER.

Стек функций USB позволяет устройству, например телефону или планшету, заряжаться при подключении к хосту и USB-зарядному устройству, как это определено спецификацией USB зарядки батарей (BC) 1.2.

  • Существует два типа портов, которые устройство может использовать для зарядки. Устройство может заряжаться от выделенного порта зарядки (DCP) на зарядном устройстве, которое поставляется с устройством. Кроме того, устройство может использовать стандартные порты нижнего потока и заряжающие порты нижнего потока при подключении устройства к компьютеру. Оба этих случая соответствуют спецификации USB BC 1.2.

  • Некоторые зарядные устройства не соответствуют спецификации. Стек функций USB позволяет устройству заряжаться от проприетарных USB-зарядных устройств.

Для поддержки соответствующих спецификациям и патентованных зарядных устройств необходимы эти операции.

  • Устройство может обнаружить, когда USB-узел или зарядное устройство подключено или отсоединяется.
  • Устройство может обнаруживать различные usb-зарядные порты, определенные спецификацией BC 1.2.
  • Для USB-зарядных устройств, определенных спецификацией BC 1.2, устройство заряжается с максимальным током, разрешенным спецификацией BC 1.2.
  • Устройство может обнаруживать собственные USB-зарядные устройства.
  • Для проприетарных USB-зарядных устройств определите максимальный ток, который может потреблять устройство.
  • Уведомите операционную систему о типе USB-порта, подключенном.
  • Предотвратить потребление тока устройством по USB в ОС, даже если USB-хост подключен и устройство настроило себя с хостом.

Эти операции обрабатываются парой расширение класса функций USB (UFX)/клиентский драйвер и фильтрующим драйвером, загруженным в качестве нижнего фильтра в стеке устройств-функций USB. Драйвер управляет зарядкой USB, начиная с обнаружения USB-порта и уведомления стека батареи о возможности начала зарядки, а также сообщая о максимальном токе, который устройство может потреблять.

Ниже приведено архитектурное представление стеков устройств.

USB-зарядка.

При подключении устройства к USB-порту, драйвер клиента получает уведомление либо от драйвера нижнего фильтра, либо через прерывание. В настоящее время драйвер клиента выполняет обнаружение портов, взаимодействуя с USB-оборудованием и сообщает тип порта UFX. Кроме того, он может запросить драйвер фильтра. В этом случае драйвер фильтра координирует работу с USB-оборудованием для обнаружения USB-портов и возвращает обнаруженный тип порта драйверу клиента, а драйвер клиента передает его в UFX.

В зависимости от типа порта UFX определяет максимальную силу тока, которую устройство может потреблять, и отправляет эту информацию в драйвер управления зарядкой (CAD). CAD проверяет сведения. Если ток является допустимым, CAD отправляет запрос драйверу класса батареи, чтобы начать зарядку до указанного максимального тока. Драйвер класса батареи перенаправит запрос заряда на драйвер миникласса батареи для обработки. Если запрос на зарядку указал, что проприетарное зарядное устройство было подключено, а миникласс батареи обрабатывает проприетарные зарядные устройства, драйвер миникласса может попытаться заряжать с максимальным током, который он определяет как подходящий. В противном случае мини-класс батареи может заряжаться только до максимального тока, указанного в CAD.