diff --git a/drivers/at86rf2xx/at86rf2xx.c b/drivers/at86rf2xx/at86rf2xx.c index ee5626abcea7..2ec5254dff69 100644 --- a/drivers/at86rf2xx/at86rf2xx.c +++ b/drivers/at86rf2xx/at86rf2xx.c @@ -97,10 +97,6 @@ void at86rf2xx_reset(at86rf2xx_t *dev) at86rf2xx_set_option(dev, AT86RF2XX_OPT_CSMA, true); } - /* enable safe mode (protect RX FIFO until reading data starts) */ - at86rf2xx_reg_write(dev, AT86RF2XX_REG__TRX_CTRL_2, - AT86RF2XX_TRX_CTRL_2_MASK__RX_SAFE_MODE); - #if !AT86RF2XX_IS_PERIPH /* don't populate masked interrupt flags to IRQ_STATUS register */ tmp = at86rf2xx_reg_read(dev, AT86RF2XX_REG__TRX_CTRL_1); diff --git a/drivers/at86rf2xx/at86rf2xx_getset.c b/drivers/at86rf2xx/at86rf2xx_getset.c index 70cd8e5fa7b7..3df6626db1c9 100644 --- a/drivers/at86rf2xx/at86rf2xx_getset.c +++ b/drivers/at86rf2xx/at86rf2xx_getset.c @@ -166,11 +166,12 @@ void at86rf2xx_configure_phy(at86rf2xx_t *dev, uint8_t chan, uint8_t page, int16 (void) chan; (void) txpower; + uint8_t trx_ctrl2 = at86rf2xx_reg_read(dev, AT86RF2XX_REG__TRX_CTRL_2); + #if AT86RF2XX_HAVE_SUBGHZ /* The TX power register must be updated after changing the channel if * moving between bands. */ - uint8_t trx_ctrl2 = at86rf2xx_reg_read(dev, AT86RF2XX_REG__TRX_CTRL_2); uint8_t rf_ctrl0 = at86rf2xx_reg_read(dev, AT86RF2XX_REG__RF_CTRL_0); /* Clear previous configuration for PHY mode */ @@ -195,10 +196,14 @@ void at86rf2xx_configure_phy(at86rf2xx_t *dev, uint8_t chan, uint8_t page, int16 rf_ctrl0 |= AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__1DB; } - at86rf2xx_reg_write(dev, AT86RF2XX_REG__TRX_CTRL_2, trx_ctrl2); at86rf2xx_reg_write(dev, AT86RF2XX_REG__RF_CTRL_0, rf_ctrl0); #endif + /* enable safe mode (protect RX FIFO until reading data starts) */ + trx_ctrl2 |= AT86RF2XX_TRX_CTRL_2_MASK__RX_SAFE_MODE; + + at86rf2xx_reg_write(dev, AT86RF2XX_REG__TRX_CTRL_2, trx_ctrl2); + uint8_t phy_cc_cca = at86rf2xx_reg_read(dev, AT86RF2XX_REG__PHY_CC_CCA); /* Clear previous configuration for channel number */ phy_cc_cca &= ~(AT86RF2XX_PHY_CC_CCA_MASK__CHANNEL);