Remove full-duplex support for RFFC5071

This eliminates unnecessary disable/enable cycles for our half-duplex
RFFC5072.
This commit is contained in:
Michael Ossmann
2026-01-24 11:38:20 -05:00
parent afb42968c9
commit 19d00fb5f9
5 changed files with 5 additions and 72 deletions

View File

@@ -115,36 +115,6 @@ uint64_t mixer_set_frequency(mixer_driver_t* const mixer, uint64_t hz)
#endif
}
void mixer_tx(mixer_driver_t* const mixer)
{
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)
rffc5071_tx(mixer);
#endif
#ifdef RAD1O
(void) mixer;
#endif
}
void mixer_rx(mixer_driver_t* const mixer)
{
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)
rffc5071_rx(mixer);
#endif
#ifdef RAD1O
(void) mixer;
#endif
}
void mixer_rxtx(mixer_driver_t* const mixer)
{
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)
rffc5071_rxtx(mixer);
#endif
#ifdef RAD1O
(void) mixer;
#endif
}
void mixer_enable(mixer_driver_t* const mixer)
{
#if (defined JAWBREAKER || defined HACKRF_ONE || defined PRALINE)

View File

@@ -40,11 +40,6 @@ extern void mixer_setup(mixer_driver_t* const mixer);
/* Set frequency (Hz). */
extern uint64_t mixer_set_frequency(mixer_driver_t* const mixer, uint64_t hz);
/* Set up rx only, tx only, or full duplex. Chip should be disabled
* before _tx, _rx, or _rxtx are called. */
extern void mixer_tx(mixer_driver_t* const mixer);
extern void mixer_rx(mixer_driver_t* const mixer);
extern void mixer_rxtx(mixer_driver_t* const mixer);
extern void mixer_enable(mixer_driver_t* const mixer);
extern void mixer_disable(mixer_driver_t* const mixer);
extern void mixer_set_gpo(mixer_driver_t* const drv, uint8_t gpo);

View File

@@ -477,7 +477,6 @@ void rf_path_set_direction(rf_path_t* const rf_path, const rf_path_direction_t d
/* TX amplifier is in path, be sure to enable TX amplifier. */
rf_path->switchctrl &= ~SWITCHCTRL_NO_TX_AMP_PWR;
}
mixer_tx(&mixer);
if (rf_path->switchctrl & SWITCHCTRL_MIX_BYPASS) {
mixer_disable(&mixer);
} else {
@@ -500,7 +499,6 @@ void rf_path_set_direction(rf_path_t* const rf_path, const rf_path_direction_t d
/* RX amplifier is in path, be sure to enable RX amplifier. */
rf_path->switchctrl &= ~SWITCHCTRL_NO_RX_AMP_PWR;
}
mixer_rx(&mixer);
if (rf_path->switchctrl & SWITCHCTRL_MIX_BYPASS) {
mixer_disable(&mixer);
} else {
@@ -620,4 +618,4 @@ void rf_path_set_antenna(rf_path_t* const rf_path, const uint_fast8_t enable)
switchctrl_set(rf_path, rf_path->switchctrl);
hackrf_ui()->set_antenna_bias(enable);
}
}

View File

@@ -118,6 +118,10 @@ void rffc5071_setup(rffc5071_driver_t* const drv)
/* GPOs are active at all times */
set_RFFC5071_GATE(drv, 1);
/* mixer 2 used for both RX and TX */
set_RFFC5071_FULLD(drv, 0);
set_RFFC5071_MODE(drv, 1);
#if defined(PRALINE) || defined(HACKRF_ONE)
/* Enable GPO Lock output signal */
set_RFFC5071_LOCK(drv, 1);
@@ -223,35 +227,6 @@ void rffc5071_regs_commit(rffc5071_driver_t* const drv)
}
}
void rffc5071_tx(rffc5071_driver_t* const drv)
{
set_RFFC5071_ENBL(drv, 0);
set_RFFC5071_FULLD(drv, 0);
set_RFFC5071_MODE(drv, 1); /* mixer 2 used for both RX and TX */
rffc5071_regs_commit(drv);
}
void rffc5071_rx(rffc5071_driver_t* const drv)
{
set_RFFC5071_ENBL(drv, 0);
set_RFFC5071_FULLD(drv, 0);
set_RFFC5071_MODE(drv, 1); /* mixer 2 used for both RX and TX */
rffc5071_regs_commit(drv);
}
/*
* This function turns on both mixer (full-duplex) on the RFFC5071, but our
* current hardware designs do not support full-duplex operation.
*/
void rffc5071_rxtx(rffc5071_driver_t* const drv)
{
set_RFFC5071_ENBL(drv, 0);
set_RFFC5071_FULLD(drv, 1); /* mixer 1 and mixer 2 (RXTX) */
rffc5071_regs_commit(drv);
rffc5071_enable(drv);
}
void rffc5071_disable(rffc5071_driver_t* const drv)
{
set_RFFC5071_ENBL(drv, 0);

View File

@@ -62,11 +62,6 @@ extern void rffc5071_regs_commit(rffc5071_driver_t* const drv);
/* Set frequency (Hz). */
extern uint64_t rffc5071_set_frequency(rffc5071_driver_t* const drv, uint64_t hz);
/* Set up rx only, tx only, or full duplex. Chip should be disabled
* before _tx, _rx, or _rxtx are called. */
extern void rffc5071_tx(rffc5071_driver_t* const drv);
extern void rffc5071_rx(rffc5071_driver_t* const drv);
extern void rffc5071_rxtx(rffc5071_driver_t* const drv);
extern void rffc5071_enable(rffc5071_driver_t* const drv);
extern void rffc5071_disable(rffc5071_driver_t* const drv);