37#include <sys/kernel.h>
39#include <sys/module.h>
43#include <machine/bus.h>
60 sc = device_get_softc(
dev);
70 sc = device_get_softc(
dev);
83 }
while ((status & bit) != 0 && --tries > 0);
85 return (tries == 0 ? -1: 0);
95 device_printf(
dev,
"read: Timeout waiting for TIP clear.\n");
109 device_printf(
dev,
"write: Timeout waiting for TIP clear.\n");
123 device_printf(
dev,
"write: I2C command ACK Error.\n");
135 sc = device_get_softc(
dev);
156 sc = device_get_softc(
dev);
167 "I2C write slave address [0x%x] failed.\n",
slave);
174 device_printf(
dev,
"I2C Bus Arbitration Lost, Aborting.\n");
209 sc = device_get_softc(
dev);
227 device_printf(
dev,
"I2C write slave offset failed.\n");
231 for (i = 1; i <
len; i++) {
235 device_printf(
dev,
"I2C write data byte %d failed.\n",
254 for (i = 0; i <
len; i++) {
260 "I2C read data byte %d failed.\n", i);
279 sc = device_get_softc(
dev);
devclass_t iicbus_devclass
devclass_t iicoc_devclass
static int iicoc_wr_ack_cmd(device_t dev, uint8_t data, uint8_t cmd)
static int iicoc_iicbus_start_common(device_t dev, u_char slave, int timeout, bool repeat)
int iicoc_iicbus_write(device_t dev, const char *buf, int len, int *sent, int timeout)
static int iicoc_rd_cmd(device_t dev, uint8_t cmd)
static int iicoc_wr_cmd(device_t dev, uint8_t data, uint8_t cmd)
int iicoc_iicbus_stop(device_t dev)
int iicoc_iicbus_reset(device_t dev, u_char speed, u_char addr, u_char *oldadr)
static int iicoc_dev_read(device_t dev, int reg)
int iicoc_iicbus_repeated_start(device_t dev, u_char slave, int timeout)
int iicoc_init(device_t dev)
DRIVER_MODULE(iicbus, iicoc, iicbus_driver, iicbus_devclass, 0, 0)
static int iicoc_wait_on_status(device_t dev, uint8_t bit)
int iicoc_iicbus_start(device_t dev, u_char slave, int timeout)
static void iicoc_dev_write(device_t dev, int reg, int value)
int iicoc_iicbus_read(device_t dev, char *buf, int len, int *read, int last, int delay)
#define OC_I2C_PRESCALE_HI_REG
#define OC_I2C_PRESCALE_LO_REG
#define OC_I2C_STATUS_REG
#define OC_COMMAND_RDNACK
struct resource * mem_res