Commit d9f890bf authored by Vinayak Kariappa Chettimada's avatar Vinayak Kariappa Chettimada Committed by Fabio Baltieri
Browse files

Bluetooth: Controller: Defines for radio timer capture/compare indices

Add defines for radio timer capture and compare indices used
in the nRF Radio HAL implementation.

Signed-off-by: default avatarVinayak Kariappa Chettimada <vich@nordicsemi.no>
parent 7db7edae
Loading
Loading
Loading
Loading
+15 −14
Changes for subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c: 15 added lines, 14 removed lines.
Original line number Diff line number Diff line
@@ -620,7 +620,7 @@ uint32_t radio_is_done(void)
		 * Note: this depends on the function being called exactly once
		 * in the ISR function.
		 */
		last_pdu_end_us += EVENT_TIMER->CC[2];
		last_pdu_end_us += EVENT_TIMER->CC[HAL_EVENT_TIMER_TRX_END_CC_OFFSET];
		return 1;
	} else {
		return 0;
@@ -1362,7 +1362,7 @@ uint32_t radio_tmr_start(uint8_t trx, uint32_t ticks_start, uint32_t remainder)
	EVENT_TIMER->PRESCALER = HAL_EVENT_TIMER_PRESCALER_VALUE;
	EVENT_TIMER->BITMODE = 2;	/* 24 - bit */

	nrf_timer_cc_set(EVENT_TIMER, 0, remainder);
	nrf_timer_cc_set(EVENT_TIMER, HAL_EVENT_TIMER_TRX_CC_OFFSET, remainder);

#if defined(CONFIG_BT_CTLR_NRF_GRTC)
	uint32_t cntr_l, cntr_h, cntr_h_overflow, stale;
@@ -1486,7 +1486,7 @@ uint32_t radio_tmr_start_tick(uint8_t trx, uint32_t ticks_start)
	nrf_timer_task_trigger(EVENT_TIMER, NRF_TIMER_TASK_STOP);
	nrf_timer_task_trigger(EVENT_TIMER, NRF_TIMER_TASK_CLEAR);

	nrf_timer_cc_set(EVENT_TIMER, 0, remainder_us);
	nrf_timer_cc_set(EVENT_TIMER, HAL_EVENT_TIMER_TRX_CC_OFFSET, remainder_us);

#if defined(CONFIG_BT_CTLR_NRF_GRTC)
	uint32_t cntr_l, cntr_h, cntr_h_overflow, stale;
@@ -1624,15 +1624,15 @@ uint32_t radio_tmr_start_us(uint8_t trx, uint32_t start_us)
		actual_us += latency_us;
#endif /* !CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER */

		nrf_timer_event_clear(EVENT_TIMER, NRF_TIMER_EVENT_COMPARE0);
		nrf_timer_cc_set(EVENT_TIMER, 0, actual_us);
		nrf_timer_event_clear(EVENT_TIMER, HAL_EVENT_TIMER_TRX_EVENT);
		nrf_timer_cc_set(EVENT_TIMER, HAL_EVENT_TIMER_TRX_CC_OFFSET, actual_us);

		/* Capture the current time */
		nrf_timer_task_trigger(EVENT_TIMER,
				       HAL_EVENT_TIMER_SAMPLE_TASK);
		nrf_timer_task_trigger(EVENT_TIMER, HAL_EVENT_TIMER_SAMPLE_TASK);

		now_us = EVENT_TIMER->CC[HAL_EVENT_TIMER_SAMPLE_CC_OFFSET];
	} while ((now_us > start_us) && (EVENT_TIMER->EVENTS_COMPARE[0] == 0U));
	} while ((now_us > start_us) &&
		 (EVENT_TIMER->EVENTS_COMPARE[HAL_EVENT_TIMER_TRX_CC_OFFSET] == 0U));

	return actual_us;
}
@@ -1688,7 +1688,7 @@ void radio_tmr_stop(void)

void radio_tmr_hcto_configure(uint32_t hcto)
{
	nrf_timer_cc_set(EVENT_TIMER, 1, hcto);
	nrf_timer_cc_set(EVENT_TIMER, HAL_EVENT_TIMER_HCTO_CC_OFFSET, hcto);

	hal_radio_recv_timeout_cancel_ppi_config();
	hal_radio_disable_on_hcto_ppi_config();
@@ -1708,7 +1708,7 @@ void radio_tmr_aa_capture(void)

uint32_t radio_tmr_aa_get(void)
{
	return EVENT_TIMER->CC[1];
	return EVENT_TIMER->CC[HAL_EVENT_TIMER_HCTO_CC_OFFSET];
}

static uint32_t radio_tmr_aa;
@@ -1726,7 +1726,7 @@ uint32_t radio_tmr_aa_restore(void)

uint32_t radio_tmr_ready_get(void)
{
	return EVENT_TIMER->CC[0];
	return EVENT_TIMER->CC[HAL_EVENT_TIMER_TRX_CC_OFFSET];
}

static uint32_t radio_tmr_ready;
@@ -1765,7 +1765,7 @@ uint32_t radio_tmr_end_get(void)
#if defined(CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER)
	return last_pdu_end_us;
#else /* !CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER */
	return EVENT_TIMER->CC[2];
	return EVENT_TIMER->CC[HAL_EVENT_TIMER_TRX_END_CC_OFFSET];
#endif /* !CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER */
}

@@ -1909,9 +1909,10 @@ void radio_gpio_lna_off(void)

