.. _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
