mirror of https://github.com/thesofproject/sof.git
idc: allow idc_free() to disable only irqs
This commit: - adds flags argument to idc_free() function; - adds IDC_FREE_IRQ_ONLY flags, which allows idc_free() to disable only interrupts. Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This commit is contained in:
parent
17ebe860f0
commit
225d8e3b86
|
@ -164,7 +164,7 @@ void cpu_power_down_core(void)
|
|||
{
|
||||
arch_interrupt_global_disable();
|
||||
|
||||
idc_free();
|
||||
idc_free(0);
|
||||
|
||||
schedule_free();
|
||||
|
||||
|
|
|
@ -279,7 +279,7 @@ int platform_idc_restore(void)
|
|||
/**
|
||||
* \brief Frees IDC data and unregisters interrupt.
|
||||
*/
|
||||
void idc_free(void)
|
||||
void idc_free(uint32_t flags)
|
||||
{
|
||||
struct idc *idc = *idc_get();
|
||||
int core = cpu_get_id();
|
||||
|
@ -299,5 +299,8 @@ void idc_free(void)
|
|||
idc_write(IPC_IDCTFC(i), core, idctfc);
|
||||
}
|
||||
|
||||
if (flags & IDC_FREE_IRQ_ONLY)
|
||||
return;
|
||||
|
||||
schedule_task_free(&idc->idc_task);
|
||||
}
|
||||
|
|
|
@ -94,6 +94,9 @@
|
|||
/** \brief Max IDC message payload size in bytes. */
|
||||
#define IDC_MAX_PAYLOAD_SIZE 96
|
||||
|
||||
/** \brief IDC free function flags */
|
||||
#define IDC_FREE_IRQ_ONLY BIT(0) /**< disable only irqs */
|
||||
|
||||
/** \brief IDC message payload. */
|
||||
struct idc_payload {
|
||||
uint8_t data[IDC_MAX_PAYLOAD_SIZE];
|
||||
|
@ -128,7 +131,7 @@ static inline struct idc_payload *idc_payload_get(struct idc *idc,
|
|||
|
||||
void idc_enable_interrupts(int target_core, int source_core);
|
||||
|
||||
void idc_free(void);
|
||||
void idc_free(uint32_t flags);
|
||||
|
||||
int platform_idc_init(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue