Skip to content

Commit ac7a017

Browse files
committed
host: bladerf2: undo double-MUTEX workaround on bladerf_*_rfic_*_fir
After the RFIC control split, we now directly call the rfic functions to get/set filters when changing the sample rate. So, we can go back to MUTEXing the API functions. This undos the changes in 9e8bd23 host: bladerf2: remove unneeded pre-declarations
1 parent ecc9acb commit ac7a017

File tree

1 file changed

+46
-82
lines changed
  • host/libraries/libbladeRF/src/board/bladerf2

1 file changed

+46
-82
lines changed

host/libraries/libbladeRF/src/board/bladerf2/bladerf2.c

Lines changed: 46 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,6 @@
6767
/******************************************************************************/
6868

6969
static int bladerf2_read_flash_vctcxo_trim(struct bladerf *dev, uint16_t *trim);
70-
static int bladerf2_get_rfic_rx_fir(struct bladerf *dev,
71-
bladerf_rfic_rxfir *rxfir);
72-
static int bladerf2_set_rfic_rx_fir(struct bladerf *dev,
73-
bladerf_rfic_rxfir rxfir);
74-
static int bladerf2_get_rfic_tx_fir(struct bladerf *dev,
75-
bladerf_rfic_txfir *txfir);
76-
static int bladerf2_set_rfic_tx_fir(struct bladerf *dev,
77-
bladerf_rfic_txfir txfir);
7870

7971

8072
/******************************************************************************/
@@ -2997,126 +2989,98 @@ int bladerf_get_rfic_ctrl_out(struct bladerf *dev, uint8_t *ctrl_out)
29972989
return 0;
29982990
}
29992991

3000-
static int bladerf2_get_rfic_rx_fir(struct bladerf *dev,
3001-
bladerf_rfic_rxfir *rxfir)
2992+
int bladerf_get_rfic_rx_fir(struct bladerf *dev, bladerf_rfic_rxfir *rxfir)
30022993
{
2994+
CHECK_BOARD_IS_BLADERF2(dev);
30032995
CHECK_BOARD_STATE(STATE_FPGA_LOADED);
30042996
NULL_CHECK(rxfir);
30052997

30062998
struct bladerf2_board_data *board_data = dev->board_data;
30072999
struct controller_fns const *rfic = board_data->rfic;
3000+
bladerf_channel const ch = BLADERF_CHANNEL_RX(0);
30083001

3009-
CHECK_STATUS(rfic->get_filter(dev, BLADERF_CHANNEL_RX(0), rxfir, NULL));
3002+
WITH_MUTEX(&dev->lock, {
3003+
CHECK_STATUS_LOCKED(rfic->get_filter(dev, ch, rxfir, NULL));
3004+
});
30103005

30113006
return 0;
30123007
}
30133008

