Move LPC43xx I2C instances and configs to ipc_lpc.{c,h}.

This commit is contained in:
Martin Ling 2026-05-19 06:47:45 +01:00
parent 49bce311e2
commit 835e7b618a
10 changed files with 32 additions and 34 deletions

View file

@ -25,6 +25,7 @@
#include "hackrf_ui.h"
#include "i2c_bus.h"
#include "i2c_lpc.h"
#include "platform_detect.h"
#include "sgpio.h"
#include "si5351c.h"
@ -35,7 +36,7 @@
void clock_gen_init(void)
{
i2c_bus_start(si5351c.bus, &i2c_config_si5351c_fast_clock);
i2c_bus_start(si5351c.bus, &i2c_config_fast_clock);
si5351c_init(&si5351c);
si5351c_disable_all_outputs(&si5351c);
@ -119,7 +120,7 @@ void clock_gen_init(void)
void clock_gen_shutdown(void)
{
i2c_bus_start(si5351c.bus, &i2c_config_si5351c_fast_clock);
i2c_bus_start(si5351c.bus, &i2c_config_fast_clock);
si5351c_disable_all_outputs(&si5351c);
si5351c_disable_oeb_pin_control(&si5351c);
si5351c_power_down_all_clocks(&si5351c);

View file

@ -30,6 +30,7 @@
#include "delay.h"
#include "i2c_bus.h"
#include "i2c_lpc.h"
#include "si5351c.h"
/*
@ -113,7 +114,7 @@ void cpu_clock_init(void)
//FIXME disable I2C
/* Kick I2C0 down to 400kHz when we switch over to APB1 clock = 204MHz */
i2c_bus_start(si5351c.bus, &i2c_config_si5351c_fast_clock);
i2c_bus_start(si5351c.bus, &i2c_config_fast_clock);
/*
* 12MHz clock is entering LPC XTAL1/OSC input now.

View file

@ -23,6 +23,7 @@
#include "da7219.h"
#include "i2c_bus.h"
#include "i2c_lpc.h"
#define DA7219_REG_CHIP_ID1 0x81
#define DA7219_REG_CHIP_ID2 0x82

View file

@ -22,25 +22,6 @@
#include "i2c_bus.h"
#include <libopencm3/lpc43xx/memorymap.h>
#include "i2c_lpc.h"
/* Driver instances. */
i2c_bus_t i2c0 = {
.obj = (void*) I2C0_BASE,
.start = i2c_lpc_start,
.stop = i2c_lpc_stop,
.transfer = i2c_lpc_transfer,
};
i2c_bus_t i2c1 = {
.obj = (void*) I2C1_BASE,
.start = i2c_lpc_start,
.stop = i2c_lpc_stop,
.transfer = i2c_lpc_transfer,
};
void i2c_bus_start(i2c_bus_t* const bus, const void* const config)
{
bus->start(bus, config);

View file

@ -47,7 +47,3 @@ void i2c_bus_transfer(
const size_t tx_count,
uint8_t* const rx,
const size_t rx_count);
/* Driver instances. */
extern i2c_bus_t i2c0;
extern i2c_bus_t i2c1;

View file

@ -23,6 +23,26 @@
#include "i2c_lpc.h"
#include <libopencm3/lpc43xx/i2c.h>
#include <libopencm3/lpc43xx/memorymap.h>
/* Driver instances. */
i2c_bus_t i2c0 = {
.obj = (void*) I2C0_BASE,
.start = i2c_lpc_start,
.stop = i2c_lpc_stop,
.transfer = i2c_lpc_transfer,
};
i2c_bus_t i2c1 = {
.obj = (void*) I2C1_BASE,
.start = i2c_lpc_start,
.stop = i2c_lpc_stop,
.transfer = i2c_lpc_transfer,
};
const i2c_lpc_config_t i2c_config_fast_clock = {
.duty_cycle_count = 255,
};
/* FIXME return i2c0 status from each function */

View file

@ -42,3 +42,8 @@ void i2c_lpc_transfer(
uint8_t* const data_rx,
const size_t count_rx);
bool i2c_probe(i2c_bus_t* const bus, const uint_fast8_t device_address);
/* Driver instances. */
extern const i2c_lpc_config_t i2c_config_fast_clock;
extern i2c_bus_t i2c0;
extern i2c_bus_t i2c1;

View file

@ -29,6 +29,7 @@
#include "gpio.h"
#include "gpio_lpc.h"
#include "i2c_bus.h"
#include "i2c_lpc.h"
#include "operacake_sctimer.h"
#include "platform_scu.h"

View file

@ -40,12 +40,6 @@
#include "si5351c_regs.def"
/* Driver instance. */
// const i2c_lpc_config_t i2c_config_si5351c_slow_clock = {
// .duty_cycle_count = 15,
// };
const i2c_lpc_config_t i2c_config_si5351c_fast_clock = {
.duty_cycle_count = 255,
};
si5351c_driver_t si5351c = {
.bus = &i2c0,
.i2c_address = 0x60,

View file

@ -30,7 +30,6 @@ extern "C" {
#include <stdint.h>
#include "i2c_bus.h"
#include "i2c_lpc.h"
#define SI_INTDIV(x) (x * 128 - 512)
@ -141,7 +140,6 @@ void si5351c_set_phase(
const uint8_t offset);
/* Driver Instance. */
extern const i2c_lpc_config_t i2c_config_si5351c_fast_clock;
extern si5351c_driver_t si5351c;
#ifdef __cplusplus