no-OS
Loading...
Searching...
No Matches
linux_i2c.c File Reference

Implementation of Linux platform I2C Driver. More...

#include "no_os_error.h"
#include "no_os_i2c.h"
#include "no_os_alloc.h"
#include "linux_i2c.h"
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
Include dependency graph for linux_i2c.c:

Classes

struct  linux_i2c_desc
 Linux platform specific I2C descriptor. More...
 

Functions

int linux_i2c_add_msg (struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t read)
 Add I2C messages for a combined I2C R/W transaction.
 
int linux_i2c_send_msg (struct no_os_i2c_desc *desc)
 Send a combined I2C R/W transaction with only one stop bit.
 
int linux_i2c_init (struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
 Initialize the I2C communication peripheral.
 
int linux_i2c_remove (struct no_os_i2c_desc *desc)
 Free the resources allocated by no_os_i2c_init().
 
int linux_i2c_write (struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
 Write data to a slave device.
 
int linux_i2c_read (struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
 Read data from a slave device.
 

Variables

const struct no_os_i2c_platform_ops linux_i2c_ops
 Linux platform specific I2C platform ops structure.
 

Detailed Description

Implementation of Linux platform I2C Driver.

Author
Dragos Bogdan (drago.nosp@m.s.bo.nosp@m.gdan@.nosp@m.anal.nosp@m.og.co.nosp@m.m)
Rene Arthur Necesito (Renea.nosp@m.rthu.nosp@m.r.Nec.nosp@m.esit.nosp@m.o@ana.nosp@m.log..nosp@m.com)

Copyright 2020, 2025(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Function Documentation

◆ linux_i2c_add_msg()

int linux_i2c_add_msg ( struct no_os_i2c_desc * desc,
uint8_t * data,
uint8_t bytes_number,
uint8_t read )

Add I2C messages for a combined I2C R/W transaction.

Parameters
desc- The I2C descriptor.
data- Buffer that stores the received/transmission data.
bytes_number- Number of bytes to read/write.
read- 0 to write, otherwise read.
Returns
0 in case of success.

◆ linux_i2c_init()

int linux_i2c_init ( struct no_os_i2c_desc ** desc,
const struct no_os_i2c_init_param * param )

Initialize the I2C communication peripheral.

Parameters
desc- The I2C descriptor.
param- The structure that contains the I2C parameters.
Returns
0 in case of success, -1 otherwise.

◆ linux_i2c_read()

int linux_i2c_read ( struct no_os_i2c_desc * desc,
uint8_t * data,
uint8_t bytes_number,
uint8_t stop_bit )

Read data from a slave device.

Parameters
desc- The I2C descriptor.
data- Buffer that will store the received data.
bytes_number- Number of bytes to read.
stop_bit- Stop condition control. Example: 0 - A stop condition will not be generated; 1 - A stop condition will be generated.
Returns
0 in case of success, -1 otherwise.

◆ linux_i2c_remove()

int linux_i2c_remove ( struct no_os_i2c_desc * desc)

Free the resources allocated by no_os_i2c_init().

Parameters
desc- The I2C descriptor.
Returns
0 in case of success, -1 otherwise.

◆ linux_i2c_send_msg()

int linux_i2c_send_msg ( struct no_os_i2c_desc * desc)

Send a combined I2C R/W transaction with only one stop bit.

Parameters
desc- The I2C descriptor.
Returns
0 in case of success, -1 otherwise.

◆ linux_i2c_write()

int linux_i2c_write ( struct no_os_i2c_desc * desc,
uint8_t * data,
uint8_t bytes_number,
uint8_t stop_bit )

Write data to a slave device.

Parameters
desc- The I2C descriptor.
data- Buffer that stores the transmission data.
bytes_number- Number of bytes to write.
stop_bit- Stop condition control. Example: 0 - A stop condition will not be generated; 1 - A stop condition will be generated.
Returns
0 in case of success, -1 otherwise.

Variable Documentation

◆ linux_i2c_ops

const struct no_os_i2c_platform_ops linux_i2c_ops
Initial value:
= {
.i2c_ops_init = &linux_i2c_init,
.i2c_ops_write = &linux_i2c_write,
.i2c_ops_read = &linux_i2c_read,
.i2c_ops_remove = &linux_i2c_remove
}
int linux_i2c_read(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
Read data from a slave device.
Definition linux_i2c.c:229
int linux_i2c_remove(struct no_os_i2c_desc *desc)
Free the resources allocated by no_os_i2c_init().
Definition linux_i2c.c:166
int linux_i2c_write(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
Write data to a slave device.
Definition linux_i2c.c:195
int linux_i2c_init(struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
Initialize the I2C communication peripheral.
Definition linux_i2c.c:119

Linux platform specific I2C platform ops structure.

Linux specific I2C platform ops structure.