Compartir a través de


Requisitos de notificación de carga lenta de TIPO C USB en Windows

Con la adopción de USB Type-C, un usuario podría emplear una fuente de alimentación poco óptima para cargar su sistema. En este artículo se describe cómo los proveedores de hardware y firmware pueden usar las notificaciones de Windows cuando un usuario conecta una fuente de alimentación usb de tipo C, lo que da lugar a un contrato de entrega de energía poco óptimo.

Carga usb de tipo C

Para proporcionar a los usuarios una experiencia coherente, Microsoft ha definido el requisito de certificación del sistema USBTypeCCharging. El requisito indica que si un sistema con una batería contiene puertos USB type-C que se pueden usar para cargar el sistema, esos puertos deben cumplir los siguientes requisitos, además de las especificaciones usb type-C y entrega de energía (PD):

  • El sistema debe ser capaz de cargar desde una batería muerta utilizando un cargador USB Type-C que proporciona suficiente energía para el sistema.
  • Todos los puertos USB Type-C del sistema deben admitir la carga del sistema.
  • Todos los puertos USB Type-C del sistema deben admitir el suministro a 15 vatios.
  • Los sistemas deben permitir la carga de cualquier cargador compatible con PD que proporcione suficiente energía para el sistema.
  • Los sistemas y el software deben tratar todas las fuentes de alimentación compatibles con PD (por ejemplo, cargador, concentrador, acoplamiento) igual, independientemente del fabricante.
  • Todas las notificaciones de carga usb de tipo C deben basarse en las notificaciones integradas de Windows y no ser proporcionadas por software de terceros.

Windows puede notificar al usuario cuando conecte un cargador o una base de carga que haya negociado un contrato de energía menor que el que requiere la máquina para una carga óptima. Esta característica está presente en todas las máquinas con conectores USB type-C administrados por los siguientes tipos de controladores UcmCx:

  1. En las máquinas compatibles con UCSI , la bandeja de entrada del controlador cliente ACPI UCM-UCSI administra conectores USB Type-C. Esta solución se recomienda porque usa controladores proporcionados por Windows y no depende de un OEM o IHV que desarrolle su propio controlador.
  2. Los controladores de cliente UcmCx para las máquinas que han implementado máquinas de estado pd en hardware o firmware y no son compatibles con UCSI.

Máquinas compatibles con UCSI

Normalmente, las máquinas compatibles con UCSI tienen un controlador insertado que contiene el firmware del administrador de directivas de plataforma (PPM) para administrar las máquinas de estado de PD. Esta administración es transparente para el administrador de directivas del sistema operativo (OPM), una entidad en el sistema operativo que implementa el controlador UCSI de bandeja de entrada. El PPM usa el mecanismo de interacción establecido por la especificación UCSI para interactuar con el OPM.

Los siguientes son mecanismos por los que un PPM puede notificar a OPM sobre la carga lenta. La carga lenta se notifica a Windows solo si el rol de energía del conector es consumidor de energía.

  1. Una notificación del PPM al OPM con el indicador de cambio del conector (CCI) establecido en el número de conector desde el que está prevista la notificación de carga lenta. En respuesta a esta notificación, el OPM envía un comando UCSI GET_CONNECTOR_STATUS al PPM. PMM debe responder a este comando con GET_CONNECTOR_STATUS datos con los siguientes bits establecidos.

    1. Cambio de estado del conector (16-0) bit de cambio de estado de carga de batería establecido en 1.
    2. Estado de la capacidad de carga de la batería (65-64) establecido en no cargar (valor 0), velocidad de carga lenta (valor 2) o velocidad de carga muy lenta (valor 3).
  2. Si se conecta un cargador lento mientras la máquina está apagada o en Sx (x > 0), el PPM debe establecer el estado de la capacidad de carga de la batería para reflejar uno de los tres valores mencionados en 1b arriba cuando el OPM envía GET_CONNECTOR_STATUS a PPM después del arranque o Sx resume. En Sx resume, el OPM generalmente envía el comando GET_CONNECTOR_STATUS al PPM después de un PPM_RESET.

    Por el contrario, si un cargador nominal está conectado cuando la máquina está en Sx (x>0), OPM espera que GET_CONNECTION_STATUS datos tengan el campo de estado de la capacidad de carga de la batería (65-64) establecido en la velocidad de carga nominal (valor 1) cuando OPM envía GET_CONNECTOR_STATUS.

