4848#include "nrf_802154_trx_ppi_api.h"
4949#include "nrf_802154_utils.h"
5050
51+ #include <nrf_erratas.h>
5152#include "hal/nrf_egu.h"
5253#include "hal/nrf_radio.h"
5354#include "hal/nrf_timer.h"
@@ -764,11 +765,12 @@ static void device_config_254_apply_tx(void)
764765
765766#endif
766767
768+ #if defined(NRF5340_XXAA ) && !defined(CONFIG_SOC_SERIES_BSIM_NRFXX )
769+
767770/** @brief Applies ERRATA-117
768771 *
769772 * Shall be called after setting RADIO mode to NRF_RADIO_MODE_IEEE802154_250KBIT.
770773 */
771- #if defined(NRF5340_XXAA ) && !defined(CONFIG_SOC_SERIES_BSIM_NRFXX )
772774static void errata_117_apply (void )
773775{
774776 /* Register at 0x01FF0084. */
@@ -779,8 +781,7 @@ static void errata_117_apply(void)
779781 * p_radio_reg = ficr_reg ;
780782}
781783
782- static uint32_t m_pa_mod_filter_latched = 0 ;
783- static bool m_pa_mod_filter_is_latched = false;
784+ #endif /* defined(NRF5340_XXAA) && !defined(CONFIG_SOC_SERIES_BSIM_NRFXX)*/
784785
785786/** @brief Applies modulation fix when PA is used.
786787 *
@@ -791,7 +792,19 @@ static bool m_pa_mod_filter_is_latched = false;
791792 */
792793static void pa_modulation_fix_apply (bool enable )
793794{
794- volatile uint32_t * p_radio_reg = (volatile uint32_t * )(RADIO_BASE + 0x584UL );
795+ #if !defined(CONFIG_SOC_SERIES_BSIM_NRFXX )
796+ #if (defined(NRF5340_XXAA ) || defined(NRF54L_CONFIGURATION_56_ENABLE ))
797+ static uint32_t m_pa_mod_filter_latched = 0 ;
798+ static bool m_pa_mod_filter_is_latched = false;
799+ volatile uint32_t * p_radio_reg ;
800+
801+ #if defined(NRF5340_XXAA )
802+ p_radio_reg = (volatile uint32_t * )(RADIO_BASE + 0x584UL );
803+ #elif defined(NRF54L_CONFIGURATION_56_ENABLE )
804+ p_radio_reg = (volatile uint32_t * )(RADIO_BASE + 0x8C4UL );
805+ #else
806+ #error Unknown SoC
807+ #endif
795808
796809 if (enable )
797810 {
@@ -801,20 +814,29 @@ static void pa_modulation_fix_apply(bool enable)
801814
802815 if ((fem_caps .flags & MPSL_FEM_CAPS_FLAG_PA_SETUP_REQUIRED ) != 0 )
803816 {
817+ #if defined(NRF5340_XXAA )
804818 m_pa_mod_filter_latched = * (p_radio_reg );
805819 m_pa_mod_filter_is_latched = true;
806820 * (p_radio_reg ) = 0x40081B08 ;
821+ #elif defined(NRF54L_CONFIGURATION_56_ENABLE )
822+ // MLTPAN-56
823+ m_pa_mod_filter_latched = * (p_radio_reg );
824+ m_pa_mod_filter_is_latched = true;
825+ * (p_radio_reg ) = 0x01280001ul ;
826+ #endif
807827 }
808828 }
809829 else if (m_pa_mod_filter_is_latched )
810830 {
811831 * (p_radio_reg ) = m_pa_mod_filter_latched ;
812832 m_pa_mod_filter_is_latched = false;
813833 }
834+ #endif /* (defined(NRF5340_XXAA) || defined(NRF54L_CONFIGURATION_56_ENABLE)) */
835+ #else /* !defined(CONFIG_SOC_SERIES_BSIM_NRFXX) */
836+ (void )enable ;
837+ #endif /* !defined(CONFIG_SOC_SERIES_BSIM_NRFXX) */
814838}
815839
816- #endif
817-
818840void nrf_802154_trx_module_reset (void )
819841{
820842 m_trx_state = TRX_STATE_DISABLED ;
@@ -890,9 +912,10 @@ void nrf_802154_trx_enable(void)
890912#if defined(NRF5340_XXAA ) && !defined(CONFIG_SOC_SERIES_BSIM_NRFXX )
891913 // Apply ERRATA-117 after setting RADIO mode to NRF_RADIO_MODE_IEEE802154_250KBIT.
892914 errata_117_apply ();
893- pa_modulation_fix_apply (true);
894915#endif
895916
917+ pa_modulation_fix_apply (true);
918+
896919 memset (& packet_conf , 0 , sizeof (packet_conf ));
897920 packet_conf .lflen = 8 ;
898921 packet_conf .plen = NRF_RADIO_PREAMBLE_LENGTH_32BIT_ZERO ;
@@ -1013,9 +1036,7 @@ void nrf_802154_trx_disable(void)
10131036
10141037 if (m_trx_state != TRX_STATE_DISABLED )
10151038 {
1016- #if defined(NRF5340_XXAA ) && !defined(CONFIG_SOC_SERIES_BSIM_NRFXX )
10171039 pa_modulation_fix_apply (false);
1018- #endif
10191040
10201041#if defined(RADIO_POWER_POWER_Msk )
10211042 nrf_radio_power_set (NRF_RADIO , false);
0 commit comments