void radio_gpio_pa_lna_enable(uint32_t trx_us)
{
	nrf_timer_cc_set(EVENT_TIMER, 2, trx_us);
	nrf_timer_cc_set(EVENT_TIMER, HAL_EVENT_TIMER_PA_LNA_CC_OFFSET, trx_us);
#if defined(HAL_RADIO_FEM_IS_NRF21540) && DT_NODE_HAS_PROP(FEM_NODE, pdn_gpios)
	nrf_timer_cc_set(EVENT_TIMER, 3, (trx_us - NRF_GPIO_PDN_OFFSET));
	nrf_timer_cc_set(EVENT_TIMER, HAL_EVENT_TIMER_PA_LNA_PDN_CC_OFFSET,
			 (trx_us - NRF_GPIO_PDN_OFFSET));
	hal_radio_nrf_ppi_channels_enable(BIT(HAL_ENABLE_PALNA_PPI) |
					  BIT(HAL_DISABLE_PALNA_PPI) |
					  BIT(HAL_ENABLE_FEM_PPI) |
+48 −0
Changes for subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio_nrf5_resources.h: 48 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -25,9 +25,21 @@
 */
#define NRF_RADIO_SHORTS_TRX_END_DISABLE_Msk HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk

#define HAL_EVENT_TIMER_TRX_CC_OFFSET          0
#define HAL_EVENT_TIMER_TRX_EVENT              NRF_TIMER_EVENT_COMPARE0

#define HAL_EVENT_TIMER_HCTO_CC_OFFSET         1
#define HAL_EVENT_TIMER_TRX_END_CC_OFFSET      2

#define HAL_EVENT_TIMER_DEFERRED_TRX_CC_OFFSET 2
#define HAL_EVENT_TIMER_DEFERRED_TX_EVENT      NRF_TIMER_EVENT_COMPARE2

#define HAL_EVENT_TIMER_SAMPLE_CC_OFFSET       3
#define HAL_EVENT_TIMER_SAMPLE_TASK            NRF_TIMER_TASK_CAPTURE3

#define HAL_EVENT_TIMER_PA_LNA_CC_OFFSET       2
#define HAL_EVENT_TIMER_PA_LNA_PDN_CC_OFFSET   3

#else /* !CONFIG_BT_CTLR_TIFS_HW */
#if defined(CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER)
#define EVENT_TIMER_ID 4
@@ -56,9 +68,21 @@
 */
#define NRF_RADIO_SHORTS_TRX_END_DISABLE_Msk HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk

#define HAL_EVENT_TIMER_TRX_CC_OFFSET          0
#define HAL_EVENT_TIMER_TRX_EVENT              NRF_TIMER_EVENT_COMPARE0

#define HAL_EVENT_TIMER_HCTO_CC_OFFSET         1
#define HAL_EVENT_TIMER_TRX_END_CC_OFFSET      2

#define HAL_EVENT_TIMER_DEFERRED_TRX_CC_OFFSET 2
#define HAL_EVENT_TIMER_DEFERRED_TX_EVENT      NRF_TIMER_EVENT_COMPARE2

#define HAL_EVENT_TIMER_SAMPLE_CC_OFFSET       2
#define HAL_EVENT_TIMER_SAMPLE_TASK            NRF_TIMER_TASK_CAPTURE2

#define HAL_EVENT_TIMER_PA_LNA_CC_OFFSET       2
#define HAL_EVENT_TIMER_PA_LNA_PDN_CC_OFFSET   3

#else /* !CONFIG_BT_CTLR_PHY_CODED */
#define SW_SWITCH_TIMER_EVTS_COMP_BASE 4

@@ -73,8 +97,20 @@
 */
#define NRF_RADIO_SHORTS_TRX_END_DISABLE_Msk HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk

#define HAL_EVENT_TIMER_TRX_CC_OFFSET          0
#define HAL_EVENT_TIMER_TRX_EVENT              NRF_TIMER_EVENT_COMPARE0

#define HAL_EVENT_TIMER_HCTO_CC_OFFSET         1
#define HAL_EVENT_TIMER_TRX_END_CC_OFFSET      2

#define HAL_EVENT_TIMER_DEFERRED_TRX_CC_OFFSET 2
#define HAL_EVENT_TIMER_DEFERRED_TX_EVENT      NRF_TIMER_EVENT_COMPARE2

#define HAL_EVENT_TIMER_SAMPLE_CC_OFFSET       3
#define HAL_EVENT_TIMER_SAMPLE_TASK            NRF_TIMER_TASK_CAPTURE3

#define HAL_EVENT_TIMER_PA_LNA_CC_OFFSET       2
#define HAL_EVENT_TIMER_PA_LNA_PDN_CC_OFFSET   3
#endif /* !CONFIG_BT_CTLR_PHY_CODED */

#else /* !CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER */
@@ -142,7 +178,19 @@
#define NRF_RADIO_SHORTS_TRX_END_DISABLE_Msk HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk
#endif /* !CONFIG_BT_CTLR_DF */

#define HAL_EVENT_TIMER_TRX_CC_OFFSET          0
#define HAL_EVENT_TIMER_TRX_EVENT              NRF_TIMER_EVENT_COMPARE0

#define HAL_EVENT_TIMER_HCTO_CC_OFFSET         1
#define HAL_EVENT_TIMER_TRX_END_CC_OFFSET      2

#define HAL_EVENT_TIMER_DEFERRED_TRX_CC_OFFSET 2
#define HAL_EVENT_TIMER_DEFERRED_TX_EVENT      NRF_TIMER_EVENT_COMPARE2

#define HAL_EVENT_TIMER_SAMPLE_CC_OFFSET       3
#define HAL_EVENT_TIMER_SAMPLE_TASK            NRF_TIMER_TASK_CAPTURE3

#define HAL_EVENT_TIMER_PA_LNA_CC_OFFSET       2
#define HAL_EVENT_TIMER_PA_LNA_PDN_CC_OFFSET   3
#endif /* !CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER */
#endif /* !CONFIG_BT_CTLR_TIFS_HW */