mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
![Víctor Manuel Jáquez Leal](/assets/img/avatar_default.png)
The cod module has a cod_init() and a cod_exit() whose only purpose is to keep a reference counting which is not used at all. This patch removes these functions and the reference count variable. There is no functional changes. Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
329 lines
9.8 KiB
C
329 lines
9.8 KiB
C
/*
|
|
* cod.h
|
|
*
|
|
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
|
|
*
|
|
* Code management module for DSPs. This module provides an interface
|
|
* interface for loading both static and dynamic code objects onto DSP
|
|
* systems.
|
|
*
|
|
* 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 COD_
|
|
#define COD_
|
|
|
|
#include <dspbridge/dblldefs.h>
|
|
|
|
#define COD_MAXPATHLENGTH 255
|
|
#define COD_TRACEBEG "SYS_PUTCBEG"
|
|
#define COD_TRACEEND "SYS_PUTCEND"
|
|
#define COD_TRACECURPOS "BRIDGE_SYS_PUTC_current"
|
|
|
|
#define COD_NOLOAD DBLL_NOLOAD
|
|
#define COD_SYMB DBLL_SYMB
|
|
|
|
/* COD code manager handle */
|
|
struct cod_manager;
|
|
|
|
/* COD library handle */
|
|
struct cod_libraryobj;
|
|
|
|
/*
|
|
* Function prototypes for writing memory to a DSP system, allocating
|
|
* and freeing DSP memory.
|
|
*/
|
|
typedef u32(*cod_writefxn) (void *priv_ref, u32 dsp_add,
|
|
void *pbuf, u32 ul_num_bytes, u32 mem_space);
|
|
|
|
/*
|
|
* ======== cod_close ========
|
|
* Purpose:
|
|
* Close a library opened with cod_open().
|
|
* Parameters:
|
|
* lib - Library handle returned by cod_open().
|
|
* Returns:
|
|
* None.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid lib.
|
|
* Ensures:
|
|
*
|
|
*/
|
|
extern void cod_close(struct cod_libraryobj *lib);
|
|
|
|
/*
|
|
* ======== cod_create ========
|
|
* Purpose:
|
|
* Create an object to manage code on a DSP system. This object can be
|
|
* used to load an initial program image with arguments that can later
|
|
* be expanded with dynamically loaded object files.
|
|
* Symbol table information is managed by this object and can be retrieved
|
|
* using the cod_get_sym_value() function.
|
|
* Parameters:
|
|
* manager: created manager object
|
|
* str_zl_file: ZL DLL filename, of length < COD_MAXPATHLENGTH.
|
|
* Returns:
|
|
* 0: Success.
|
|
* -ESPIPE: ZL_Create failed.
|
|
* -ENOSYS: attrs was not NULL. We don't yet support
|
|
* non default values of attrs.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* str_zl_file != NULL
|
|
* Ensures:
|
|
*/
|
|
extern int cod_create(struct cod_manager **mgr,
|
|
char *str_zl_file);
|
|
|
|
/*
|
|
* ======== cod_delete ========
|
|
* Purpose:
|
|
* Delete a code manager object.
|
|
* Parameters:
|
|
* cod_mgr_obj: handle of manager to be deleted
|
|
* Returns:
|
|
* None.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* Ensures:
|
|
*/
|
|
extern void cod_delete(struct cod_manager *cod_mgr_obj);
|
|
|
|
/*
|
|
* ======== cod_get_base_lib ========
|
|
* Purpose:
|
|
* Get handle to the base image DBL library.
|
|
* Parameters:
|
|
* cod_mgr_obj: handle of manager to be deleted
|
|
* plib: location to store library handle on output.
|
|
* Returns:
|
|
* 0: Success.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* plib != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_get_base_lib(struct cod_manager *cod_mgr_obj,
|
|
struct dbll_library_obj **plib);
|
|
|
|
/*
|
|
* ======== cod_get_base_name ========
|
|
* Purpose:
|
|
* Get the name of the base image DBL library.
|
|
* Parameters:
|
|
* cod_mgr_obj: handle of manager to be deleted
|
|
* sz_name: location to store library name on output.
|
|
* usize: size of name buffer.
|
|
* Returns:
|
|
* 0: Success.
|
|
* -EPERM: Buffer too small.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* sz_name != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_get_base_name(struct cod_manager *cod_mgr_obj,
|
|
char *sz_name, u32 usize);
|
|
|
|
/*
|
|
* ======== cod_get_entry ========
|
|
* Purpose:
|
|
* Retrieve the entry point of a loaded DSP program image
|
|
* Parameters:
|
|
* cod_mgr_obj: handle of manager to be deleted
|
|
* entry_pt: pointer to location for entry point
|
|
* Returns:
|
|
* 0: Success.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* entry_pt != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_get_entry(struct cod_manager *cod_mgr_obj,
|
|
u32 *entry_pt);
|
|
|
|
/*
|
|
* ======== cod_get_loader ========
|
|
* Purpose:
|
|
* Get handle to the DBL loader.
|
|
* Parameters:
|
|
* cod_mgr_obj: handle of manager to be deleted
|
|
* loader: location to store loader handle on output.
|
|
* Returns:
|
|
* 0: Success.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* loader != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_get_loader(struct cod_manager *cod_mgr_obj,
|
|
struct dbll_tar_obj **loader);
|
|
|
|
/*
|
|
* ======== cod_get_section ========
|
|
* Purpose:
|
|
* Retrieve the starting address and length of a section in the COFF file
|
|
* given the section name.
|
|
* Parameters:
|
|
* lib Library handle returned from cod_open().
|
|
* str_sect: name of the section, with or without leading "."
|
|
* addr: Location to store address.
|
|
* len: Location to store length.
|
|
* Returns:
|
|
* 0: Success
|
|
* -ESPIPE: Symbols could not be found or have not been loaded onto
|
|
* the board.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* str_sect != NULL;
|
|
* addr != NULL;
|
|
* len != NULL;
|
|
* Ensures:
|
|
* 0: *addr and *len contain the address and length of the
|
|
* section.
|
|
* else: *addr == 0 and *len == 0;
|
|
*
|
|
*/
|
|
extern int cod_get_section(struct cod_libraryobj *lib,
|
|
char *str_sect,
|
|
u32 *addr, u32 *len);
|
|
|
|
/*
|
|
* ======== cod_get_sym_value ========
|
|
* Purpose:
|
|
* Retrieve the value for the specified symbol. The symbol is first
|
|
* searched for literally and then, if not found, searched for as a
|
|
* C symbol.
|
|
* Parameters:
|
|
* lib: library handle returned from cod_open().
|
|
* pstrSymbol: name of the symbol
|
|
* value: value of the symbol
|
|
* Returns:
|
|
* 0: Success.
|
|
* -ESPIPE: Symbols could not be found or have not been loaded onto
|
|
* the board.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* Valid cod_mgr_obj.
|
|
* str_sym != NULL.
|
|
* pul_value != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_get_sym_value(struct cod_manager *cod_mgr_obj,
|
|
char *str_sym, u32 * pul_value);
|
|
|
|
/*
|
|
* ======== cod_load_base ========
|
|
* Purpose:
|
|
* Load the initial program image, optionally with command-line arguments,
|
|
* on the DSP system managed by the supplied handle. The program to be
|
|
* loaded must be the first element of the args array and must be a fully
|
|
* qualified pathname.
|
|
* Parameters:
|
|
* hmgr: manager to load the code with
|
|
* num_argc: number of arguments in the args array
|
|
* args: array of strings for arguments to DSP program
|
|
* write_fxn: board-specific function to write data to DSP system
|
|
* arb: arbitrary pointer to be passed as first arg to write_fxn
|
|
* envp: array of environment strings for DSP exec.
|
|
* Returns:
|
|
* 0: Success.
|
|
* -EBADF: Failed to open target code.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* hmgr is valid.
|
|
* num_argc > 0.
|
|
* args != NULL.
|
|
* args[0] != NULL.
|
|
* pfn_write != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_load_base(struct cod_manager *cod_mgr_obj,
|
|
u32 num_argc, char *args[],
|
|
cod_writefxn pfn_write, void *arb,
|
|
char *envp[]);
|
|
|
|
/*
|
|
* ======== cod_open ========
|
|
* Purpose:
|
|
* Open a library for reading sections. Does not load or set the base.
|
|
* Parameters:
|
|
* hmgr: manager to load the code with
|
|
* sz_coff_path: Coff file to open.
|
|
* flags: COD_NOLOAD (don't load symbols) or COD_SYMB (load
|
|
* symbols).
|
|
* lib_obj: Handle returned that can be used in calls to cod_close
|
|
* and cod_get_section.
|
|
* Returns:
|
|
* S_OK: Success.
|
|
* -EBADF: Failed to open target code.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* hmgr is valid.
|
|
* flags == COD_NOLOAD || flags == COD_SYMB.
|
|
* sz_coff_path != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_open(struct cod_manager *hmgr,
|
|
char *sz_coff_path,
|
|
u32 flags, struct cod_libraryobj **lib_obj);
|
|
|
|
/*
|
|
* ======== cod_open_base ========
|
|
* Purpose:
|
|
* Open base image for reading sections. Does not load the base.
|
|
* Parameters:
|
|
* hmgr: manager to load the code with
|
|
* sz_coff_path: Coff file to open.
|
|
* flags: Specifies whether to load symbols.
|
|
* Returns:
|
|
* 0: Success.
|
|
* -EBADF: Failed to open target code.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* hmgr is valid.
|
|
* sz_coff_path != NULL.
|
|
* Ensures:
|
|
*/
|
|
extern int cod_open_base(struct cod_manager *hmgr, char *sz_coff_path,
|
|
dbll_flags flags);
|
|
|
|
/*
|
|
* ======== cod_read_section ========
|
|
* Purpose:
|
|
* Retrieve the content of a code section given the section name.
|
|
* Parameters:
|
|
* cod_mgr_obj - manager in which to search for the symbol
|
|
* str_sect - name of the section, with or without leading "."
|
|
* str_content - buffer to store content of the section.
|
|
* Returns:
|
|
* 0: on success, error code on failure
|
|
* -ESPIPE: Symbols have not been loaded onto the board.
|
|
* Requires:
|
|
* COD module initialized.
|
|
* valid cod_mgr_obj.
|
|
* str_sect != NULL;
|
|
* str_content != NULL;
|
|
* Ensures:
|
|
* 0: *str_content stores the content of the named section.
|
|
*/
|
|
extern int cod_read_section(struct cod_libraryobj *lib,
|
|
char *str_sect,
|
|
char *str_content, u32 content_size);
|
|
|
|
#endif /* COD_ */
|