Bridle API 4.1.99
A Zephyr based application framework
Loading...
Searching...
No Matches
sc18is604.h File Reference

MFD Interface for an SC18IM604 bridge. More...

#include <stddef.h>
#include <stdint.h>
#include <zephyr/device.h>
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

Go to the source code of this file.

Macros

#define SC18IS604_CMD_WRITE_I2C   0x00
 
#define SC18IS604_CMD_READ_I2C   0x01
 
#define SC18IS604_CMD_READ_AFTER_WRITE_I2C   0x02
 
#define SC18IS604_CMD_WRITE_AFTER_WRITE_I2C   0x03
 
#define SC18IS604_CMD_READ_BUFFER   0x06
 
#define SC18IS604_CMD_SPI_CONFIG   0x18
 
#define SC18IS604_CMD_WRITE_REGISTER   0x20
 
#define SC18IS604_CMD_READ_REGISTER   0x21
 
#define SC18IS604_CMD_POWER_DOWN   0x30
 
#define SC18IS604_CMD_POWER_DOWN_KEY1   0x5A
 
#define SC18IS604_CMD_POWER_DOWN_KEY2   0xA5
 
#define SC18IS604_CMD_VERSION_STRING   0xFE
 
#define SC18IS604_VERSION_STRING_SIZE   16
 
#define SC18IS604_REG_IO_CONFIG   0x00
 
#define SC18IS604_REG_IO_STATE   0x01
 
#define SC18IS604_REG_I2C_CLOCK   0x02
 
#define SC18IS604_REG_I2C_TIMEOUT   0x03
 
#define SC18IS604_REG_I2C_STATUS   0x04
 
#define SC18IS604_REG_I2C_ADDRESS   0x05
 
#define SC18IS604_IO_NUM_PINS_INOUT   4
 
#define SC18IS604_IO_NUM_PINS_IONLY   1
 
#define SC18IS604_IO_NUM_PINS_MAX
 
#define SC18IS604_IO_CONFIG_INPUT   0b00
 
#define SC18IS604_IO_CONFIG_PUSH_PULL   0b10
 
#define SC18IS604_IO_CONFIG_OPEN_DRAIN   0b11
 
#define SC18IS604_I2C_STATUS_SUCCESS   0xF0
 
#define SC18IS604_I2C_STATUS_DEVICE_ADDR_NACK   0xF1
 
#define SC18IS604_I2C_STATUS_BYTE_NACK   0xF2
 
#define SC18IS604_I2C_STATUS_BUSY   0xF3
 
#define SC18IS604_I2C_CLOCK_99KHZ   19
 
#define SC18IS604_I2C_CLOCK_375KHZ   5
 
#define READ_SC18IS604_REG(dev, reg, val)    mfd_sc18is604_read_register((dev), SC18IS604_REG_##reg, (val));
 
#define WRITE_SC18IS604_REG(dev, reg, val)    mfd_sc18is604_write_register((dev), SC18IS604_REG_##reg, (val));
 

Functions

int mfd_sc18is604_transfer (const struct device *dev, uint8_t *cmd, size_t cmd_len, uint8_t *tx_data, size_t tx_len, uint8_t *rx_data, size_t rx_len)
 Perform a data transfer to and from an SC18IS604 device.
 
int mfd_sc18is604_read_register (const struct device *dev, uint8_t reg, uint8_t *val)
 Write to an internal register.
 
int mfd_sc18is604_write_register (const struct device *dev, uint8_t reg, uint8_t val)
 Read from an internal register.
 
int mfd_sc18is604_read_buffer (const struct device *dev, uint8_t *data, size_t len)
 Read data from the internal buffer of an SC18IS604.
 
int mfd_sc18is604_add_callback (const struct device *dev, struct gpio_callback *callback)
 Register an interrupt callback.
 
int mfd_sc18is604_remove_callback (const struct device *dev, struct gpio_callback *callback)
 Remove a previously registered interrupt callback.
 
int mfd_sc18is604_claim (const struct device *dev, k_timeout_t timeout)
 Claim a lock on an SC18IS604 device, preventing other users from accessing the device until the lock is released.
 
void mfd_sc18is604_release (const struct device *dev)
 Release a previously acquired lock on an SC18IS604 device.
 

Detailed Description

MFD Interface for an SC18IM604 bridge.

Macro Definition Documentation

