98#define TWI_XADDR_MASK (0xff)
103#define TWI_DATA_MASK (0xff)
108#define TWI_CTL_ACK (0x1 << 2)
110#define TWI_CTL_INTFLG (0x1 << 3)
111#define TWI_CTL_STP (0x1 << 4)
112#define TWI_CTL_STA (0x1 << 5)
114#define TWI_CTL_BUSEN (0x1 << 6)
115#define TWI_CTL_INTEN (0x1 << 7)
127#define TWI_CLK_DUTY_30_EN (0x1 << 8)
128#define TWI_CLK_DUTY (0x1 << 7)
129#define TWI_CLK_DIV_M (0xf << 3)
130#define TWI_CLK_DIV_N (0x7 << 0)
131#define TWI_LCR_WMASK (TWI_CTL_STA | TWI_CTL_STP | TWI_CTL_INTFLG)
134#define TWI_DEFAULT_CLK_RST_OFFSET(x) (x + 16)
135#define TWI_DEFAULT_CLK_GATE_OFFSET(x) (x)
u32_t uint32_t
Definition stdint.h:13
u8_t uint8_t
Definition stdint.h:7
Structure representing the GPIO configuration for I2C.
Definition sys-i2c.h:27
gpio_mux_t gpio_sda
GPIO configuration for the SDA line.
Definition sys-i2c.h:29
gpio_mux_t gpio_scl
GPIO configuration for the SCL line.
Definition sys-i2c.h:28
Structure representing an I2C device configuration.
Definition sys-i2c.h:39
uint32_t base
Base address of the I2C hardware registers.
Definition sys-i2c.h:40
uint8_t id
ID of the I2C device.
Definition sys-i2c.h:41
uint32_t speed
Desired I2C speed (in Hz).
Definition sys-i2c.h:42
bool status
Operational status of the I2C device.
Definition sys-i2c.h:45
sunxi_clk_t i2c_clk
Clock configuration for the I2C device.
Definition sys-i2c.h:44
sunxi_i2c_gpio_t gpio
GPIO configuration for the I2C lines.
Definition sys-i2c.h:43
Structure representing the registers of the Sunxi TWI (Two Wire Interface).
Definition sys-i2c.h:82
volatile uint32_t addr
Slave address register.
Definition sys-i2c.h:83
volatile uint32_t status
Status register for monitoring the I2C state.
Definition sys-i2c.h:87
volatile uint32_t srst
Soft reset register for resetting the I2C controller.
Definition sys-i2c.h:89
volatile uint32_t clk
Clock configuration register.
Definition sys-i2c.h:88
volatile uint32_t lcr
Line control register for managing line states.
Definition sys-i2c.h:91
volatile uint32_t dvfs
Dynamic Voltage and Frequency Scaling control register.
Definition sys-i2c.h:92
volatile uint32_t ctl
Control register for managing I2C operations.
Definition sys-i2c.h:86
volatile uint32_t xaddr
Extended address register.
Definition sys-i2c.h:84
volatile uint32_t eft
Enhanced future technology control register.
Definition sys-i2c.h:90
volatile uint32_t data
Data register for sending and receiving data.
Definition sys-i2c.h:85
@ SUNXI_I2C1
I2C device 1.
Definition sys-i2c.h:66
@ SUNXI_I2C0
I2C device 0.
Definition sys-i2c.h:65
@ SUNXI_I2C2
I2C device 2.
Definition sys-i2c.h:67
@ SUNXI_R_I2C1
Reserved I2C device 1.
Definition sys-i2c.h:72
@ SUNXI_I2C3
I2C device 3.
Definition sys-i2c.h:68
@ SUNXI_I2C4
I2C device 4.
Definition sys-i2c.h:69
@ SUNXI_R_I2C0
Reserved I2C device 0.
Definition sys-i2c.h:71
@ SUNXI_I2C5
I2C device 5.
Definition sys-i2c.h:70
@ SUNXI_I2C_BUS_MAX
Maximum number of I2C buses.
Definition sys-i2c.h:73
int sunxi_i2c_read(sunxi_i2c_t *i2c_dev, uint8_t addr, uint32_t reg, uint8_t *data)
sunxi_i2c read function
Definition sys-i2c.c:584
void sunxi_i2c_init(sunxi_i2c_t *i2c_dev)
Initialize I2C controller and bus.
Definition sys-i2c.c:762
@ SUNXI_I2C_SPEED_400K
400 kHz I2C speed.
Definition sys-i2c.h:55
@ SUNXI_I2C_SPEED_100K
100 kHz I2C speed.
Definition sys-i2c.h:54
int sunxi_i2c_write(sunxi_i2c_t *i2c_dev, uint8_t addr, uint32_t reg, uint8_t data)
sunxi_i2c write function
Definition sys-i2c.c:568