FreeRTOS port on GAP8/RISC-V
|
Macros | |
#define | NB_CLUSTER |
#define | CL_MASTER_CORE_STACK_SIZE |
#define | CL_SLAVE_CORE_STACK_SIZE |
#define | PRINTF(...) |
Functions | |
static void | __cluster_start (struct pi_device *device) |
static void | __cluster_start_async (struct pi_device *device, pi_task_t *async_task) |
static int | __cluster_stop (struct pi_device *device) |
static int | __cluster_stop_async (struct pi_device *device, pi_task_t *async_task) |
static int | __cluster_has_task (struct cluster_driver_data *data) |
static void | __cluster_free_device_event_func (void *arg) |
static void | pi_push_cluster_task (struct cluster_driver_data *data, struct pi_cluster_task *task) |
static void | cl_pop_cluster_task (struct cluster_driver_data *data) |
void | cl_task_finish (void) |
void | cl_cluster_exec_loop (void) |
static void | cl_set_core_stack (void *arg) |
All cores set stack. More... | |
void | cl_stack_init (struct pi_cluster_task *task) |
All cores do task init. Master core 0 do stacks initilization. More... | |
int | pi_cluster_open (struct pi_device *device) |
open the cluster described by device with given conf More... | |
int | pi_cluster_open_async (struct pi_device *device, pi_task_t *async_task) |
int | pi_cluster_close (struct pi_device *device) |
int | pi_cluster_close_async (struct pi_device *device, pi_task_t *async_task) |
int | pi_cluster_ioctl (struct pi_device *device, uint32_t func_id, void *arg) |
int | pi_cluster_ioctl_async (struct pi_device *device, uint32_t func_id, void *arg, pi_task_t *async_task) |
void | reset_handler () |
static int | __pi_send_task_to_cl (struct pi_device *device, struct pi_cluster_task *task) |
int | pi_cluster_send_task_to_cl (struct pi_device *device, struct pi_cluster_task *task) |
int | pi_cluster_send_task_to_cl_async (struct pi_device *device, struct pi_cluster_task *task, pi_task_t *fc_task) |
void | pi_cluster_wait_free (struct pi_device *device) |
void | pi_cluster_wait_free_async (struct pi_device *device, pi_task_t *async_task) |
uint8_t | pi_cluster_is_on (void) |
void | pi_cluster_conf_init (struct pi_cluster_conf *conf) |
Variables | |
spinlock_t | cluster_printf_spinlock |
char | __l1_preload_start |
char | __l1_preload_start_inL2 |
char | __l1_preload_size |
char | __l1_heapsram_start |
char | __l1_heapsram_size |
struct cluster_driver_data * | __per_cluster_data [NB_CLUSTER] |
static struct cluster_driver_api | __spec_cluster_api |
static struct pi_device_api | __cluster_api |
static struct pi_cluster_conf | __cluster_default_conf |
#define CL_MASTER_CORE_STACK_SIZE |
Stack size for Cluster Master core, 2kB.
Referenced by __pi_send_task_to_cl().
#define CL_SLAVE_CORE_STACK_SIZE |
Stack size for Cluster Slave cores, 1kB.
Referenced by __pi_send_task_to_cl().
#define NB_CLUSTER |
Referenced by pi_cluster_is_on().
#define PRINTF | ( | ... | ) |
|
inlinestatic |
Referenced by pi_cluster_close_async().
|
inlinestatic |
References cluster_driver_data::fifo_access, and cluster_driver_data::task_first.
Referenced by pi_cluster_wait_free().
|
inlinestatic |
References __l1_preload_size, __l1_preload_start, __l1_preload_start_inL2, ARCHI_CL_CID, ARCHI_CLUSTER_MASTER_CORE, cluster_driver_data::cluster_is_on, cluster_printf_spinlock, CLUSTER_SHARED_DIS, cluster_driver_data::fifo_access, hal_cl_boot_addr_set(), hal_cl_clock_gate_disable(), hal_cl_fetch_mask_enable(), hal_cl_icache_enable(), hal_cl_l1_shared_prefetch_enable(), memcpy(), pi_cl_cluster_nb_pe_cores(), pi_time_wait_us(), pmsis_mutex_release(), pmsis_mutex_take(), cluster_driver_data::powerstate_mutex, PRINTF, and reset_handler().
Referenced by pi_cluster_open().
|
inlinestatic |
Referenced by pi_cluster_open_async().
|
inlinestatic |
References cluster_driver_data::cluster_is_on, pmsis_mutex_release(), pmsis_mutex_take(), and cluster_driver_data::powerstate_mutex.
Referenced by pi_cluster_close().
|
inlinestatic |
Referenced by pi_cluster_close_async().
|
inlinestatic |
References CL_MASTER_CORE_STACK_SIZE, CL_SLAVE_CORE_STACK_SIZE, cluster_driver_data::cluster_is_on, FC_TO_CLUSTER_NOTIFY_EVENT, pi_cl_cluster_nb_pe_cores(), pi_push_cluster_task(), pmsis_mutex_release(), pmsis_mutex_take(), PRINTF, and cluster_driver_data::task_mutex.
Referenced by pi_cluster_send_task_to_cl(), and pi_cluster_send_task_to_cl_async().
void cl_cluster_exec_loop | ( | void | ) |
|
inlinestatic |
|
static |
stacksPtr | Overall stack pointer for all cores. |
coreStackSize | Each core's stack size. |
References __native_core_id().
Referenced by cl_stack_init().
void cl_stack_init | ( | struct pi_cluster_task * | task | ) |
References cl_set_core_stack(), hal_eu_mutex_init(), pi_cl_team_fork(), and PRINTF.
void cl_task_finish | ( | void | ) |
int pi_cluster_close | ( | struct pi_device * | device | ) |
int pi_cluster_close_async | ( | struct pi_device * | device, |
pi_task_t * | async_task | ||
) |
References __cluster_free_device_event_func(), __cluster_stop_async(), pi_task_t::arg, and pi_task_t::id.
void pi_cluster_conf_init | ( | struct pi_cluster_conf * | conf | ) |
int pi_cluster_ioctl | ( | struct pi_device * | device, |
uint32_t | func_id, | ||
void * | arg | ||
) |
int pi_cluster_ioctl_async | ( | struct pi_device * | device, |
uint32_t | func_id, | ||
void * | arg, | ||
pi_task_t * | async_task | ||
) |
uint8_t pi_cluster_is_on | ( | void | ) |
References cluster_is_on, and NB_CLUSTER.
int pi_cluster_open | ( | struct pi_device * | device | ) |
References __cluster_api, __cluster_default_conf, __cluster_start(), __l1_heapsram_size, __l1_heapsram_start, cluster_driver_data::event_kernel, mc_fc_delegate_init(), memcpy(), memset(), pi_default_malloc, pmsis_event_kernel_init(), pmsis_event_kernel_main(), pmsis_mutex_init(), cluster_driver_data::powerstate_mutex, PRINTF, cluster_driver_data::task_mutex, and cluster_driver_data::task_to_fc.
int pi_cluster_open_async | ( | struct pi_device * | device, |
pi_task_t * | async_task | ||
) |
References __cluster_api, __cluster_default_conf, __cluster_start_async(), memcpy(), and pi_default_malloc.
int pi_cluster_send_task_to_cl | ( | struct pi_device * | device, |
struct pi_cluster_task * | task | ||
) |
References __pi_send_task_to_cl(), pi_task_block(), pi_task_destroy(), pi_task_wait_on(), and PRINTF.
int pi_cluster_send_task_to_cl_async | ( | struct pi_device * | device, |
struct pi_cluster_task * | task, | ||
pi_task_t * | fc_task | ||
) |
References __os_native_yield(), and __pi_send_task_to_cl().
void pi_cluster_wait_free | ( | struct pi_device * | device | ) |
References __cluster_has_task().
void pi_cluster_wait_free_async | ( | struct pi_device * | device, |
pi_task_t * | async_task | ||
) |
|
inlinestatic |
References cluster_driver_data::fifo_access, PRINTF, cluster_driver_data::task_first, and cluster_driver_data::task_last.
Referenced by __pi_send_task_to_cl().
void reset_handler | ( | ) |
Referenced by __cluster_start().
|
static |
Referenced by pi_cluster_open(), and pi_cluster_open_async().
|
static |
Referenced by pi_cluster_open(), and pi_cluster_open_async().
char __l1_heapsram_size |
Referenced by pi_cluster_open().
char __l1_heapsram_start |
Referenced by pi_cluster_open().
char __l1_preload_size |
char __l1_preload_start |
char __l1_preload_start_inL2 |
struct cluster_driver_data* __per_cluster_data[NB_CLUSTER] |
Referenced by cl_cluster_exec_loop().
|
static |
spinlock_t cluster_printf_spinlock |