◆ SC18IS604_CMD_POWER_DOWN

#define SC18IS604_CMD_POWER_DOWN   0x30

◆ SC18IS604_CMD_POWER_DOWN_KEY1

#define SC18IS604_CMD_POWER_DOWN_KEY1   0x5A

◆ SC18IS604_CMD_POWER_DOWN_KEY2

#define SC18IS604_CMD_POWER_DOWN_KEY2   0xA5

◆ SC18IS604_CMD_READ_AFTER_WRITE_I2C

#define SC18IS604_CMD_READ_AFTER_WRITE_I2C   0x02

◆ SC18IS604_CMD_READ_BUFFER

#define SC18IS604_CMD_READ_BUFFER   0x06

◆ SC18IS604_CMD_READ_I2C

#define SC18IS604_CMD_READ_I2C   0x01

◆ SC18IS604_CMD_READ_REGISTER

#define SC18IS604_CMD_READ_REGISTER   0x21

◆ SC18IS604_CMD_SPI_CONFIG

#define SC18IS604_CMD_SPI_CONFIG   0x18

◆ SC18IS604_CMD_VERSION_STRING

#define SC18IS604_CMD_VERSION_STRING   0xFE

◆ SC18IS604_CMD_WRITE_AFTER_WRITE_I2C

#define SC18IS604_CMD_WRITE_AFTER_WRITE_I2C   0x03

◆ SC18IS604_CMD_WRITE_I2C

#define SC18IS604_CMD_WRITE_I2C   0x00

◆ SC18IS604_CMD_WRITE_REGISTER

#define SC18IS604_CMD_WRITE_REGISTER   0x20

◆ SC18IS604_I2C_CLOCK_375KHZ

#define SC18IS604_I2C_CLOCK_375KHZ   5

◆ SC18IS604_I2C_CLOCK_99KHZ

#define SC18IS604_I2C_CLOCK_99KHZ   19

◆ SC18IS604_I2C_STATUS_BUSY

#define SC18IS604_I2C_STATUS_BUSY   0xF3

◆ SC18IS604_I2C_STATUS_BYTE_NACK

#define SC18IS604_I2C_STATUS_BYTE_NACK   0xF2

◆ SC18IS604_I2C_STATUS_DEVICE_ADDR_NACK

#define SC18IS604_I2C_STATUS_DEVICE_ADDR_NACK   0xF1

◆ SC18IS604_I2C_STATUS_SUCCESS

#define SC18IS604_I2C_STATUS_SUCCESS   0xF0

◆ SC18IS604_IO_CONFIG_INPUT

#define SC18IS604_IO_CONFIG_INPUT   0b00

◆ SC18IS604_IO_CONFIG_OPEN_DRAIN

#define SC18IS604_IO_CONFIG_OPEN_DRAIN   0b11

◆ SC18IS604_IO_CONFIG_PUSH_PULL

#define SC18IS604_IO_CONFIG_PUSH_PULL   0b10

◆ SC18IS604_IO_NUM_PINS_INOUT

#define SC18IS604_IO_NUM_PINS_INOUT   4

◆ SC18IS604_IO_NUM_PINS_IONLY

#define SC18IS604_IO_NUM_PINS_IONLY   1

◆ SC18IS604_IO_NUM_PINS_MAX

#define SC18IS604_IO_NUM_PINS_MAX
Value:
#define SC18IS604_IO_NUM_PINS_IONLY
Definition sc18is604.h:52
#define SC18IS604_IO_NUM_PINS_INOUT
Definition sc18is604.h:51

◆ SC18IS604_REG_I2C_ADDRESS

#define SC18IS604_REG_I2C_ADDRESS   0x05

◆ SC18IS604_REG_I2C_CLOCK

#define SC18IS604_REG_I2C_CLOCK   0x02

◆ SC18IS604_REG_I2C_STATUS

#define SC18IS604_REG_I2C_STATUS   0x04

◆ SC18IS604_REG_I2C_TIMEOUT

#define SC18IS604_REG_I2C_TIMEOUT   0x03

◆ SC18IS604_REG_IO_CONFIG

#define SC18IS604_REG_IO_CONFIG   0x00

◆ SC18IS604_REG_IO_STATE

#define SC18IS604_REG_IO_STATE   0x01

◆ SC18IS604_VERSION_STRING_SIZE

#define SC18IS604_VERSION_STRING_SIZE   16