3014-
static int bladerf2_set_rfic_rx_fir(struct bladerf *dev,
3015-
bladerf_rfic_rxfir rxfir)
3009+
int bladerf_set_rfic_rx_fir(struct bladerf *dev, bladerf_rfic_rxfir rxfir)
30163010
{
3011+
CHECK_BOARD_IS_BLADERF2(dev);
30173012
CHECK_BOARD_STATE(STATE_FPGA_LOADED);
30183013

30193014
struct bladerf2_board_data *board_data = dev->board_data;
30203015
struct controller_fns const *rfic = board_data->rfic;
3016+
struct bladerf_range const sr_range = bladerf2_sample_rate_range_4x;
3017+
bladerf_channel const ch = BLADERF_CHANNEL_RX(0);
30213018

3022-
/* Verify that sample rate is not too low */
3023-
if (rxfir != BLADERF_RFIC_RXFIR_DEC4) {
3024-
bladerf_sample_rate sr;
3019+
WITH_MUTEX(&dev->lock, {
3020+
/* Verify that sample rate is not too low */
3021+
if (rxfir != BLADERF_RFIC_RXFIR_DEC4) {
3022+
bladerf_sample_rate sr;
30253023

3026-
CHECK_STATUS(
3027-
dev->board->get_sample_rate(dev, BLADERF_CHANNEL_RX(0), &sr));
3024+
CHECK_STATUS_LOCKED(dev->board->get_sample_rate(dev, ch, &sr));
30283025

3029-
if (is_within_range(&bladerf2_sample_rate_range_4x, sr)) {
3030-
log_error("%s: invalid FIR filter: sample rate too low (%d < %d)\n",
3031-
__FUNCTION__, sr, bladerf2_sample_rate_range_4x.min);
3032-
return BLADERF_ERR_INVAL;
3026+
if (is_within_range(&sr_range, sr)) {
3027+
log_error("%s: sample rate too low for filter (%d < %d)\n",
3028+
__FUNCTION__, sr, sr_range.min);
3029+
MUTEX_UNLOCK(&dev->lock);
3030+
return BLADERF_ERR_INVAL;
3031+
}
30333032
}
3034-
}
30353033

3036-
CHECK_STATUS(rfic->set_filter(dev, BLADERF_CHANNEL_RX(0), rxfir, 0));
3034+
CHECK_STATUS_LOCKED(rfic->set_filter(dev, ch, rxfir, 0));
3035+
});
30373036

30383037
return 0;
30393038
}
30403039

3041-
static int bladerf2_get_rfic_tx_fir(struct bladerf *dev,
3042-
bladerf_rfic_txfir *txfir)
3040+
int bladerf_get_rfic_tx_fir(struct bladerf *dev, bladerf_rfic_txfir *txfir)
30433041
{
3042+
CHECK_BOARD_IS_BLADERF2(dev);
30443043
CHECK_BOARD_STATE(STATE_FPGA_LOADED);
30453044
NULL_CHECK(txfir);
30463045

30473046
struct bladerf2_board_data *board_data = dev->board_data;
30483047
struct controller_fns const *rfic = board_data->rfic;
3048+
bladerf_channel const ch = BLADERF_CHANNEL_TX(0);
30493049

3050-
CHECK_STATUS(rfic->get_filter(dev, BLADERF_CHANNEL_TX(0), NULL, txfir));
3050+
WITH_MUTEX(&dev->lock, {
3051+
CHECK_STATUS_LOCKED(rfic->get_filter(dev, ch, NULL, txfir));
3052+
});
30513053

30523054
return 0;
30533055
}
30543056

3055-
static int bladerf2_set_rfic_tx_fir(struct bladerf *dev,
3056-
bladerf_rfic_txfir txfir)
3057+
int bladerf_set_rfic_tx_fir(struct bladerf *dev, bladerf_rfic_txfir txfir)
30573058
{
3059+
CHECK_BOARD_IS_BLADERF2(dev);
30583060
CHECK_BOARD_STATE(STATE_FPGA_LOADED);
30593061

30603062
struct bladerf2_board_data *board_data = dev->board_data;
30613063
struct controller_fns const *rfic = board_data->rfic;
3064+
struct bladerf_range const sr_range = bladerf2_sample_rate_range_4x;
3065+
bladerf_channel const ch = BLADERF_CHANNEL_TX(0);
30623066

3063-
/* Verify that sample rate is not too low */
3064-
if (txfir != BLADERF_RFIC_TXFIR_INT4) {
3065-
bladerf_sample_rate sr;
3067+
WITH_MUTEX(&dev->lock, {
3068+
/* Verify that sample rate is not too low */
3069+
if (txfir != BLADERF_RFIC_TXFIR_INT4) {
3070+
bladerf_sample_rate sr;
30663071

3067-
CHECK_STATUS(
3068-
dev->board->get_sample_rate(dev, BLADERF_CHANNEL_TX(0), &sr));
3072+
CHECK_STATUS_LOCKED(dev->board->get_sample_rate(dev, ch, &sr));
30693073

3070-
if (is_within_range(&bladerf2_sample_rate_range_4x, sr)) {
3071-
log_error("%s: invalid FIR filter: sample rate too low (%d < %d)\n",
3072-
__FUNCTION__, sr, bladerf2_sample_rate_range_4x.min);
3073-
return BLADERF_ERR_INVAL;
3074+
if (is_within_range(&sr_range, sr)) {
3075+
log_error("%s: sample rate too low for filter (%d < %d)\n",
3076+
__FUNCTION__, sr, sr_range.min);
3077+
MUTEX_UNLOCK(&dev->lock);
3078+
return BLADERF_ERR_INVAL;
3079+
}
30743080
}
3075-
}
3076-
3077-
CHECK_STATUS(rfic->set_filter(dev, BLADERF_CHANNEL_TX(0), 0, txfir));
30783081

3079-
return 0;
3080-
}
3081-
3082-
/* mutex'd wrappers for above */
3083-
3084-
int bladerf_get_rfic_rx_fir(struct bladerf *dev, bladerf_rfic_rxfir *rxfir)
3085-
{
3086-
CHECK_BOARD_IS_BLADERF2(dev);
3087-
3088-
WITH_MUTEX(&dev->lock,
3089-
CHECK_STATUS_LOCKED(bladerf2_get_rfic_rx_fir(dev, rxfir)));
3090-
3091-
return 0;
3092-
}
3093-
3094-
int bladerf_set_rfic_rx_fir(struct bladerf *dev, bladerf_rfic_rxfir rxfir)
3095-
{
3096-
CHECK_BOARD_IS_BLADERF2(dev);
3097-
3098-
WITH_MUTEX(&dev->lock,
3099-
CHECK_STATUS_LOCKED(bladerf2_set_rfic_rx_fir(dev, rxfir)));
3100-
3101-
return 0;
3102-
}
3103-
3104-
int bladerf_get_rfic_tx_fir(struct bladerf *dev, bladerf_rfic_txfir *txfir)
3105-
{
3106-
CHECK_BOARD_IS_BLADERF2(dev);
3107-
3108-
WITH_MUTEX(&dev->lock,
3109-
CHECK_STATUS_LOCKED(bladerf2_get_rfic_tx_fir(dev, txfir)));
3110-
3111-
return 0;
3112-
}
3113-
3114-
int bladerf_set_rfic_tx_fir(struct bladerf *dev, bladerf_rfic_txfir txfir)
3115-
{
3116-
CHECK_BOARD_IS_BLADERF2(dev);
3117-
3118-
WITH_MUTEX(&dev->lock,
3119-
CHECK_STATUS_LOCKED(bladerf2_set_rfic_tx_fir(dev, txfir)));
3082+
CHECK_STATUS_LOCKED(rfic->set_filter(dev, ch, 0, txfir));
3083+
});
31203084

31213085
return 0;
31223086
}

0 commit comments

Comments
 (0)