Condividi tramite


Driver di filtro USB per supportare i caricatori USB

Scrivere un driver di filtro che supporta il rilevamento dei caricatori, se il controller della funzione usa i driver Synopsys e ChipIdea in-box. Se si sta scrivendo un driver client per un controller di funzione proprietario, il rilevamento del caricatore/collegamento è integrato nel driver client implementando EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET e EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER.

Lo stack di funzioni USB consente al dispositivo, ad esempio un telefono o un tablet, di caricarsi quando si è connessi a un host e a un caricatore USB come definito dalla specifica USB Battery Charge (BC) 1.2.

  • Esistono due tipi di porte che il dispositivo può usare per la ricarica. Il dispositivo può caricare da una porta di ricarica dedicata (DCP) su un caricatore fornito con il dispositivo. In alternativa, il dispositivo può essere proveniente da porte downstream standard o caricando porte downstream quando il dispositivo è connesso a un PC. Entrambi i casi sono conformi alla specifica USB BC 1.2.

  • Alcuni caricatori non seguono la specifica. Lo stack di funzioni USB consente al dispositivo di caricare da quei caricatori USB proprietari.

Per supportare i caricatori proprietari e conformi alle specifiche, queste operazioni sono necessarie.

  • Il dispositivo è in grado di rilevare quando un host USB o un caricatore è collegato o scollegato.
  • Il dispositivo è in grado di rilevare le diverse porte di ricarica USB definite dalla specifica BC 1.2.
  • Per i caricatori USB definiti dalla specifica BC 1.2, il dispositivo viene addebitato con la quantità massima di corrente consentita dalla specifica BC 1.2.
  • Il dispositivo è in grado di rilevare i caricatori USB proprietari.
  • Per i caricatori USB proprietari, determinare la quantità massima di corrente che il dispositivo può disegnare.
  • Notificare al sistema operativo il tipo di porta USB connesso.
  • Impedire al dispositivo di eseguire il pull corrente su USB nel sistema operativo, anche se un host USB è connesso e il dispositivo si è configurato con l'host.

Queste operazioni vengono gestite dall'estensione della classe di funzione USB (UFX)/dalla coppia di driver client e da un driver di filtro caricato come filtro inferiore nello stack di dispositivi per le funzioni USB. Il driver gestisce la ricarica USB a partire dal rilevamento delle porte USB per notificare allo stack di batteria quando può iniziare la ricarica e la quantità massima di corrente che il dispositivo può disegnare.

Ecco una rappresentazione architetturale degli stack di dispositivi.

Ricarica USB.

Quando una porta USB è collegata al dispositivo, il driver client riceve una notifica dal driver di filtro inferiore o da un interrupt. Al momento, il driver client esegue il rilevamento delle porte comunicando con l'hardware USB e segnala il tipo di porta a UFX. In alternativa, può richiedere il driver di filtro. In tal caso, il driver di filtro si coordina con l'hardware USB per eseguire il rilevamento delle porte USB e restituisce il tipo di porta rilevato al driver client e il driver client lo passa a UFX.

In base al tipo di porta, UFX determina la quantità massima di corrente che il dispositivo può disegnare e inviare tali informazioni al driver di aggregazione di ricarica (CAD). CAD convalida le informazioni. Se l'oggetto corrente è valido, CAD invia una richiesta al driver della classe della batteria per avviare la ricarica fino alla corrente massima specificata. Il driver della classe della batteria inoltra la richiesta di ricarica al driver miniclasse della batteria per l'elaborazione. Se la richiesta di ricarica ha specificato che è stato collegato un caricatore proprietario e la miniclasse della batteria gestisce i caricatori proprietari, il driver miniclasse può tentare di caricare con una corrente massima che determina l'appropriato. In caso contrario, la miniclasse della batteria può caricare solo fino alla corrente massima specificata da CAD.