162 lines
3.1 KiB
C
162 lines
3.1 KiB
C
/*
|
|
* Copyright (c) 2016 - 2021, Broadcom
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef I2C_H
|
|
#define I2C_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define I2C_SPEED_100KHz 100000
|
|
#define I2C_SPEED_400KHz 400000
|
|
#define I2C_SPEED_DEFAULT I2C_SPEED_100KHz
|
|
|
|
/*
|
|
* Function Name: i2c_probe
|
|
*
|
|
* Description:
|
|
* This function probes the I2C bus for the existence of the specified
|
|
* device.
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* devaddr - Device Address
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_probe(uint32_t bus_id, uint8_t devaddr);
|
|
|
|
/*
|
|
* Function Name: i2c_init
|
|
*
|
|
* Description:
|
|
* This function initializes the SMBUS.
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* speed - I2C bus speed in Hz
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_init(uint32_t bus_id, int speed);
|
|
|
|
/*
|
|
* Function Name: i2c_set_bus_speed
|
|
*
|
|
* Description:
|
|
* This function configures the SMBUS speed
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* speed - I2C bus speed in Hz
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_set_bus_speed(uint32_t bus_id, uint32_t speed);
|
|
|
|
/*
|
|
* Function Name: i2c_get_bus_speed
|
|
*
|
|
* Description:
|
|
* This function returns the SMBUS speed.
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
*
|
|
* Return:
|
|
* Bus speed in Hz, 0 on failure
|
|
*/
|
|
uint32_t i2c_get_bus_speed(uint32_t bus_id);
|
|
|
|
/*
|
|
* Function Name: i2c_recv_byte
|
|
*
|
|
* Description:
|
|
* This function reads I2C data from a device without specifying
|
|
* a command regsiter.
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* devaddr - Device Address
|
|
* value - Data Read
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_recv_byte(uint32_t bus_id, uint8_t devaddr, uint8_t *value);
|
|
|
|
/*
|
|
* Function Name: i2c_send_byte
|
|
*
|
|
* Description:
|
|
* This function send I2C data to a device without specifying
|
|
* a command regsiter.
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* devaddr - Device Address
|
|
* value - Data Send
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_send_byte(uint32_t bus_id, uint8_t devaddr, uint8_t value);
|
|
|
|
/*
|
|
* Function Name: i2c_read
|
|
*
|
|
* Description:
|
|
* This function reads I2C data from a device with a designated
|
|
* command register
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* devaddr - Device Address
|
|
* addr - Register Offset
|
|
* alen - Address Length, 1 for byte, 2 for word (not supported)
|
|
* buffer - Data Buffer
|
|
* len - Data Length in bytes
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_read(uint32_t bus_id,
|
|
uint8_t devaddr,
|
|
uint32_t addr,
|
|
int alen,
|
|
uint8_t *buffer,
|
|
int len);
|
|
|
|
/*
|
|
* Function Name: i2c_write
|
|
*
|
|
* Description:
|
|
* This function write I2C data to a device with a designated
|
|
* command register
|
|
*
|
|
* Parameters:
|
|
* bus_id - I2C bus ID
|
|
* devaddr - Device Address
|
|
* addr - Register Offset
|
|
* alen - Address Length, 1 for byte, 2 for word (not supported)
|
|
* buffer - Data Buffer
|
|
* len - Data Length in bytes
|
|
*
|
|
* Return:
|
|
* 0 on success, or -1 on failure.
|
|
*/
|
|
int i2c_write(uint32_t bus_id,
|
|
uint8_t devaddr,
|
|
uint32_t addr,
|
|
int alen,
|
|
uint8_t *buffer,
|
|
int len);
|
|
|
|
|
|
#endif /* I2C_H */
|