diff options
Diffstat (limited to 'drivers/staging/tidspbridge/include/dspbridge/dbldefs.h')
-rw-r--r-- | drivers/staging/tidspbridge/include/dspbridge/dbldefs.h | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h new file mode 100644 index 000000000000..a47e7b8bc1c5 --- /dev/null +++ b/drivers/staging/tidspbridge/include/dspbridge/dbldefs.h @@ -0,0 +1,140 @@ +/* + * dbldefs.h + * + * DSP-BIOS Bridge driver support functions for TI OMAP processors. + * + * Copyright (C) 2005-2006 Texas Instruments, Inc. + * + * This package is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef DBLDEFS_ +#define DBLDEFS_ + +/* + * Bit masks for dbl_flags. + */ +#define DBL_NOLOAD 0x0 /* Don't load symbols, code, or data */ +#define DBL_SYMB 0x1 /* load symbols */ +#define DBL_CODE 0x2 /* load code */ +#define DBL_DATA 0x4 /* load data */ +#define DBL_DYNAMIC 0x8 /* dynamic load */ +#define DBL_BSS 0x20 /* Unitialized section */ + +#define DBL_MAXPATHLENGTH 255 + +/* + * ======== dbl_flags ======== + * Specifies whether to load code, data, or symbols + */ +typedef s32 dbl_flags; + +/* + * ======== dbl_sect_info ======== + * For collecting info on overlay sections + */ +struct dbl_sect_info { + const char *name; /* name of section */ + u32 sect_run_addr; /* run address of section */ + u32 sect_load_addr; /* load address of section */ + u32 size; /* size of section (target MAUs) */ + dbl_flags type; /* Code, data, or BSS */ +}; + +/* + * ======== dbl_symbol ======== + * (Needed for dynamic load library) + */ +struct dbl_symbol { + u32 value; +}; + +/* + * ======== dbl_alloc_fxn ======== + * Allocate memory function. Allocate or reserve (if reserved == TRUE) + * "size" bytes of memory from segment "space" and return the address in + * *dspAddr (or starting at *dspAddr if reserve == TRUE). Returns 0 on + * success, or an error code on failure. + */ +typedef s32(*dbl_alloc_fxn) (void *hdl, s32 space, u32 size, u32 align, + u32 *dspAddr, s32 seg_id, s32 req, bool reserved); + +/* + * ======== dbl_free_fxn ======== + * Free memory function. Free, or unreserve (if reserved == TRUE) "size" + * bytes of memory from segment "space" + */ +typedef bool(*dbl_free_fxn) (void *hdl, u32 addr, s32 space, u32 size, + bool reserved); + +/* + * ======== dbl_log_write_fxn ======== + * Function to call when writing data from a section, to log the info. + * Can be NULL if no logging is required. + */ +typedef int(*dbl_log_write_fxn) (void *handle, + struct dbl_sect_info *sect, u32 addr, + u32 bytes); + +/* + * ======== dbl_sym_lookup ======== + * Symbol lookup function - Find the symbol name and return its value. + * + * Parameters: + * handle - Opaque handle + * parg - Opaque argument. + * name - Name of symbol to lookup. + * sym - Location to store address of symbol structure. + * + * Returns: + * TRUE: Success (symbol was found). + * FALSE: Failed to find symbol. + */ +typedef bool(*dbl_sym_lookup) (void *handle, void *parg, void *rmm_handle, + const char *name, struct dbl_symbol ** sym); + +/* + * ======== dbl_write_fxn ======== + * Write memory function. Write "n" HOST bytes of memory to segment "mtype" + * starting at address "dspAddr" from the buffer "buf". The buffer is + * formatted as an array of words appropriate for the DSP. + */ +typedef s32(*dbl_write_fxn) (void *hdl, u32 dspAddr, void *buf, + u32 n, s32 mtype); + +/* + * ======== dbl_attrs ======== + */ +struct dbl_attrs { + dbl_alloc_fxn alloc; + dbl_free_fxn free; + void *rmm_handle; /* Handle to pass to alloc, free functions */ + dbl_write_fxn write; + void *input_params; /* Handle to pass to write, cinit function */ + + dbl_log_write_fxn log_write; + void *log_write_handle; + + /* Symbol matching function and handle to pass to it */ + dbl_sym_lookup sym_lookup; + void *sym_handle; + void *sym_arg; + + /* + * These file manipulation functions should be compatible with the + * "C" run time library functions of the same name. + */ + s32(*fread) (void *, size_t, size_t, void *); + s32(*fseek) (void *, long, int); + s32(*ftell) (void *); + s32(*fclose) (void *); + void *(*fopen) (const char *, const char *); +}; + +#endif /* DBLDEFS_ */ |