|  | .. _usb_bc12_api: | 
|  |  | 
|  | BC1.2 Devices (Experimental) | 
|  | ####################################### | 
|  |  | 
|  | The Battery Charging specification, currently at revision 1.2, is commonly | 
|  | referred to as just BC1.2. BC1.2 defines limits and detection mechanisms for USB | 
|  | devices to draw current exceeding the USB 2.0 specification limit of 0.5A, 2.5W. | 
|  |  | 
|  | The BC1.2 specification uses the term Charging Port for the device that supplies | 
|  | VBUS on the USB connection and the term Portable Device for the device that | 
|  | sinks current from the USB connection. | 
|  |  | 
|  | Note that the `BC1.2 Specification`_ uses the acronym PD for Portable Device. This | 
|  | should not be confused with the USB-C Power Delivery, which also uses the | 
|  | acronym PD. | 
|  |  | 
|  | On many devices, BC1.2 is the fallback mechanism to determine the connected | 
|  | charger capability on USB type C ports when the attached type-C partner does not | 
|  | support Power Delivery. | 
|  |  | 
|  | Key parameters from the `BC1.2 Specification`_ include: | 
|  |  | 
|  | ============================================================  ========  =========== | 
|  | Parameter                                                     Symbol    Range | 
|  | ============================================================  ========  =========== | 
|  | Allowed PD (portable device) Current Draw from Charging Port  IDEV_CHG  1.5 A | 
|  | Charging Downstream Port Rated Current                        ICDP      1.5 - 5.0 A | 
|  | Maximum Configured Current when connected to a SDP            ICFG_MAX  500 mA | 
|  | Dedicated Charging Port Rated Current                         IDCP      1.5 - 5.0 A | 
|  | Suspend current                                               ISUSP     2.5 mA | 
|  | Unit load current                                             IUNIT     100 mA | 
|  | ============================================================  ========  =========== | 
|  |  | 
|  | While the ICDP and IDCP rated currents go up to 5.0 A, the BC1.2 current is | 
|  | limited by the IDEV_CHG parameter. So the BC1.2 support is capped at 1.5 A in | 
|  | the Zephyr implementation when using portable-device mode. | 
|  |  | 
|  | .. _BC1.2 Specification: https://www.usb.org/document-library/battery-charging-v12-spec-and-adopters-agreement | 
|  |  | 
|  | Basic Operation | 
|  | *************** | 
|  |  | 
|  | The BC1.2 device driver provides only two APIs, ``bc12_set_role()`` and | 
|  | ``bc12_set_result_cb()``. | 
|  |  | 
|  | The application calls ``bc12_set_role()`` to transition the BC1.2 device to | 
|  | either a disconnected, portable-device, or charging port mode. | 
|  |  | 
|  | For the disconnected state, the BC1.2 driver powers down the detection chip. | 
|  | The power down operation is vendor specific. | 
|  |  | 
|  | The application calls ``bc12_set_role()`` with the type set to | 
|  | BC12_PORTABLE_DEVICE when both the following conditions are true: | 
|  |  | 
|  | * The application configured the port as an upstream facing port, i.e. a USB | 
|  | device port. | 
|  | * The application detects VBUS on the USB connection. | 
|  |  | 
|  | For portable-device mode, the BC1.2 driver powers up the detection chip and | 
|  | starts charger detection. At completion of the charger detection, the BC1.2 | 
|  | driver notifies the callback registered with ``bc12_set_result_cb()``. By | 
|  | default, the BC1.2 driver clamps the current to 1.5A to comply with the BC1.2 | 
|  | specification. | 
|  |  | 
|  | To comply with the USB 2.0 specification, when the driver detects a SDP | 
|  | (Standard Downstream Port) charging partner or if BC1.2 detection fails, the | 
|  | driver reports the available current as ISUSP (2.5 mA). The application may | 
|  | increase the current draw to IUNIT (100 mA) when the connected USB host resumes | 
|  | the USB bus and may increase the current draw to ICFG_MAX (500 mA) when the USB | 
|  | host configures the USB device. | 
|  |  | 
|  | Charging port mode is used by the application when the USB port is configured as | 
|  | a downstream facing port, i.e. a USB host port. For charging port mode, the | 
|  | BC1.2 driver powers up the detection chip and configures the charger type | 
|  | specified by a devicetree property. If the driver supports detection of plug and | 
|  | unplug events, the BC1.2 driver notifies the callback registered with | 
|  | ``bc12_set_result_cb()`` to indicate the current connection state of the | 
|  | portable device partner. | 
|  |  | 
|  | Configuration Options | 
|  | ********************* | 
|  |  | 
|  | Related configuration options: | 
|  |  | 
|  | * :kconfig:option:`CONFIG_USB_BC12` | 
|  |  | 
|  | .. _bc12_api_reference: | 
|  |  | 
|  | API Reference | 
|  | ************* | 
|  |  | 
|  | .. doxygengroup:: b12_interface | 
|  | .. doxygengroup:: b12_emulator_backend |