|
Zephyr API Documentation 4.3.0-rc1
A Scalable Open Source RTOS
|
Main header file for SMBus (System Management Bus) driver API. More...
#include <errno.h>#include <zephyr/sys/slist.h>#include <zephyr/types.h>#include <zephyr/device.h>#include <zephyr/stats/stats.h>#include <zephyr/syscalls/smbus.h>Go to the source code of this file.
Data Structures | |
| struct | smbus_callback |
| SMBus callback structure. More... | |
| struct | smbus_dt_spec |
| Complete SMBus DT information. More... | |
Macros | |
| #define | SMBUS_BLOCK_BYTES_MAX 32 |
| Maximum number of bytes in SMBus Block protocol. | |
| #define | SMBUS_DT_SPEC_GET(node_id) |
| Structure initializer for smbus_dt_spec from devicetree. | |
| #define | SMBUS_DT_SPEC_INST_GET(inst) |
| Structure initializer for smbus_dt_spec from devicetree instance. | |
| #define | SMBUS_DEVICE_DT_DEFINE(node_id, init_fn, pm_device, data_ptr, cfg_ptr, level, prio, api_ptr, ...) |
| Like DEVICE_DT_DEFINE() with SMBus specifics. | |
| #define | SMBUS_DEVICE_DT_INST_DEFINE(inst, ...) |
| Like SMBUS_DEVICE_DT_DEFINE() for an instance of a DT_DRV_COMPAT compatible. | |
SMBus Protocol commands | |
SMBus Specification defines the following SMBus protocols operations | |
| #define | SMBUS_CMD_QUICK 0b000 |
| SMBus Quick protocol is a very simple command with no data sent or received. | |
| #define | SMBUS_CMD_BYTE 0b001 |
| SMBus Byte protocol can send or receive one byte of data. | |
| #define | SMBUS_CMD_BYTE_DATA 0b010 |
| SMBus Byte Data protocol sends the first byte (command) followed by read or write one byte. | |
| #define | SMBUS_CMD_WORD_DATA 0b011 |
| SMBus Word Data protocol sends the first byte (command) followed by read or write two bytes. | |
| #define | SMBUS_CMD_PROC_CALL 0b100 |
| SMBus Process Call protocol is Write Word followed by Read Word. | |
| #define | SMBUS_CMD_BLOCK 0b101 |
| SMBus Block protocol reads or writes a block of data up to 32 bytes. | |
| #define | SMBUS_CMD_BLOCK_PROC 0b111 |
| SMBus Block Write - Block Read Process Call protocol is Block Write followed by Block Read. | |
SMBus device functionality | |
The following parameters describe the functionality of the SMBus device | |
| #define | SMBUS_MODE_CONTROLLER BIT(0) |
| Peripheral to act as Controller. | |
| #define | SMBUS_MODE_PEC BIT(1) |
| Support Packet Error Code (PEC) checking. | |
| #define | SMBUS_MODE_HOST_NOTIFY BIT(2) |
| Support Host Notify functionality. | |
| #define | SMBUS_MODE_SMBALERT BIT(3) |
| Support SMBALERT signal functionality. | |
SMBus special reserved addresses | |
The following addresses are reserved by SMBus specification | |
| #define | SMBUS_ADDRESS_ARA 0x0c |
| Alert Response Address (ARA) | |
Typedefs | |
| typedef void(* | smbus_callback_handler_t) (const struct device *dev, struct smbus_callback *cb, uint8_t addr) |
| Define SMBus callback handler function signature. | |
Enumerations | |
SMBus read / write direction | |
| enum | smbus_direction { SMBUS_MSG_WRITE = 0 , SMBUS_MSG_READ = 1 } |
| SMBus read / write direction. More... | |
Functions | |
| static void | smbus_xfer_stats (const struct device *dev, uint8_t sent, uint8_t recv) |
| Updates the SMBus stats. | |
| int | smbus_configure (const struct device *dev, uint32_t dev_config) |
| Configure operation of a SMBus host controller. | |
| int | smbus_get_config (const struct device *dev, uint32_t *dev_config) |
| Get configuration of a SMBus host controller. | |
| static int | smbus_smbalert_set_cb (const struct device *dev, struct smbus_callback *cb) |
| Add SMBUSALERT callback for a SMBus host controller. | |
| int | smbus_smbalert_remove_cb (const struct device *dev, struct smbus_callback *cb) |
| Remove SMBUSALERT callback from a SMBus host controller. | |
| static int | smbus_host_notify_set_cb (const struct device *dev, struct smbus_callback *cb) |
| Add Host Notify callback for a SMBus host controller. | |
| int | smbus_host_notify_remove_cb (const struct device *dev, struct smbus_callback *cb) |
| Remove Host Notify callback from a SMBus host controller. | |
| int | smbus_quick (const struct device *dev, uint16_t addr, enum smbus_direction direction) |
| Perform SMBus Quick operation. | |
| int | smbus_byte_write (const struct device *dev, uint16_t addr, uint8_t byte) |
| Perform SMBus Byte Write operation. | |
| int | smbus_byte_read (const struct device *dev, uint16_t addr, uint8_t *byte) |
| Perform SMBus Byte Read operation. | |
| int | smbus_byte_data_write (const struct device *dev, uint16_t addr, uint8_t cmd, uint8_t byte) |
| Perform SMBus Byte Data Write operation. | |
| int | smbus_byte_data_read (const struct device *dev, uint16_t addr, uint8_t cmd, uint8_t *byte) |
| Perform SMBus Byte Data Read operation. | |
| int | smbus_word_data_write (const struct device *dev, uint16_t addr, uint8_t cmd, uint16_t word) |
| Perform SMBus Word Data Write operation. | |
| int | smbus_word_data_read (const struct device *dev, uint16_t addr, uint8_t cmd, uint16_t *word) |
| Perform SMBus Word Data Read operation. | |
| int | smbus_pcall (const struct device *dev, uint16_t addr, uint8_t cmd, uint16_t send_word, uint16_t *recv_word) |
| Perform SMBus Process Call operation. | |
| int | smbus_block_write (const struct device *dev, uint16_t addr, uint8_t cmd, uint8_t count, uint8_t *buf) |
| Perform SMBus Block Write operation. | |
| int | smbus_block_read (const struct device *dev, uint16_t addr, uint8_t cmd, uint8_t *count, uint8_t *buf) |
| Perform SMBus Block Read operation. | |
| int | smbus_block_pcall (const struct device *dev, uint16_t addr, uint8_t cmd, uint8_t snd_count, uint8_t *snd_buf, uint8_t *rcv_count, uint8_t *rcv_buf) |
| Perform SMBus Block Process Call operation. | |
Main header file for SMBus (System Management Bus) driver API.