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