| .. _smbus_api: |
| |
| System Management Bus (SMBus) |
| ############################# |
| |
| .. contents:: |
| :local: |
| :depth: 2 |
| |
| Overview |
| ******** |
| |
| System Management Bus (SMBus) is derived from I2C for communication |
| with devices on the motherboard. A system may use SMBus to communicate |
| with the peripherals on the motherboard without using dedicated control |
| lines. With SMBus peripheral can provide various manufacturer information, |
| report errors, accept control parameters, etc. |
| |
| Devices on the bus can operate in three roles: as a "controller" that |
| initiates transactions and controls the clock, a "peripheral" that |
| responds to transaction commands, or a "host", which is a specialized |
| controller, that provides the main interface to the system's CPU. |
| Zephyr has API for "controller" role. |
| |
| In SMBus peripheral devices can initiate communication with Controller |
| with two methods: |
| |
| * **Host Notify protocol**: Peripheral device that supports Host Notify |
| protocol behaive as a Controller to perform the notification. It writes |
| three-bytes message to a special address "SMBus Host (0x08)" with own |
| address and two bytes of relevant data. |
| * **SMBALERT# signal**: Peripheral device uses special signal SMBALERT# to |
| to request attention from the Controller. Controller needs to read one byte |
| from the special "SMBus Alert Response Address (ARA) (0x0c)". The peripheral |
| device responds with data byte containing own address. |
| |
| Currently, the API is based on `SMBus Specification`_ version 2.0 |
| |
| .. note:: |
| See :ref:`coding_guideline_inclusive_language` for information about |
| the terminology used in this API. |
| |
| .. _smbus-controller-api: |
| |
| SMBus Controller API |
| ******************** |
| |
| Zephyr's SMBus controller API is used when an SMBus device controls the bus, |
| in particularly the start and stop conditions and the clock. This is |
| the most common mode, used to interact with SMbus peripherals. |
| |
| Configuration Options |
| ********************* |
| |
| Related configuration options: |
| |
| * :kconfig:option:`CONFIG_SMBUS` |
| |
| API Reference |
| ************* |
| |
| .. doxygengroup:: smbus_interface |
| |
| .. _SMBus Specification: http://smbus.org/specs/smbus20.pdf |