/* * MPC82x/QUICC DSP support */ typedef struct DSP DSP;typedef struct FnD FnD; typedef short Real;typedef struct Complex Complex; struct Complex { Real im; Real re;}; struct FnD { ushort status; ushort param[7];}; enum { FnDsize = 8*2, /* each function descriptor is 8 shorts */ /* standard bits in FnD.status */ FnStop = 1<<15, FnWrap = 1<<13, FnInt = 1<<12, /* optional bits */ FnZ = 1<<11, /* FIR[35], MOD */ FnIALL = 1<<10, /* FIRx */ FnXinc0 = 0<<8, /* FIRx, IRR */ FnXinc1 = 1<<8, FnXinc2 = 2<<8, FnXinc3 = 3<<8, FnPC = 1<<7, /* FIRx */ /* DSP functions (table 16-6) */ FnFIR1 = 0x01, FnFIR2 = 0x02, FnFIR3 = 0x03, FnFIR5 = 0x03, FnFIR6 = 0x06, FnIIR = 0x07, FnMOD = 0x08, FnDEMOD = 0x09, FnLMS1 = 0x0A, FnLMS2 = 0x0B, FnWADD = 0x0C,}; void dspinitialise(void);DSP* dspacquire(void (*)(void*), void*);void dspexec(DSP*, FnD*, ulong);void* dspmalloc(ulong);void dspfree(void*, ulong);void dspsetfn(DSP*, FnD*, ulong);void dspstart(DSP*);void dsprelease(DSP*);FnD* fndalloc(ulong);void fndfree(FnD*, ulong);
/*
* MPC82x/QUICC DSP support
*/
typedef struct DSP DSP;
typedef struct FnD FnD;
typedef short Real;
typedef struct Complex Complex;
struct Complex {
Real im;
Real re;
};
struct FnD {
ushort status;
ushort param[7];
};
enum {
FnDsize = 8*2, /* each function descriptor is 8 shorts */
/* standard bits in FnD.status */
FnStop = 1<<15,
FnWrap = 1<<13,
FnInt = 1<<12,
/* optional bits */
FnZ = 1<<11, /* FIR[35], MOD */
FnIALL = 1<<10, /* FIRx */
FnXinc0 = 0<<8, /* FIRx, IRR */
FnXinc1 = 1<<8,
FnXinc2 = 2<<8,
FnXinc3 = 3<<8,
FnPC = 1<<7, /* FIRx */
/* DSP functions (table 16-6) */
FnFIR1 = 0x01,
FnFIR2 = 0x02,
FnFIR3 = 0x03,
FnFIR5 = 0x03,
FnFIR6 = 0x06,
FnIIR = 0x07,
FnMOD = 0x08,
FnDEMOD = 0x09,
FnLMS1 = 0x0A,
FnLMS2 = 0x0B,
FnWADD = 0x0C,
};
void dspinitialise(void);
DSP* dspacquire(void (*)(void*), void*);
void dspexec(DSP*, FnD*, ulong);
void* dspmalloc(ulong);
void dspfree(void*, ulong);
void dspsetfn(DSP*, FnD*, ulong);
void dspstart(DSP*);
void dsprelease(DSP*);
FnD* fndalloc(ulong);
void fndfree(FnD*, ulong);