1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #ifndef __OSC_H__
- #define __OSC_H__
- #include "hal.h"
- #define OVLY_SEG(NAME) __attribute__((section(#NAME)))
- /*
- TYPES OF GENERAL EXCEPTION
- */
- #define GE_ALIGN_CHECK 0
- #define GE_RESERVED_INST 1
- #define GE_TRAP 2
- #define GE_ARITHMETIC 3
- #define GE_PRECISE_BUS_ERR 4
- #define GE_INPRECISE_BUS_ERR 5
- #define GE_COPROCESSOR 6
- #define GE_PRIVILEGE_INST 7
- #define GE_RESERVED_VALUE 8
- #define GE_NON_EXIST_LOCAL_MEM 9
- #define GE_MPZIU_CTRL 10
- /*
- structure of overlay control registers
- Please define this structure based on your hardware design
- */
- typedef struct
- {
- unsigned int reserved ;
- unsigned int root_size ;
- unsigned int base_addr ;
- unsigned int end_addr ;
- volatile unsigned int dma ;
- } OVLY_REGS ;
- typedef struct
- {
- unsigned long vma;
- unsigned long size;
- unsigned long lma;
- unsigned long mapped;
- } OVLY_TABLE ;
- typedef struct
- {
- unsigned int ipc;
- OVLY_REGS *povl;
- } OVL_CTRL;
- typedef struct {
- hal_queue_t queue;
- hal_thread_t th;
- OVL_CTRL povl_ctrl;
- } OSC_DRV_INFO;
- /* _novlys from overlay table in linker script stands for number of overlay regions. */
- extern int _novlys;
- extern OVLY_TABLE _ovly_table[] ;
- extern char __ovly_lmastart_OVL_RAM;
- static volatile int overlay_busy = 0;
- void __attribute__((no_prologue)) osc_init();
- int _osc_drv_init(void (*handler)(unsigned int ipc),
- void (*osc_hisr)(void *arg),
- OSC_DRV_INFO *osc_info);
- #ifdef CONFIG_OSC_DEBUG_SUPPORT
- #define OVLY_DEBUG
- #endif
- #endif
|