2023-08-04 11:42:10 +08:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2020-2023 Intel Corporation
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
#ifndef __DRIVERS_IPM_SEDI_H
|
|
|
|
#define __DRIVERS_IPM_SEDI_H
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
#include "sedi_driver_common.h"
|
|
|
|
#include "sedi_driver_ipc.h"
|
2023-09-14 17:07:22 +08:00
|
|
|
#include <zephyr/sys/atomic.h>
|
2023-08-04 11:42:10 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* bit 31 indicates whether message is valid, and could generate interrupt
|
|
|
|
* while set/clear
|
|
|
|
*/
|
|
|
|
#define IPC_BUSY_BIT 31
|
|
|
|
|
|
|
|
#define IPM_WRITE_IN_PROC_BIT 0
|
|
|
|
#define IPM_WRITE_BUSY_BIT 1
|
|
|
|
#define IPM_READ_BUSY_BIT 2
|
|
|
|
#define IPM_PEER_READY_BIT 3
|
|
|
|
|
|
|
|
#define IPM_TIMEOUT_MS 1000
|
|
|
|
|
|
|
|
struct ipm_sedi_config_t {
|
|
|
|
sedi_ipc_t ipc_device;
|
|
|
|
int32_t irq_num;
|
|
|
|
void (*irq_config)(void);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ipm_sedi_context {
|
|
|
|
ipm_callback_t rx_msg_notify_cb;
|
|
|
|
void *rx_msg_notify_cb_data;
|
|
|
|
uint8_t incoming_data_buf[IPC_DATA_LEN_MAX];
|
|
|
|
struct k_sem device_write_msg_sem;
|
|
|
|
struct k_mutex device_write_lock;
|
|
|
|
atomic_t status;
|
|
|
|
uint32_t power_status;
|
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* __DRIVERS_IPM_SEDI_H */
|