I2C: Interface: Rename init()->start(), add stop().

This commit is contained in:
Jared Boone
2014-11-13 10:32:38 -08:00
parent 28d629e099
commit 02cc5814b1
6 changed files with 25 additions and 11 deletions

View File

@ -38,13 +38,15 @@
i2c_bus_t i2c0 = {
.obj = (void*)I2C0_BASE,
.init = i2c_lpc_init,
.start = i2c_lpc_start,
.stop = i2c_lpc_stop,
.transfer = i2c_lpc_transfer,
};
i2c_bus_t i2c1 = {
.obj = (void*)I2C1_BASE,
.init = i2c_lpc_init,
.start = i2c_lpc_start,
.stop = i2c_lpc_stop,
.transfer = i2c_lpc_transfer,
};
@ -290,7 +292,7 @@ void cpu_clock_init(void)
/* use IRC as clock source for APB3 */
CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_CLK_SEL(CGU_SRC_IRC);
i2c_bus_init(clock_gen.bus, &i2c_config_si5351c_slow_clock);
i2c_bus_start(clock_gen.bus, &i2c_config_si5351c_slow_clock);
si5351c_disable_all_outputs(&clock_gen);
si5351c_disable_oeb_pin_control(&clock_gen);
@ -362,7 +364,7 @@ void cpu_clock_init(void)
//FIXME disable I2C
/* Kick I2C0 down to 400kHz when we switch over to APB1 clock = 204MHz */
i2c_bus_init(clock_gen.bus, &i2c_config_si5351c_fast_clock);
i2c_bus_start(clock_gen.bus, &i2c_config_si5351c_fast_clock);
/*
* 12MHz clock is entering LPC XTAL1/OSC input now. On

View File

@ -21,8 +21,12 @@
#include "i2c_bus.h"
void i2c_bus_init(i2c_bus_t* const bus, const void* const config) {
bus->init(bus, config);
void i2c_bus_start(i2c_bus_t* const bus, const void* const config) {
bus->start(bus, config);
}
void i2c_bus_stop(i2c_bus_t* const bus) {
bus->stop(bus);
}
void i2c_bus_transfer(

View File

@ -30,7 +30,8 @@ typedef struct i2c_bus_t i2c_bus_t;
struct i2c_bus_t {
void* const obj;
void (*init)(i2c_bus_t* const bus, const void* const config);
void (*start)(i2c_bus_t* const bus, const void* const config);
void (*stop)(i2c_bus_t* const bus);
void (*transfer)(
i2c_bus_t* const bus,
const uint_fast8_t slave_address,
@ -39,7 +40,8 @@ struct i2c_bus_t {
);
};
void i2c_bus_init(i2c_bus_t* const bus, const void* const config);
void i2c_bus_start(i2c_bus_t* const bus, const void* const config);
void i2c_bus_stop(i2c_bus_t* const bus);
void i2c_bus_transfer(
i2c_bus_t* const bus,
const uint_fast8_t slave_address,

View File

@ -26,13 +26,18 @@
/* FIXME return i2c0 status from each function */
void i2c_lpc_init(i2c_bus_t* const bus, const void* const _config) {
void i2c_lpc_start(i2c_bus_t* const bus, const void* const _config) {
const i2c_lpc_config_t* const config = _config;
const uint32_t port = (uint32_t)bus->obj;
i2c_init(port, config->duty_cycle_count);
}
void i2c_lpc_stop(i2c_bus_t* const bus) {
const uint32_t port = (uint32_t)bus->obj;
i2c_disable(port);
}
void i2c_lpc_transfer(i2c_bus_t* const bus,
const uint_fast8_t slave_address,
const uint8_t* const data_tx, const size_t count_tx,

View File

@ -31,7 +31,8 @@ typedef struct i2c_lpc_config_t {
const uint16_t duty_cycle_count;
} i2c_lpc_config_t;
void i2c_lpc_init(i2c_bus_t* const bus, const void* const config);
void i2c_lpc_start(i2c_bus_t* const bus, const void* const config);
void i2c_lpc_stop(i2c_bus_t* const bus);
void i2c_lpc_transfer(i2c_bus_t* const bus,
const uint_fast8_t slave_address,
const uint8_t* const data_tx, const size_t count_tx,