Consideración especial para BatteryChargingCapabilityStatus::NotCharging (valor 0)

GET_CONNECTOR_STATUS::Batter Charging Capability Status ' "Not Charging" value is 0, which is also the default. Por lo tanto, a menos que el estado del conector cambie (16-0) bit de cambio de estado de carga de la batería se establece en 1, OPM no puede determinar si es un valor predeterminado o se estableció explícitamente en 0 por PPM para indicar que no se carga. Si este bit está establecido en 0, el sistema operativo puede ignorar el estado de carga de la batería cuando el estado no es Carga.

Por lo tanto, nuestra recomendación fuerte para PPM sería establecer siempre el cambio de estado del conector (16-0) estado de carga de la batería cambia bit a 1 cuando se notifica no/lenta/muy lenta carga. Esta recomendación es simplificar la implementación de PPM para administrar los estados de carga.

Caso especial para la carga lenta y muy lenta

Esta sección no contiene recomendaciones específicas para los propietarios de firmware de OEM, IHVs o UCSI. En su lugar, se describe una lógica específica que el controlador UCSI de bandeja de entrada adopta en torno a las notificaciones de carga que podrían ser conocimientos útiles al diseñar firmware UCSI.

En la primera notificación después de adjuntar un asociado, después de obtener los datos de respuesta de GET_CONNECTOR_STATUS, el controlador UCSI notificará la carga lenta al sistema operativo incluso si el cambio de estado del conector (16-0) bit de cambio de estado de carga de batería no está establecido en 1, si se cumplen las condiciones siguientes:

  1. Cambio de estado del conector (16-0): ConnectChange indica que se trata de la primera notificación de asociación del asociado.
  2. El estado de la capacidad de carga de la batería (62-65) se establece en el valor 2 o 3.

La justificación de este comportamiento es el controlador UCSI no sabe si Not Charging fue intencionada, ya que su valor es 0, que también es el valor predeterminado. Sin embargo, los valores 2 y 3 se pueden controlar sin depender del cambio de estado de carga de la batería. Para obtener más información, vea la siguiente sección.

Prueba de cumplimiento de UCSI

Dado que el contrato de energía óptimo es específico de la máquina, Windows no proporciona pruebas para notificaciones del sistema lentas o no de carga en Windows, ya que la prueba ahora sabría qué niveles de energía validar la notificación. Sin embargo, recomendamos que los OEM validen si sus notificaciones de carga de baterías de PPM a OPM funcionan según lo previsto mediante la siguiente prueba de cumplimiento de UCSI que usa USB Type-C MUTT como asociado del puerto:

Controladores de cliente UCMCx

Los controladores de cliente UcmCx administran conectores USB Type-C sin ser compatibles con las especificaciones ucsi. Entre los informes de otra información sobre los conectores USB Type-C en el sistema operativo, la extensión de clase mantiene al sistema operativo informado sobre los cambios en los niveles de carga del conector USB Type-C. Estos son los DDIs de UmCx a través de con un controlador de cliente pueden informar al sistema operativo de UCM_CHARGING_STATE de los conectores.

  1. UcmConnectorTypeCAttach: al notificar un nuevo asociado de puerto asociado asociado a UCM, un cliente puede notificar el nivel de carga mediante el parámetro de entrada UCM_CONNECTOR_TYPEC_ATTACH_PARAMS::ChargingState

  2. UcmConnectorPdConnectionStateChanged: al notificar el RDO a UCM para el contrato de energía negociado. El cliente puede notificar el nivel de carga mediante UCM_CONNECTOR_PD_CONN_STATE_CHANGED_PARAMS::ChargingState

  3. UcmConnectorChargingStateChanged: en cualquier ocasión en la que el controlador cliente desea actualizar el estado de carga al sistema operativo. Param2 de esta DDI contiene el estado de carga del conector.

Tenga en cuenta los siguientes valores de la enumeración UCM_CHARGING_STATE para mostrar la notificación del sistema al usuario:

  • UcmChargingStateNotCharging
  • UcmChargingStateSlowCharging
  • UcmChargingStateTrickleCharging