1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
From 02cc5814b15dfc666d6a0bcdedaec4583a659550 Mon Sep 17 00:00:00 2001
From: Jared Boone <jboone@earfeast.com>
Date: Thu, 13 Nov 2014 10:32:38 -0800
Subject: [PATCH 43/68] I2C: Interface: Rename init()->start(), add stop().
---
firmware/common/hackrf_core.c | 10 ++++++----
firmware/common/i2c_bus.c | 8 ++++++--
firmware/common/i2c_bus.h | 6 ++++--
firmware/common/i2c_lpc.c | 7 ++++++-
firmware/common/i2c_lpc.h | 3 ++-
firmware/libopencm3 | 2 +-
6 files changed, 25 insertions(+), 11 deletions(-)
--- a/firmware/common/hackrf_core.c
+++ b/firmware/common/hackrf_core.c
@@ -45,13 +45,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,
};
@@ -381,7 +383,7 @@
/* 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);
@@ -453,7 +455,7 @@
//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
--- a/firmware/common/i2c_bus.c
+++ b/firmware/common/i2c_bus.c
@@ -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(
--- a/firmware/common/i2c_bus.h
+++ b/firmware/common/i2c_bus.h
@@ -30,7 +30,8 @@
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 @@
);
};
-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,
--- a/firmware/common/i2c_lpc.c
+++ b/firmware/common/i2c_lpc.c
@@ -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,
--- a/firmware/common/i2c_lpc.h
+++ b/firmware/common/i2c_lpc.h
@@ -31,7 +31,8 @@
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,
|