summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/drivers/net/ieee802154/dw3000_core.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/kernel/drivers/net/ieee802154/dw3000_core.c b/kernel/drivers/net/ieee802154/dw3000_core.c
index 0c2c7f6..4df0b41 100644
--- a/kernel/drivers/net/ieee802154/dw3000_core.c
+++ b/kernel/drivers/net/ieee802154/dw3000_core.c
@@ -1418,11 +1418,11 @@ static int dw3000_change_tx_rf_port(struct dw3000 *dw, bool use_rf2)
static int dw3000_change_rx_rf_port(struct dw3000 *dw, bool use_rf2)
{
int rc = 0;
- u32 val = DW3000_TXRXSWITCH_AUTO;
-
- if (use_rf2) {
- val |= DW3000_RF_SWITCH_RX_RF2;
- }
+ u32 val = DW3000_TXRXSWITCH_AUTO |
+ ((u32)use_rf2
+ << DW3000_RF_SWITCH_CTRL_ANT_TXRX_RXPORT_BIT_OFFSET) |
+ ((u32)use_rf2
+ << DW3000_RF_SWITCH_CTRL_ANT_TXRX_MODE_OVR_BIT_OFFSET);
rc = dw3000_reg_write32(dw, DW3000_RF_SWITCH_CTRL_ID, 0, val);
if (!rc)
dw->rx_rf2 = use_rf2;
@@ -6522,12 +6522,6 @@ int dw3000_set_rx_antennas(struct dw3000 *dw, int ant_set_id, bool pdoa_enabled,
port = ant_calib->port; /* Save port for later check */
if (((ant_calib->port == 1) || dw->rx_rf2) && ant_idx2 < 0) {
dw3000_change_rx_rf_port(dw, true);
- } else if (ant_calib->port == 1 && ant_idx2 > 0) {
- if (frame_idx == 5) {
- dw3000_change_rx_rf_port(dw, true);
- } else {
- dw3000_change_rx_rf_port(dw, false);
- }
} else {
dw3000_change_rx_rf_port(dw, false);
}