1.. _smbus_api: 2 3System Management Bus (SMBus) 4############################# 5 6.. contents:: 7 :local: 8 :depth: 2 9 10Overview 11******** 12 13System Management Bus (SMBus) is derived from I2C for communication 14with devices on the motherboard. A system may use SMBus to communicate 15with the peripherals on the motherboard without using dedicated control 16lines. SMBus peripherals can provide various manufacturer information, 17report errors, accept control parameters, etc. 18 19Devices on the bus can operate in three roles: as a Controller that 20initiates transactions and controls the clock, a Peripheral that 21responds to transaction commands, or a Host, which is a specialized 22Controller, that provides the main interface to the system's CPU. 23Zephyr has API for the Controller role. 24 25SMBus peripheral devices can initiate communication with Controller 26with two methods: 27 28* **Host Notify protocol**: Peripheral device that supports the Host Notify 29 protocol behaves as a Controller to perform the notification. It writes 30 a three-bytes message to a special address "SMBus Host (0x08)" with own 31 address and two bytes of relevant data. 32* **SMBALERT# signal**: Peripheral device uses special signal SMBALERT# to 33 request attention from the Controller. The Controller needs to read one byte 34 from the special "SMBus Alert Response Address (ARA) (0x0c)". The peripheral 35 device responds with a data byte containing its own address. 36 37Currently, the API is based on `SMBus Specification`_ version 2.0 38 39.. note:: 40 See :ref:`coding_guideline_inclusive_language` for information about 41 the terminology used in this API. 42 43.. _smbus-controller-api: 44 45SMBus Controller API 46******************** 47 48Zephyr's SMBus controller API is used when an SMBus device controls the bus, 49particularly the start and stop conditions and the clock. This is 50the most common mode used to interact with SMBus peripherals. 51 52Configuration Options 53********************* 54 55Related configuration options: 56 57* :kconfig:option:`CONFIG_SMBUS` 58 59API Reference 60************* 61 62.. doxygengroup:: smbus_interface 63 64.. _SMBus Specification: http://smbus.org/specs/smbus20.pdf 65