Skip to content

Commit b932880

Browse files
fimohameasmellby
authored andcommitted
simplicity_sdk: Patch exposing interrupt dispatch functions
Renamed and exposed non-blocking interrupt dispatch functions for both I2C leader and follower modes in sl_i2c.c and sli_i2c.h. This change eliminates redundant interrupt dispatch logic in the Zephyr driver by utilizing the SiSDK dispatch functions, thereby reducing ISR size and improving code maintainability for zephyr driver Upstream-Status: Pending Signed-off-by: S Mohamed Fiaz <[email protected]>
1 parent 6f0dc7c commit b932880

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

simplicity_sdk/platform/driver/i2c/src/sl_i2c.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ static sl_status_t i2c_get_peripheral_instance(I2C_TypeDef *i2c_base_addr, sl_pe
9191
static uint32_t get_current_time_ms(void);
9292
static sl_status_t i2c_leader_mode_blocking_state_machine(sli_i2c_instance_t *sl_i2c_instance, uint32_t timeout);
9393
static sl_status_t i2c_follower_mode_blocking_state_machine(sli_i2c_instance_t *sl_i2c_instance, uint32_t timeout);
94-
static void i2c_leader_mode_non_blocking_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance);
95-
static void i2c_follower_mode_non_blocking_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance);
9694
static void i2c_common_irq_handler(sli_i2c_instance_t *sl_i2c_instance);
9795

9896
/*******************************************************************************
@@ -1579,7 +1577,7 @@ static sl_status_t i2c_follower_mode_blocking_state_machine(sli_i2c_instance_t *
15791577
*
15801578
* @param sl_i2c_instance Pointer to the I2C instance structure.
15811579
******************************************************************************/
1582-
static void i2c_leader_mode_non_blocking_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance)
1580+
void sli_i2c_leader_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance)
15831581
{
15841582
I2C_TypeDef *i2c_base_addr = sl_i2c_instance->i2c_base_addr;
15851583
uint32_t pending_irq = sl_hal_i2c_get_enabled_pending_interrupts(i2c_base_addr);
@@ -1665,7 +1663,7 @@ static void i2c_leader_mode_non_blocking_dispatch_interrupt(sli_i2c_instance_t *
16651663
*
16661664
* @param sl_i2c_instance Pointer to the I2C instance structure.
16671665
******************************************************************************/
1668-
static void i2c_follower_mode_non_blocking_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance)
1666+
void sli_i2c_follower_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance)
16691667
{
16701668
I2C_TypeDef *i2c_base_addr = sl_i2c_instance->i2c_base_addr;
16711669
uint32_t pending_irq = sl_hal_i2c_get_enabled_pending_interrupts(i2c_base_addr);
@@ -1751,9 +1749,9 @@ static void i2c_common_irq_handler(sli_i2c_instance_t *sl_i2c_instance)
17511749
{
17521750
if (sl_i2c_instance->transfer_mode == SLI_I2C_NON_BLOCKING_TRANSFER) {
17531751
if (sl_i2c_instance->operating_mode == SL_I2C_LEADER_MODE) {
1754-
i2c_leader_mode_non_blocking_dispatch_interrupt(sl_i2c_instance);
1752+
sli_i2c_leader_dispatch_interrupt(sl_i2c_instance);
17551753
} else { // Follower mode
1756-
i2c_follower_mode_non_blocking_dispatch_interrupt(sl_i2c_instance);
1754+
sli_i2c_follower_dispatch_interrupt(sl_i2c_instance);
17571755
}
17581756
}
17591757
}

simplicity_sdk/platform/driver/i2c/src/sli_i2c.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,20 @@ void sli_i2c_transfer_init(I2C_TypeDef *i2c_base_addr,
172172
******************************************************************************/
173173
sl_status_t sli_i2c_dma_transfer_init(sli_i2c_instance_t *i2c_instance);
174174

175+
/***************************************************************************//**
176+
* Handles the I2C leader mode non-blocking interrupt dispatch.
177+
*
178+
* @param[in] sl_i2c_instance Pointer to the I2C instance structure.
179+
******************************************************************************/
180+
void sli_i2c_leader_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance);
181+
182+
/***************************************************************************//**
183+
* Handles the I2C follower mode non-blocking interrupt dispatch.
184+
*
185+
* @param[in] sl_i2c_instance Pointer to the I2C instance structure.
186+
******************************************************************************/
187+
void sli_i2c_follower_dispatch_interrupt(sli_i2c_instance_t *sl_i2c_instance);
188+
175189
#ifdef __cplusplus
176190
}
177191
#endif

0 commit comments

Comments
 (0)