diff options
Diffstat (limited to 'drivers/staging/tidspbridge/include/dspbridge')
59 files changed, 0 insertions, 10489 deletions
diff --git a/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h b/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h deleted file mode 100644 index cc95a18f1db9..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/_chnl_sm.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * _chnl_sm.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Private header file defining channel manager and channel objects for - * a shared memory channel driver. - * - * Shared between the modules implementing the shared memory channel class - * library. - * - * 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 _CHNL_SM_ -#define _CHNL_SM_ - -#include <dspbridge/dspapi.h> -#include <dspbridge/dspdefs.h> - -#include <linux/list.h> -#include <dspbridge/ntfy.h> - -/* - * These target side symbols define the beginning and ending addresses - * of shared memory buffer. They are defined in the *cfg.cmd file by - * cdb code. - */ -#define CHNL_SHARED_BUFFER_BASE_SYM "_SHM_BEG" -#define CHNL_SHARED_BUFFER_LIMIT_SYM "_SHM_END" -#define BRIDGEINIT_BIOSGPTIMER "_BRIDGEINIT_BIOSGPTIMER" -#define BRIDGEINIT_LOADMON_GPTIMER "_BRIDGEINIT_LOADMON_GPTIMER" - -#ifndef _CHNL_WORDSIZE -#define _CHNL_WORDSIZE 4 /* default _CHNL_WORDSIZE is 2 bytes/word */ -#endif - -#define MAXOPPS 16 - -/* Shared memory config options */ -#define SHM_CURROPP 0 /* Set current OPP in shm */ -#define SHM_OPPINFO 1 /* Set dsp voltage and freq table values */ -#define SHM_GETOPP 2 /* Get opp requested by DSP */ - -struct opp_table_entry { - u32 voltage; - u32 frequency; - u32 min_freq; - u32 max_freq; -}; - -struct opp_struct { - u32 curr_opp_pt; - u32 num_opp_pts; - struct opp_table_entry opp_point[MAXOPPS]; -}; - -/* Request to MPU */ -struct opp_rqst_struct { - u32 rqst_dsp_freq; - u32 rqst_opp_pt; -}; - -/* Info to MPU */ -struct load_mon_struct { - u32 curr_dsp_load; - u32 curr_dsp_freq; - u32 pred_dsp_load; - u32 pred_dsp_freq; -}; - -/* Structure in shared between DSP and PC for communication. */ -struct shm { - u32 dsp_free_mask; /* Written by DSP, read by PC. */ - u32 host_free_mask; /* Written by PC, read by DSP */ - - u32 input_full; /* Input channel has unread data. */ - u32 input_id; /* Channel for which input is available. */ - u32 input_size; /* Size of data block (in DSP words). */ - - u32 output_full; /* Output channel has unread data. */ - u32 output_id; /* Channel for which output is available. */ - u32 output_size; /* Size of data block (in DSP words). */ - - u32 arg; /* Arg for Issue/Reclaim (23 bits for 55x). */ - u32 resvd; /* Keep structure size even for 32-bit DSPs */ - - /* Operating Point structure */ - struct opp_struct opp_table_struct; - /* Operating Point Request structure */ - struct opp_rqst_struct opp_request; - /* load monitor information structure */ - struct load_mon_struct load_mon_info; - /* Flag for WDT enable/disable F/I clocks */ - u32 wdt_setclocks; - u32 wdt_overflow; /* WDT overflow time */ - char dummy[176]; /* padding to 256 byte boundary */ - u32 shm_dbg_var[64]; /* shared memory debug variables */ -}; - - /* Channel Manager: only one created per board: */ -struct chnl_mgr { - /* Function interface to Bridge driver */ - struct bridge_drv_interface *intf_fxns; - struct io_mgr *iomgr; /* IO manager */ - /* Device this board represents */ - struct dev_object *dev_obj; - - /* These fields initialized in bridge_chnl_create(): */ - u32 output_mask; /* Host output channels w/ full buffers */ - u32 last_output; /* Last output channel fired from DPC */ - /* Critical section object handle */ - spinlock_t chnl_mgr_lock; - u32 word_size; /* Size in bytes of DSP word */ - u8 max_channels; /* Total number of channels */ - u8 open_channels; /* Total number of open channels */ - struct chnl_object **channels; /* Array of channels */ - u8 type; /* Type of channel class library */ - /* If no shm syms, return for CHNL_Open */ - int chnl_open_status; -}; - -/* - * Channel: up to CHNL_MAXCHANNELS per board or if DSP-DMA supported then - * up to CHNL_MAXCHANNELS + CHNL_MAXDDMACHNLS per board. - */ -struct chnl_object { - /* Pointer back to channel manager */ - struct chnl_mgr *chnl_mgr_obj; - u32 chnl_id; /* Channel id */ - u8 state; /* Current channel state */ - s8 chnl_mode; /* Chnl mode and attributes */ - /* Chnl I/O completion event (user mode) */ - void *user_event; - /* Abstract synchronization object */ - struct sync_object *sync_event; - u32 process; /* Process which created this channel */ - u32 cb_arg; /* Argument to use with callback */ - struct list_head io_requests; /* List of IOR's to driver */ - s32 cio_cs; /* Number of IOC's in queue */ - s32 cio_reqs; /* Number of IORequests in queue */ - s32 chnl_packets; /* Initial number of free Irps */ - /* List of IOC's from driver */ - struct list_head io_completions; - struct list_head free_packets_list; /* List of free Irps */ - struct ntfy_object *ntfy_obj; - u32 bytes_moved; /* Total number of bytes transferred */ - - /* For DSP-DMA */ - - /* Type of chnl transport:CHNL_[PCPY][DDMA] */ - u32 chnl_type; -}; - -/* I/O Request/completion packet: */ -struct chnl_irp { - struct list_head link; /* Link to next CHIRP in queue. */ - /* Buffer to be filled/emptied. (User) */ - u8 *host_user_buf; - /* Buffer to be filled/emptied. (System) */ - u8 *host_sys_buf; - u32 arg; /* Issue/Reclaim argument. */ - u32 dsp_tx_addr; /* Transfer address on DSP side. */ - u32 byte_size; /* Bytes transferred. */ - u32 buf_size; /* Actual buffer size when allocated. */ - u32 status; /* Status of IO completion. */ -}; - -#endif /* _CHNL_SM_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/brddefs.h b/drivers/staging/tidspbridge/include/dspbridge/brddefs.h deleted file mode 100644 index 725d7b37414c..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/brddefs.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * brddefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global BRD constants and types, shared between DSP API and Bridge driver. - * - * 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 BRDDEFS_ -#define BRDDEFS_ - -/* platform status values */ -#define BRD_STOPPED 0x0 /* No Monitor Loaded, Not running. */ -#define BRD_IDLE 0x1 /* Monitor Loaded, but suspended. */ -#define BRD_RUNNING 0x2 /* Monitor loaded, and executing. */ -#define BRD_UNKNOWN 0x3 /* Board state is indeterminate. */ -#define BRD_LOADED 0x5 -#define BRD_SLEEP_TRANSITION 0x6 /* Sleep transition in progress */ -#define BRD_HIBERNATION 0x7 /* MPU initiated hibernation */ -#define BRD_RETENTION 0x8 /* Retention mode */ -#define BRD_DSP_HIBERNATION 0x9 /* DSP initiated hibernation */ -#define BRD_ERROR 0xA /* Board state is Error */ - -/* BRD Object */ -struct brd_object; - -#endif /* BRDDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h b/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h deleted file mode 100644 index b32c75673ab4..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/cfgdefs.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * cfgdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global CFG constants and types, shared between DSP API and Bridge driver. - * - * 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 CFGDEFS_ -#define CFGDEFS_ - -/* Host Resources: */ -#define CFG_MAXMEMREGISTERS 9 - -/* IRQ flag */ -#define CFG_IRQSHARED 0x01 /* IRQ can be shared */ - -/* A platform-related device handle: */ -struct cfg_devnode; - -/* - * Host resource structure. - */ -struct cfg_hostres { - u32 num_mem_windows; /* Set to default */ - /* This is the base.memory */ - u32 mem_base[CFG_MAXMEMREGISTERS]; /* shm virtual address */ - u32 mem_length[CFG_MAXMEMREGISTERS]; /* Length of the Base */ - u32 mem_phys[CFG_MAXMEMREGISTERS]; /* shm Physical address */ - u8 birq_registers; /* IRQ Number */ - u8 birq_attrib; /* IRQ Attribute */ - u32 offset_for_monitor; /* The Shared memory starts from - * mem_base + this offset */ - /* - * Info needed by NODE for allocating channels to communicate with RMS: - * chnl_offset: Offset of RMS channels. Lower channels are - * reserved. - * chnl_buf_size: Size of channel buffer to send to RMS - * num_chnls: Total number of channels - * (including reserved). - */ - u32 chnl_offset; - u32 chnl_buf_size; - u32 num_chnls; - void __iomem *per_base; - void __iomem *per_pm_base; - void __iomem *core_pm_base; - void __iomem *dmmu_base; -}; - -#endif /* CFGDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/chnl.h b/drivers/staging/tidspbridge/include/dspbridge/chnl.h deleted file mode 100644 index 9b018b1f9bf3..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/chnl.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * chnl.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP API channel interface: multiplexes data streams through the single - * physical link managed by a Bridge driver. - * - * See DSP API chnl.h for more details. - * - * 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 CHNL_ -#define CHNL_ - -#include <dspbridge/chnlpriv.h> - -/* - * ======== chnl_create ======== - * Purpose: - * Create a channel manager object, responsible for opening new channels - * and closing old ones for a given board. - * Parameters: - * channel_mgr: Location to store a channel manager object on output. - * hdev_obj: Handle to a device object. - * mgr_attrts: Channel manager attributes. - * mgr_attrts->max_channels: Max channels - * mgr_attrts->birq: Channel's I/O IRQ number. - * mgr_attrts->irq_shared: TRUE if the IRQ is shareable. - * mgr_attrts->word_size: DSP Word size in equivalent PC bytes.. - * Returns: - * 0: Success; - * -EFAULT: hdev_obj is invalid. - * -EINVAL: max_channels is 0. - * Invalid DSP word size (must be > 0). - * Invalid base address for DSP communications. - * -ENOMEM: Insufficient memory for requested resources. - * -EIO: Unable to plug channel ISR for configured IRQ. - * -ECHRNG: This manager cannot handle this many channels. - * -EEXIST: Channel manager already exists for this device. - * Requires: - * channel_mgr != NULL. - * mgr_attrts != NULL. - * Ensures: - * 0: Subsequent calls to chnl_create() for the same - * board without an intervening call to - * chnl_destroy() will fail. - */ -extern int chnl_create(struct chnl_mgr **channel_mgr, - struct dev_object *hdev_obj, - const struct chnl_mgrattrs *mgr_attrts); - -/* - * ======== chnl_destroy ======== - * Purpose: - * Close all open channels, and destroy the channel manager. - * Parameters: - * hchnl_mgr: Channel manager object. - * Returns: - * 0: Success. - * -EFAULT: hchnl_mgr was invalid. - * Requires: - * Ensures: - * 0: Cancels I/O on each open channel. - * Closes each open channel. - * chnl_create may subsequently be called for the - * same board. - */ -extern int chnl_destroy(struct chnl_mgr *hchnl_mgr); - -#endif /* CHNL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h b/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h deleted file mode 100644 index cb67c309b6ca..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * chnldefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * System-wide channel objects and constants. - * - * 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 CHNLDEFS_ -#define CHNLDEFS_ - -/* Channel id option. */ -#define CHNL_PICKFREE (~0UL) /* Let manager pick a free channel. */ - -/* Channel modes */ -#define CHNL_MODETODSP 0 /* Data streaming to the DSP. */ -#define CHNL_MODEFROMDSP 1 /* Data streaming from the DSP. */ - -/* GetIOCompletion flags */ -#define CHNL_IOCINFINITE 0xffffffff /* Wait forever for IO completion. */ -#define CHNL_IOCNOWAIT 0x0 /* Dequeue an IOC, if available. */ - -/* IO Completion Record status: */ -#define CHNL_IOCSTATCOMPLETE 0x0000 /* IO Completed. */ -#define CHNL_IOCSTATCANCEL 0x0002 /* IO was cancelled */ -#define CHNL_IOCSTATTIMEOUT 0x0008 /* Wait for IOC timed out. */ -#define CHNL_IOCSTATEOS 0x8000 /* End Of Stream reached. */ - -/* Macros for checking I/O Completion status: */ -#define CHNL_IS_IO_COMPLETE(ioc) (!(ioc.status & ~CHNL_IOCSTATEOS)) -#define CHNL_IS_IO_CANCELLED(ioc) (ioc.status & CHNL_IOCSTATCANCEL) -#define CHNL_IS_TIMED_OUT(ioc) (ioc.status & CHNL_IOCSTATTIMEOUT) - -/* Channel attributes: */ -struct chnl_attr { - u32 uio_reqs; /* Max # of preallocated I/O requests. */ - void *event_obj; /* User supplied auto-reset event object. */ - char *str_event_name; /* Ptr to name of user event object. */ - void *reserved1; /* Reserved for future use. */ - u32 reserved2; /* Reserved for future use. */ - -}; - -/* I/O completion record: */ -struct chnl_ioc { - void *buf; /* Buffer to be filled/emptied. */ - u32 byte_size; /* Bytes transferred. */ - u32 buf_size; /* Actual buffer size in bytes */ - u32 status; /* Status of IO completion. */ - u32 arg; /* User argument associated with buf. */ -}; - -#endif /* CHNLDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h b/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h deleted file mode 100644 index 4114c79e2466..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/chnlpriv.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * chnlpriv.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Private channel header shared between DSPSYS, DSPAPI and - * Bridge driver modules. - * - * 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 CHNLPRIV_ -#define CHNLPRIV_ - -#include <dspbridge/chnldefs.h> -#include <dspbridge/devdefs.h> -#include <dspbridge/sync.h> - -/* Channel manager limits: */ -#define CHNL_MAXCHANNELS 32 /* Max channels available per transport */ - -/* - * Trans port channel Id definitions:(must match dsp-side). - * - * For CHNL_MAXCHANNELS = 16: - * - * ChnlIds: - * 0-15 (PCPY) - transport 0) - * 16-31 (DDMA) - transport 1) - * 32-47 (ZCPY) - transport 2) - */ -#define CHNL_PCPY 0 /* Proc-copy transport 0 */ - -/* Higher level channel states: */ -#define CHNL_STATEREADY 0 /* Channel ready for I/O. */ -#define CHNL_STATECANCEL 1 /* I/O was cancelled. */ -#define CHNL_STATEEOS 2 /* End Of Stream reached. */ - -/* Macros for checking mode: */ -#define CHNL_IS_INPUT(mode) (mode & CHNL_MODEFROMDSP) -#define CHNL_IS_OUTPUT(mode) (!CHNL_IS_INPUT(mode)) - -/* Types of channel class libraries: */ -#define CHNL_TYPESM 1 /* Shared memory driver. */ - -/* Channel info. */ -struct chnl_info { - struct chnl_mgr *chnl_mgr; /* Owning channel manager. */ - u32 cnhl_id; /* Channel ID. */ - void *event_obj; /* Channel I/O completion event. */ - /*Abstraction of I/O completion event. */ - struct sync_object *sync_event; - s8 mode; /* Channel mode. */ - u8 state; /* Current channel state. */ - u32 bytes_tx; /* Total bytes transferred. */ - u32 cio_cs; /* Number of IOCs in queue. */ - u32 cio_reqs; /* Number of IO Requests in queue. */ - u32 process; /* Process owning this channel. */ -}; - -/* Channel manager info: */ -struct chnl_mgrinfo { - u8 type; /* Type of channel class library. */ - /* Channel handle, given the channel id. */ - struct chnl_object *chnl_obj; - u8 open_channels; /* Number of open channels. */ - u8 max_channels; /* total # of chnls supported */ -}; - -/* Channel Manager Attrs: */ -struct chnl_mgrattrs { - /* Max number of channels this manager can use. */ - u8 max_channels; - u32 word_size; /* DSP Word size. */ -}; - -#endif /* CHNLPRIV_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/clk.h b/drivers/staging/tidspbridge/include/dspbridge/clk.h deleted file mode 100644 index 685341c50693..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/clk.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * clk.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Provides Clock functions. - * - * 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 _CLK_H -#define _CLK_H - -enum dsp_clk_id { - DSP_CLK_IVA2 = 0, - DSP_CLK_GPT5, - DSP_CLK_GPT6, - DSP_CLK_GPT7, - DSP_CLK_GPT8, - DSP_CLK_WDT3, - DSP_CLK_MCBSP1, - DSP_CLK_MCBSP2, - DSP_CLK_MCBSP3, - DSP_CLK_MCBSP4, - DSP_CLK_MCBSP5, - DSP_CLK_SSI, - DSP_CLK_NOT_DEFINED -}; - -/* - * ======== dsp_clk_exit ======== - * Purpose: - * Discontinue usage of module; free resources when reference count - * reaches 0. - * Parameters: - * Returns: - * Requires: - * CLK initialized. - * Ensures: - * Resources used by module are freed when cRef reaches zero. - */ -extern void dsp_clk_exit(void); - -/* - * ======== dsp_clk_init ======== - * Purpose: - * Initializes private state of CLK module. - * Parameters: - * Returns: - * TRUE if initialized; FALSE if error occurred. - * Requires: - * Ensures: - * CLK initialized. - */ -extern void dsp_clk_init(void); - -void dsp_gpt_wait_overflow(short int clk_id, unsigned int load); - -/* - * ======== dsp_clk_enable ======== - * Purpose: - * Enables the clock requested. - * Parameters: - * Returns: - * 0: Success. - * -EPERM: Error occurred while enabling the clock. - * Requires: - * Ensures: - */ -extern int dsp_clk_enable(enum dsp_clk_id clk_id); - -u32 dsp_clock_enable_all(u32 dsp_per_clocks); - -/* - * ======== dsp_clk_disable ======== - * Purpose: - * Disables the clock requested. - * Parameters: - * Returns: - * 0: Success. - * -EPERM: Error occurred while disabling the clock. - * Requires: - * Ensures: - */ -extern int dsp_clk_disable(enum dsp_clk_id clk_id); - -extern u32 dsp_clk_get_iva2_rate(void); - -u32 dsp_clock_disable_all(u32 dsp_per_clocks); - -extern void ssi_clk_prepare(bool FLAG); - -#endif /* _SYNC_H */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/cmm.h b/drivers/staging/tidspbridge/include/dspbridge/cmm.h deleted file mode 100644 index 2adf9ecdf07f..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/cmm.h +++ /dev/null @@ -1,337 +0,0 @@ -/* - * cmm.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * The Communication Memory Management(CMM) module provides shared memory - * management services for DSP/BIOS Bridge data streaming and messaging. - * Multiple shared memory segments can be registered with CMM. Memory is - * coelesced back to the appropriate pool when a buffer is freed. - * - * The CMM_Xlator[xxx] functions are used for node messaging and data - * streaming address translation to perform zero-copy inter-processor - * data transfer(GPP<->DSP). A "translator" object is created for a node or - * stream object that contains per thread virtual address information. This - * translator info is used at runtime to perform SM address translation - * to/from the DSP address space. - * - * Notes: - * cmm_xlator_alloc_buf - Used by Node and Stream modules for SM address - * translation. - * - * Copyright (C) 2008 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 CMM_ -#define CMM_ - -#include <dspbridge/devdefs.h> - -#include <dspbridge/cmmdefs.h> -#include <dspbridge/host_os.h> - -/* - * ======== cmm_calloc_buf ======== - * Purpose: - * Allocate memory buffers that can be used for data streaming or - * messaging. - * Parameters: - * hcmm_mgr: Cmm Mgr handle. - * usize: Number of bytes to allocate. - * pattr: Attributes of memory to allocate. - * pp_buf_va: Address of where to place VA. - * Returns: - * Pointer to a zero'd block of SM memory; - * NULL if memory couldn't be allocated, - * or if byte_size == 0, - * Requires: - * Valid hcmm_mgr. - * CMM initialized. - * Ensures: - * The returned pointer, if not NULL, points to a valid memory block of - * the size requested. - * - */ -extern void *cmm_calloc_buf(struct cmm_object *hcmm_mgr, - u32 usize, struct cmm_attrs *pattrs, - void **pp_buf_va); - -/* - * ======== cmm_create ======== - * Purpose: - * Create a communication memory manager object. - * Parameters: - * ph_cmm_mgr: Location to store a communication manager handle on - * output. - * hdev_obj: Handle to a device object. - * mgr_attrts: Comm mem manager attributes. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * -EPERM: Failed to initialize critical sect sync object. - * - * Requires: - * ph_cmm_mgr != NULL. - * mgr_attrts->min_block_size >= 4 bytes. - * Ensures: - * - */ -extern int cmm_create(struct cmm_object **ph_cmm_mgr, - struct dev_object *hdev_obj, - const struct cmm_mgrattrs *mgr_attrts); - -/* - * ======== cmm_destroy ======== - * Purpose: - * Destroy the communication memory manager object. - * Parameters: - * hcmm_mgr: Cmm Mgr handle. - * force: Force deallocation of all cmm memory immediately if set TRUE. - * If FALSE, and outstanding allocations will return -EPERM - * status. - * Returns: - * 0: CMM object & resources deleted. - * -EPERM: Unable to free CMM object due to outstanding allocation. - * -EFAULT: Unable to free CMM due to bad handle. - * Requires: - * CMM is initialized. - * hcmm_mgr != NULL. - * Ensures: - * Memory resources used by Cmm Mgr are freed. - */ -extern int cmm_destroy(struct cmm_object *hcmm_mgr, bool force); - -/* - * ======== cmm_free_buf ======== - * Purpose: - * Free the given buffer. - * Parameters: - * hcmm_mgr: Cmm Mgr handle. - * pbuf: Pointer to memory allocated by cmm_calloc_buf(). - * ul_seg_id: SM segment Id used in CMM_Calloc() attrs. - * Set to 0 to use default segment. - * Returns: - * 0 - * -EPERM - * Requires: - * CMM initialized. - * buf_pa != NULL - * Ensures: - * - */ -extern int cmm_free_buf(struct cmm_object *hcmm_mgr, - void *buf_pa, u32 ul_seg_id); - -/* - * ======== cmm_get_handle ======== - * Purpose: - * Return the handle to the cmm mgr for the given device obj. - * Parameters: - * hprocessor: Handle to a Processor. - * ph_cmm_mgr: Location to store the shared memory mgr handle on - * output. - * - * Returns: - * 0: Cmm Mgr opaque handle returned. - * -EFAULT: Invalid handle. - * Requires: - * ph_cmm_mgr != NULL - * hdev_obj != NULL - * Ensures: - */ -extern int cmm_get_handle(void *hprocessor, - struct cmm_object **ph_cmm_mgr); - -/* - * ======== cmm_get_info ======== - * Purpose: - * Return the current SM and VM utilization information. - * Parameters: - * hcmm_mgr: Handle to a Cmm Mgr. - * cmm_info_obj: Location to store the Cmm information on output. - * - * Returns: - * 0: Success. - * -EFAULT: Invalid handle. - * -EINVAL Invalid input argument. - * Requires: - * Ensures: - * - */ -extern int cmm_get_info(struct cmm_object *hcmm_mgr, - struct cmm_info *cmm_info_obj); - -/* - * ======== cmm_register_gppsm_seg ======== - * Purpose: - * Register a block of SM with the CMM. - * Parameters: - * hcmm_mgr: Handle to a Cmm Mgr. - * lpGPPBasePA: GPP Base Physical address. - * ul_size: Size in GPP bytes. - * dsp_addr_offset GPP PA to DSP PA Offset. - * c_factor: Add offset if CMM_ADDTODSPPA, sub if CMM_SUBFROMDSPPA. - * dw_dsp_base: DSP virtual base byte address. - * ul_dsp_size: Size of DSP segment in bytes. - * sgmt_id: Address to store segment Id. - * - * Returns: - * 0: Success. - * -EFAULT: Invalid hcmm_mgr handle. - * -EINVAL: Invalid input argument. - * -EPERM: Unable to register. - * - On success *sgmt_id is a valid SM segment ID. - * Requires: - * ul_size > 0 - * sgmt_id != NULL - * dw_gpp_base_pa != 0 - * c_factor = CMM_ADDTODSPPA || c_factor = CMM_SUBFROMDSPPA - * Ensures: - * - */ -extern int cmm_register_gppsm_seg(struct cmm_object *hcmm_mgr, - unsigned int dw_gpp_base_pa, - u32 ul_size, - u32 dsp_addr_offset, - s8 c_factor, - unsigned int dw_dsp_base, - u32 ul_dsp_size, - u32 *sgmt_id, u32 gpp_base_va); - -/* - * ======== cmm_un_register_gppsm_seg ======== - * Purpose: - * Unregister the given memory segment that was previously registered - * by cmm_register_gppsm_seg. - * Parameters: - * hcmm_mgr: Handle to a Cmm Mgr. - * ul_seg_id Segment identifier returned by cmm_register_gppsm_seg. - * Returns: - * 0: Success. - * -EFAULT: Invalid handle. - * -EINVAL: Invalid ul_seg_id. - * -EPERM: Unable to unregister for unknown reason. - * Requires: - * Ensures: - * - */ -extern int cmm_un_register_gppsm_seg(struct cmm_object *hcmm_mgr, - u32 ul_seg_id); - -/* - * ======== cmm_xlator_alloc_buf ======== - * Purpose: - * Allocate the specified SM buffer and create a local memory descriptor. - * Place on the descriptor on the translator's HaQ (Host Alloc'd Queue). - * Parameters: - * xlator: Handle to a Xlator object. - * va_buf: Virtual address ptr(client context) - * pa_size: Size of SM memory to allocate. - * Returns: - * Ptr to valid physical address(Pa) of pa_size bytes, NULL if failed. - * Requires: - * va_buf != 0. - * pa_size != 0. - * Ensures: - * - */ -extern void *cmm_xlator_alloc_buf(struct cmm_xlatorobject *xlator, - void *va_buf, u32 pa_size); - -/* - * ======== cmm_xlator_create ======== - * Purpose: - * Create a translator(xlator) object used for process specific Va<->Pa - * address translation. Node messaging and streams use this to perform - * inter-processor(GPP<->DSP) zero-copy data transfer. - * Parameters: - * xlator: Address to place handle to a new Xlator handle. - * hcmm_mgr: Handle to Cmm Mgr associated with this translator. - * xlator_attrs: Translator attributes used for the client NODE or STREAM. - * Returns: - * 0: Success. - * -EINVAL: Bad input Attrs. - * -ENOMEM: Insufficient memory(local) for requested resources. - * Requires: - * xlator != NULL - * hcmm_mgr != NULL - * xlator_attrs != NULL - * Ensures: - * - */ -extern int cmm_xlator_create(struct cmm_xlatorobject **xlator, - struct cmm_object *hcmm_mgr, - struct cmm_xlatorattrs *xlator_attrs); - -/* - * ======== cmm_xlator_free_buf ======== - * Purpose: - * Free SM buffer and descriptor. - * Does not free client process VM. - * Parameters: - * xlator: handle to translator. - * buf_va Virtual address of PA to free. - * Returns: - * 0: Success. - * -EFAULT: Bad translator handle. - * Requires: - * Ensures: - * - */ -extern int cmm_xlator_free_buf(struct cmm_xlatorobject *xlator, - void *buf_va); - -/* - * ======== cmm_xlator_info ======== - * Purpose: - * Set/Get process specific "translator" address info. - * This is used to perform fast virtual address translation - * for shared memory buffers between the GPP and DSP. - * Parameters: - * xlator: handle to translator. - * paddr: Virtual base address of segment. - * ul_size: Size in bytes. - * segm_id: Segment identifier of SM segment(s) - * set_info Set xlator fields if TRUE, else return base addr - * Returns: - * 0: Success. - * -EFAULT: Bad translator handle. - * Requires: - * (paddr != NULL) - * (ul_size > 0) - * Ensures: - * - */ -extern int cmm_xlator_info(struct cmm_xlatorobject *xlator, - u8 **paddr, - u32 ul_size, u32 segm_id, bool set_info); - -/* - * ======== cmm_xlator_translate ======== - * Purpose: - * Perform address translation VA<->PA for the specified stream or - * message shared memory buffer. - * Parameters: - * xlator: handle to translator. - * paddr address of buffer to translate. - * xtype Type of address xlation. CMM_PA2VA or CMM_VA2PA. - * Returns: - * Valid address on success, else NULL. - * Requires: - * paddr != NULL - * xtype >= CMM_VA2PA) && (xtype <= CMM_DSPPA2PA) - * Ensures: - * - */ -extern void *cmm_xlator_translate(struct cmm_xlatorobject *xlator, - void *paddr, enum cmm_xlatetype xtype); - -#endif /* CMM_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h b/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h deleted file mode 100644 index a264fa69a4fc..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * cmmdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global MEM constants and types. - * - * Copyright (C) 2008 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 CMMDEFS_ -#define CMMDEFS_ - - -/* Cmm attributes used in cmm_create() */ -struct cmm_mgrattrs { - /* Minimum SM allocation; default 32 bytes. */ - u32 min_block_size; -}; - -/* Attributes for CMM_AllocBuf() & CMM_AllocDesc() */ -struct cmm_attrs { - u32 seg_id; /* 1,2... are SM segments. 0 is not. */ - u32 alignment; /* 0,1,2,4....min_block_size */ -}; - -/* - * DSPPa to GPPPa Conversion Factor. - * - * For typical platforms: - * converted Address = PaDSP + ( c_factor * addressToConvert). - */ -#define CMM_SUBFROMDSPPA -1 -#define CMM_ADDTODSPPA 1 - -#define CMM_ALLSEGMENTS 0xFFFFFF /* All SegIds */ -#define CMM_MAXGPPSEGS 1 /* Maximum # of SM segs */ - -/* - * SMSEGs are SM segments the DSP allocates from. - * - * This info is used by the GPP to xlate DSP allocated PAs. - */ - -struct cmm_seginfo { - u32 seg_base_pa; /* Start Phys address of SM segment */ - /* Total size in bytes of segment: DSP+GPP */ - u32 total_seg_size; - u32 gpp_base_pa; /* Start Phys addr of Gpp SM seg */ - u32 gpp_size; /* Size of Gpp SM seg in bytes */ - u32 dsp_base_va; /* DSP virt base byte address */ - u32 dsp_size; /* DSP seg size in bytes */ - /* # of current GPP allocations from this segment */ - u32 in_use_cnt; - u32 seg_base_va; /* Start Virt address of SM seg */ - -}; - -/* CMM useful information */ -struct cmm_info { - /* # of SM segments registered with this Cmm. */ - u32 num_gppsm_segs; - /* Total # of allocations outstanding for CMM */ - u32 total_in_use_cnt; - /* Min SM block size allocation from cmm_create() */ - u32 min_block_size; - /* Info per registered SM segment. */ - struct cmm_seginfo seg_info[CMM_MAXGPPSEGS]; -}; - -/* XlatorCreate attributes */ -struct cmm_xlatorattrs { - u32 seg_id; /* segment Id used for SM allocations */ - u32 dsp_bufs; /* # of DSP-side bufs */ - u32 dsp_buf_size; /* size of DSP-side bufs in GPP bytes */ - /* Vm base address alloc'd in client process context */ - void *vm_base; - /* vm_size must be >= (dwMaxNumBufs * dwMaxSize) */ - u32 vm_size; -}; - -/* - * Cmm translation types. Use to map SM addresses to process context. - */ -enum cmm_xlatetype { - CMM_VA2PA = 0, /* Virtual to GPP physical address xlation */ - CMM_PA2VA = 1, /* GPP Physical to virtual */ - CMM_VA2DSPPA = 2, /* Va to DSP Pa */ - CMM_PA2DSPPA = 3, /* GPP Pa to DSP Pa */ - CMM_DSPPA2PA = 4, /* DSP Pa to GPP Pa */ -}; - -struct cmm_object; -struct cmm_xlatorobject; - -#endif /* CMMDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/cod.h b/drivers/staging/tidspbridge/include/dspbridge/cod.h deleted file mode 100644 index ba2005d02422..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/cod.h +++ /dev/null @@ -1,329 +0,0 @@ -/* - * 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_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbdcd.h b/drivers/staging/tidspbridge/include/dspbridge/dbdcd.h deleted file mode 100644 index 7cc3e12686e8..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dbdcd.h +++ /dev/null @@ -1,358 +0,0 @@ -/* - * dbdcd.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Defines the DSP/BIOS Bridge Configuration Database (DCD) API. - * - * Copyright (C) 2008 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 DBDCD_ -#define DBDCD_ - -#include <dspbridge/dbdcddef.h> -#include <dspbridge/host_os.h> -#include <dspbridge/nldrdefs.h> - -/* - * ======== dcd_auto_register ======== - * Purpose: - * This function automatically registers DCD objects specified in a - * special COFF section called ".dcd_register" - * Parameters: - * hdcd_mgr: A DCD manager handle. - * sz_coff_path: Pointer to name of COFF file containing DCD - * objects to be registered. - * Returns: - * 0: Success. - * -EACCES: Unable to find auto-registration/read/load section. - * -EFAULT: Invalid DCD_HMANAGER handle.. - * Requires: - * DCD initialized. - * Ensures: - * Note: - * Due to the DCD database construction, it is essential for a DCD-enabled - * COFF file to contain the right COFF sections, especially - * ".dcd_register", which is used for auto registration. - */ -extern int dcd_auto_register(struct dcd_manager *hdcd_mgr, - char *sz_coff_path); - -/* - * ======== dcd_auto_unregister ======== - * Purpose: - * This function automatically unregisters DCD objects specified in a - * special COFF section called ".dcd_register" - * Parameters: - * hdcd_mgr: A DCD manager handle. - * sz_coff_path: Pointer to name of COFF file containing - * DCD objects to be unregistered. - * Returns: - * 0: Success. - * -EACCES: Unable to find auto-registration/read/load section. - * -EFAULT: Invalid DCD_HMANAGER handle.. - * Requires: - * DCD initialized. - * Ensures: - * Note: - * Due to the DCD database construction, it is essential for a DCD-enabled - * COFF file to contain the right COFF sections, especially - * ".dcd_register", which is used for auto unregistration. - */ -extern int dcd_auto_unregister(struct dcd_manager *hdcd_mgr, - char *sz_coff_path); - -/* - * ======== dcd_create_manager ======== - * Purpose: - * This function creates a DCD module manager. - * Parameters: - * sz_zl_dll_name: Pointer to a DLL name string. - * dcd_mgr: A pointer to a DCD manager handle. - * Returns: - * 0: Success. - * -ENOMEM: Unable to allocate memory for DCD manager handle. - * -EPERM: General failure. - * Requires: - * DCD initialized. - * sz_zl_dll_name is non-NULL. - * dcd_mgr is non-NULL. - * Ensures: - * A DCD manager handle is created. - */ -extern int dcd_create_manager(char *sz_zl_dll_name, - struct dcd_manager **dcd_mgr); - -/* - * ======== dcd_destroy_manager ======== - * Purpose: - * This function destroys a DCD module manager. - * Parameters: - * hdcd_mgr: A DCD manager handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid DCD manager handle. - * Requires: - * DCD initialized. - * Ensures: - */ -extern int dcd_destroy_manager(struct dcd_manager *hdcd_mgr); - -/* - * ======== dcd_enumerate_object ======== - * Purpose: - * This function enumerates currently visible DSP/BIOS Bridge objects - * and returns the UUID and type of each enumerated object. - * Parameters: - * index: The object enumeration index. - * obj_type: Type of object to enumerate. - * uuid_obj: Pointer to a dsp_uuid object. - * Returns: - * 0: Success. - * -EPERM: Unable to enumerate through the DCD database. - * ENODATA: Enumeration completed. This is not an error code. - * Requires: - * DCD initialized. - * uuid_obj is a valid pointer. - * Ensures: - * Details: - * This function can be used in conjunction with dcd_get_object_def to - * retrieve object properties. - */ -extern int dcd_enumerate_object(s32 index, - enum dsp_dcdobjtype obj_type, - struct dsp_uuid *uuid_obj); - -/* - * ======== dcd_exit ======== - * Purpose: - * This function cleans up the DCD module. - * Parameters: - * Returns: - * Requires: - * DCD initialized. - * Ensures: - */ -extern void dcd_exit(void); - -/* - * ======== dcd_get_dep_libs ======== - * Purpose: - * Given the uuid of a library and size of array of uuids, this function - * fills the array with the uuids of all dependent libraries of the input - * library. - * Parameters: - * hdcd_mgr: A DCD manager handle. - * uuid_obj: Pointer to a dsp_uuid for a library. - * num_libs: Size of uuid array (number of library uuids). - * dep_lib_uuids: Array of dependent library uuids to be filled in. - * prstnt_dep_libs: Array indicating if corresponding lib is persistent. - * phase: phase to obtain correct input library - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failure. - * -EACCES: Failure to read section containing library info. - * -EPERM: General failure. - * Requires: - * DCD initialized. - * Valid hdcd_mgr. - * uuid_obj != NULL - * dep_lib_uuids != NULL. - * Ensures: - */ -extern int dcd_get_dep_libs(struct dcd_manager *hdcd_mgr, - struct dsp_uuid *uuid_obj, - u16 num_libs, - struct dsp_uuid *dep_lib_uuids, - bool *prstnt_dep_libs, - enum nldr_phase phase); - -/* - * ======== dcd_get_num_dep_libs ======== - * Purpose: - * Given the uuid of a library, determine its number of dependent - * libraries. - * Parameters: - * hdcd_mgr: A DCD manager handle. - * uuid_obj: Pointer to a dsp_uuid for a library. - * num_libs: Size of uuid array (number of library uuids). - * num_pers_libs: number of persistent dependent library. - * phase: Phase to obtain correct input library - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failure. - * -EACCES: Failure to read section containing library info. - * -EPERM: General failure. - * Requires: - * DCD initialized. - * Valid hdcd_mgr. - * uuid_obj != NULL - * num_libs != NULL. - * Ensures: - */ -extern int dcd_get_num_dep_libs(struct dcd_manager *hdcd_mgr, - struct dsp_uuid *uuid_obj, - u16 *num_libs, - u16 *num_pers_libs, - enum nldr_phase phase); - -/* - * ======== dcd_get_library_name ======== - * Purpose: - * This function returns the name of a (dynamic) library for a given - * UUID. - * Parameters: - * hdcd_mgr: A DCD manager handle. - * uuid_obj: Pointer to a dsp_uuid that represents a unique DSP/BIOS - * Bridge object. - * str_lib_name: Buffer to hold library name. - * buff_size: Contains buffer size. Set to string size on output. - * phase: Which phase to load - * phase_split: Are phases in multiple libraries - * Returns: - * 0: Success. - * -EPERM: General failure. - * Requires: - * DCD initialized. - * Valid hdcd_mgr. - * str_lib_name != NULL. - * uuid_obj != NULL - * buff_size != NULL. - * Ensures: - */ -extern int dcd_get_library_name(struct dcd_manager *hdcd_mgr, - struct dsp_uuid *uuid_obj, - char *str_lib_name, - u32 *buff_size, - enum nldr_phase phase, - bool *phase_split); - -/* - * ======== dcd_get_object_def ======== - * Purpose: - * This function returns the properties/attributes of a DSP/BIOS Bridge - * object. - * Parameters: - * hdcd_mgr: A DCD manager handle. - * uuid_obj: Pointer to a dsp_uuid that represents a unique - * DSP/BIOS Bridge object. - * obj_type: The type of DSP/BIOS Bridge object to be - * referenced (node, processor, etc). - * obj_def: Pointer to an object definition structure. A - * union of various possible DCD object types. - * Returns: - * 0: Success. - * -EACCES: Unable to access/read/parse/load content of object code - * section. - * -EPERM: General failure. - * -EFAULT: Invalid DCD_HMANAGER handle. - * Requires: - * DCD initialized. - * obj_uuid is non-NULL. - * obj_def is non-NULL. - * Ensures: - */ -extern int dcd_get_object_def(struct dcd_manager *hdcd_mgr, - struct dsp_uuid *obj_uuid, - enum dsp_dcdobjtype obj_type, - struct dcd_genericobj *obj_def); - -/* - * ======== dcd_get_objects ======== - * Purpose: - * This function finds all DCD objects specified in a special - * COFF section called ".dcd_register", and for each object, - * call a "register" function. The "register" function may perform - * various actions, such as 1) register nodes in the node database, 2) - * unregister nodes from the node database, and 3) add overlay nodes. - * Parameters: - * hdcd_mgr: A DCD manager handle. - * sz_coff_path: Pointer to name of COFF file containing DCD - * objects. - * register_fxn: Callback fxn to be applied on each located - * DCD object. - * handle: Handle to pass to callback. - * Returns: - * 0: Success. - * -EACCES: Unable to access/read/parse/load content of object code - * section. - * -EFAULT: Invalid DCD_HMANAGER handle.. - * Requires: - * DCD initialized. - * Ensures: - * Note: - * Due to the DCD database construction, it is essential for a DCD-enabled - * COFF file to contain the right COFF sections, especially - * ".dcd_register", which is used for auto registration. - */ -extern int dcd_get_objects(struct dcd_manager *hdcd_mgr, - char *sz_coff_path, - dcd_registerfxn register_fxn, void *handle); - -/* - * ======== dcd_init ======== - * Purpose: - * This function initializes DCD. - * Parameters: - * Returns: - * FALSE: Initialization failed. - * TRUE: Initialization succeeded. - * Requires: - * Ensures: - * DCD initialized. - */ -extern bool dcd_init(void); - -/* - * ======== dcd_register_object ======== - * Purpose: - * This function registers a DSP/BIOS Bridge object in the DCD database. - * Parameters: - * uuid_obj: Pointer to a dsp_uuid that identifies a DSP/BIOS - * Bridge object. - * obj_type: Type of object. - * psz_path_name: Path to the object's COFF file. - * Returns: - * 0: Success. - * -EPERM: Failed to register object. - * Requires: - * DCD initialized. - * uuid_obj and szPathName are non-NULL values. - * obj_type is a valid type value. - * Ensures: - */ -extern int dcd_register_object(struct dsp_uuid *uuid_obj, - enum dsp_dcdobjtype obj_type, - char *psz_path_name); - -/* - * ======== dcd_unregister_object ======== - * Purpose: - * This function de-registers a valid DSP/BIOS Bridge object from the DCD - * database. - * Parameters: - * uuid_obj: Pointer to a dsp_uuid that identifies a DSP/BIOS Bridge - * object. - * obj_type: Type of object. - * Returns: - * 0: Success. - * -EPERM: Unable to de-register the specified object. - * Requires: - * DCD initialized. - * uuid_obj is a non-NULL value. - * obj_type is a valid type value. - * Ensures: - */ -extern int dcd_unregister_object(struct dsp_uuid *uuid_obj, - enum dsp_dcdobjtype obj_type); - -#endif /* _DBDCD_H */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbdcddef.h b/drivers/staging/tidspbridge/include/dspbridge/dbdcddef.h deleted file mode 100644 index bc201b329033..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dbdcddef.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * dbdcddef.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DCD (DSP/BIOS Bridge Configuration Database) constants and types. - * - * Copyright (C) 2008 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 DBDCDDEF_ -#define DBDCDDEF_ - -#include <dspbridge/dbdefs.h> -#include <dspbridge/mgrpriv.h> /* for mgr_processorextinfo */ - -/* - * The following defines are critical elements for the DCD module: - * - * - DCD_REGKEY enables DCD functions to locate registered DCD objects. - * - DCD_REGISTER_SECTION identifies the COFF section where the UUID of - * registered DCD objects are stored. - */ -#define DCD_REGKEY "Software\\TexasInstruments\\DspBridge\\DCD" -#define DCD_REGISTER_SECTION ".dcd_register" - -#define DCD_MAXPATHLENGTH 255 - -/* DCD Manager Object */ -struct dcd_manager; - -struct dcd_key_elem { - struct list_head link; /* Make it linked to a list */ - char name[DCD_MAXPATHLENGTH]; /* Name of a given value entry */ - char *path; /* Pointer to the actual data */ -}; - -/* DCD Node Properties */ -struct dcd_nodeprops { - struct dsp_ndbprops ndb_props; - u32 msg_segid; - u32 msg_notify_type; - char *str_create_phase_fxn; - char *str_delete_phase_fxn; - char *str_execute_phase_fxn; - char *str_i_alg_name; - - /* Dynamic load properties */ - u16 load_type; /* Static, dynamic, overlay */ - u32 data_mem_seg_mask; /* Data memory requirements */ - u32 code_mem_seg_mask; /* Code memory requirements */ -}; - -/* DCD Generic Object Type */ -struct dcd_genericobj { - union dcd_obj { - struct dcd_nodeprops node_obj; /* node object. */ - /* processor object. */ - struct dsp_processorinfo proc_info; - /* extended proc object (private) */ - struct mgr_processorextinfo ext_proc_obj; - } obj_data; -}; - -/* DCD Internal Callback Type */ -typedef int(*dcd_registerfxn) (struct dsp_uuid *uuid_obj, - enum dsp_dcdobjtype obj_type, - void *handle); - -#endif /* DBDCDDEF_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h deleted file mode 100644 index c8f464505efc..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dbdefs.h +++ /dev/null @@ -1,488 +0,0 @@ -/* - * dbdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global definitions and constants for DSP/BIOS Bridge. - * - * 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 DBDEFS_ -#define DBDEFS_ - -#include <linux/types.h> - -#include <dspbridge/rms_sh.h> /* Types shared between GPP and DSP */ - -#define PG_SIZE4K 4096 -#define PG_MASK(pg_size) (~((pg_size)-1)) -#define PG_ALIGN_LOW(addr, pg_size) ((addr) & PG_MASK(pg_size)) -#define PG_ALIGN_HIGH(addr, pg_size) (((addr)+(pg_size)-1) & PG_MASK(pg_size)) - -/* API return value and calling convention */ -#define DBAPI int - -/* Maximum length of node name, used in dsp_ndbprops */ -#define DSP_MAXNAMELEN 32 - -/* notify_type values for the RegisterNotify() functions. */ -#define DSP_SIGNALEVENT 0x00000001 - -/* Types of events for processors */ -#define DSP_PROCESSORSTATECHANGE 0x00000001 -#define DSP_PROCESSORATTACH 0x00000002 -#define DSP_PROCESSORDETACH 0x00000004 -#define DSP_PROCESSORRESTART 0x00000008 - -/* DSP exception events (DSP/BIOS and DSP MMU fault) */ -#define DSP_MMUFAULT 0x00000010 -#define DSP_SYSERROR 0x00000020 -#define DSP_EXCEPTIONABORT 0x00000300 -#define DSP_PWRERROR 0x00000080 -#define DSP_WDTOVERFLOW 0x00000040 - -/* IVA exception events (IVA MMU fault) */ -#define IVA_MMUFAULT 0x00000040 -/* Types of events for nodes */ -#define DSP_NODESTATECHANGE 0x00000100 -#define DSP_NODEMESSAGEREADY 0x00000200 - -/* Types of events for streams */ -#define DSP_STREAMDONE 0x00001000 -#define DSP_STREAMIOCOMPLETION 0x00002000 - -/* Handle definition representing the GPP node in DSPNode_Connect() calls */ -#define DSP_HGPPNODE 0xFFFFFFFF - -/* Node directions used in DSPNode_Connect() */ -#define DSP_TONODE 1 -#define DSP_FROMNODE 2 - -/* Define Node Minimum and Maximum Priorities */ -#define DSP_NODE_MIN_PRIORITY 1 -#define DSP_NODE_MAX_PRIORITY 15 - -/* msg_ctrl contains SM buffer description */ -#define DSP_RMSBUFDESC RMS_BUFDESC - -/* Processor ID numbers */ -#define DSP_UNIT 0 -#define IVA_UNIT 1 - -#define DSPWORD unsigned char -#define DSPWORDSIZE sizeof(DSPWORD) - -#define MAX_PROFILES 16 - -/* DSP chip type */ -#define DSPTYPE64 0x99 - -/* Handy Macros */ -#define VALID_PROC_EVENT (DSP_PROCESSORSTATECHANGE | DSP_PROCESSORATTACH | \ - DSP_PROCESSORDETACH | DSP_PROCESSORRESTART | DSP_NODESTATECHANGE | \ - DSP_STREAMDONE | DSP_STREAMIOCOMPLETION | DSP_MMUFAULT | \ - DSP_SYSERROR | DSP_WDTOVERFLOW | DSP_PWRERROR) - -static inline bool is_valid_proc_event(u32 x) -{ - return (x == 0 || (x & VALID_PROC_EVENT && !(x & ~VALID_PROC_EVENT))); -} - -/* The Node UUID structure */ -struct dsp_uuid { - u32 data1; - u16 data2; - u16 data3; - u8 data4; - u8 data5; - u8 data6[6]; -}; - -/* DCD types */ -enum dsp_dcdobjtype { - DSP_DCDNODETYPE, - DSP_DCDPROCESSORTYPE, - DSP_DCDLIBRARYTYPE, - DSP_DCDCREATELIBTYPE, - DSP_DCDEXECUTELIBTYPE, - DSP_DCDDELETELIBTYPE, - /* DSP_DCDMAXOBJTYPE is meant to be the last DCD object type */ - DSP_DCDMAXOBJTYPE -}; - -/* Processor states */ -enum dsp_procstate { - PROC_STOPPED, - PROC_LOADED, - PROC_RUNNING, - PROC_ERROR -}; - -/* - * Node types: Message node, task node, xDAIS socket node, and - * device node. _NODE_GPP is used when defining a stream connection - * between a task or socket node and the GPP. - * - */ -enum node_type { - NODE_DEVICE, - NODE_TASK, - NODE_DAISSOCKET, - NODE_MESSAGE, - NODE_GPP -}; - -/* - * ======== node_state ======== - * Internal node states. - */ -enum node_state { - NODE_ALLOCATED, - NODE_CREATED, - NODE_RUNNING, - NODE_PAUSED, - NODE_DONE, - NODE_CREATING, - NODE_STARTING, - NODE_PAUSING, - NODE_TERMINATING, - NODE_DELETING, -}; - -/* Stream states */ -enum dsp_streamstate { - STREAM_IDLE, - STREAM_READY, - STREAM_PENDING, - STREAM_DONE -}; - -/* Stream connect types */ -enum dsp_connecttype { - CONNECTTYPE_NODEOUTPUT, - CONNECTTYPE_GPPOUTPUT, - CONNECTTYPE_NODEINPUT, - CONNECTTYPE_GPPINPUT -}; - -/* Stream mode types */ -enum dsp_strmmode { - STRMMODE_PROCCOPY, /* Processor(s) copy stream data payloads */ - STRMMODE_ZEROCOPY, /* Strm buffer ptrs swapped no data copied */ - STRMMODE_LDMA, /* Local DMA : OMAP's System-DMA device */ - STRMMODE_RDMA /* Remote DMA: OMAP's DSP-DMA device */ -}; - -/* Resource Types */ -enum dsp_resourceinfotype { - DSP_RESOURCE_DYNDARAM = 0, - DSP_RESOURCE_DYNSARAM, - DSP_RESOURCE_DYNEXTERNAL, - DSP_RESOURCE_DYNSRAM, - DSP_RESOURCE_PROCLOAD -}; - -/* Memory Segment Types */ -enum dsp_memtype { - DSP_DYNDARAM = 0, - DSP_DYNSARAM, - DSP_DYNEXTERNAL, - DSP_DYNSRAM -}; - -/* Memory Flush Types */ -enum dsp_flushtype { - PROC_INVALIDATE_MEM = 0, - PROC_WRITEBACK_MEM, - PROC_WRITEBACK_INVALIDATE_MEM, -}; - -/* Memory Segment Status Values */ -struct dsp_memstat { - u32 size; - u32 total_free_size; - u32 len_max_free_block; - u32 num_free_blocks; - u32 num_alloc_blocks; -}; - -/* Processor Load information Values */ -struct dsp_procloadstat { - u32 curr_load; - u32 predicted_load; - u32 curr_dsp_freq; - u32 predicted_freq; -}; - -/* Attributes for STRM connections between nodes */ -struct dsp_strmattr { - u32 seg_id; /* Memory segment on DSP to allocate buffers */ - u32 buf_size; /* Buffer size (DSP words) */ - u32 num_bufs; /* Number of buffers */ - u32 buf_alignment; /* Buffer alignment */ - u32 timeout; /* Timeout for blocking STRM calls */ - enum dsp_strmmode strm_mode; /* mode of stream when opened */ - /* DMA chnl id if dsp_strmmode is LDMA or RDMA */ - u32 dma_chnl_id; - u32 dma_priority; /* DMA channel priority 0=lowest, >0=high */ -}; - -/* The dsp_cbdata structure */ -struct dsp_cbdata { - u32 cb_data; - u8 node_data[1]; -}; - -/* The dsp_msg structure */ -struct dsp_msg { - u32 cmd; - u32 arg1; - u32 arg2; -}; - -/* The dsp_resourcereqmts structure for node's resource requirements */ -struct dsp_resourcereqmts { - u32 cb_struct; - u32 static_data_size; - u32 global_data_size; - u32 program_mem_size; - u32 wc_execution_time; - u32 wc_period; - u32 wc_deadline; - u32 avg_exection_time; - u32 minimum_period; -}; - -/* - * The dsp_streamconnect structure describes a stream connection - * between two nodes, or between a node and the GPP - */ -struct dsp_streamconnect { - u32 cb_struct; - enum dsp_connecttype connect_type; - u32 this_node_stream_index; - void *connected_node; - struct dsp_uuid ui_connected_node_id; - u32 connected_node_stream_index; -}; - -struct dsp_nodeprofs { - u32 heap_size; -}; - -/* The dsp_ndbprops structure reports the attributes of a node */ -struct dsp_ndbprops { - u32 cb_struct; - struct dsp_uuid ui_node_id; - char ac_name[DSP_MAXNAMELEN]; - enum node_type ntype; - u32 cache_on_gpp; - struct dsp_resourcereqmts dsp_resource_reqmts; - s32 prio; - u32 stack_size; - u32 sys_stack_size; - u32 stack_seg; - u32 message_depth; - u32 num_input_streams; - u32 num_output_streams; - u32 timeout; - u32 count_profiles; /* Number of supported profiles */ - /* Array of profiles */ - struct dsp_nodeprofs node_profiles[MAX_PROFILES]; - u32 stack_seg_name; /* Stack Segment Name */ -}; - - /* The dsp_nodeattrin structure describes the attributes of a - * node client */ -struct dsp_nodeattrin { - u32 cb_struct; - s32 prio; - u32 timeout; - u32 profile_id; - /* Reserved, for Bridge Internal use only */ - u32 heap_size; - void *pgpp_virt_addr; /* Reserved, for Bridge Internal use only */ -}; - - /* The dsp_nodeinfo structure is used to retrieve information - * about a node */ -struct dsp_nodeinfo { - u32 cb_struct; - struct dsp_ndbprops nb_node_database_props; - u32 execution_priority; - enum node_state ns_execution_state; - void *device_owner; - u32 number_streams; - struct dsp_streamconnect sc_stream_connection[16]; - u32 node_env; -}; - - /* The dsp_nodeattr structure describes the attributes of a node */ -struct dsp_nodeattr { - u32 cb_struct; - struct dsp_nodeattrin in_node_attr_in; - u32 node_attr_inputs; - u32 node_attr_outputs; - struct dsp_nodeinfo node_info; -}; - -/* - * Notification type: either the name of an opened event, or an event or - * window handle. - */ -struct dsp_notification { - char *name; - void *handle; -}; - -/* The dsp_processorattrin structure describes the attributes of a processor */ -struct dsp_processorattrin { - u32 cb_struct; - u32 timeout; -}; -/* - * The dsp_processorinfo structure describes basic capabilities of a - * DSP processor - */ -struct dsp_processorinfo { - u32 cb_struct; - int processor_family; - int processor_type; - u32 clock_rate; - u32 internal_mem_size; - u32 external_mem_size; - u32 processor_id; - int ty_running_rtos; - s32 node_min_priority; - s32 node_max_priority; -}; - -/* Error information of last DSP exception signalled to the GPP */ -struct dsp_errorinfo { - u32 err_mask; - u32 val1; - u32 val2; - u32 val3; -}; - -/* The dsp_processorstate structure describes the state of a DSP processor */ -struct dsp_processorstate { - u32 cb_struct; - enum dsp_procstate proc_state; -}; - -/* - * The dsp_resourceinfo structure is used to retrieve information about a - * processor's resources - */ -struct dsp_resourceinfo { - u32 cb_struct; - enum dsp_resourceinfotype resource_type; - union { - u32 resource; - struct dsp_memstat mem_stat; - struct dsp_procloadstat proc_load_stat; - } result; -}; - -/* - * The dsp_streamattrin structure describes the attributes of a stream, - * including segment and alignment of data buffers allocated with - * DSPStream_AllocateBuffers(), if applicable - */ -struct dsp_streamattrin { - u32 cb_struct; - u32 timeout; - u32 segment_id; - u32 buf_alignment; - u32 num_bufs; - enum dsp_strmmode strm_mode; - u32 dma_chnl_id; - u32 dma_priority; -}; - -/* The dsp_bufferattr structure describes the attributes of a data buffer */ -struct dsp_bufferattr { - u32 cb_struct; - u32 segment_id; - u32 buf_alignment; -}; - -/* - * The dsp_streaminfo structure is used to retrieve information - * about a stream. - */ -struct dsp_streaminfo { - u32 cb_struct; - u32 number_bufs_allowed; - u32 number_bufs_in_stream; - u32 number_bytes; - void *sync_object_handle; - enum dsp_streamstate ss_stream_state; -}; - -/* DMM MAP attributes -It is a bit mask with each bit value indicating a specific attribute -bit 0 - GPP address type (user virtual=0, physical=1) -bit 1 - MMU Endianism (Big Endian=1, Little Endian=0) -bit 2 - MMU mixed page attribute (Mixed/ CPUES=1, TLBES =0) -bit 3 - MMU element size = 8bit (valid only for non mixed page entries) -bit 4 - MMU element size = 16bit (valid only for non mixed page entries) -bit 5 - MMU element size = 32bit (valid only for non mixed page entries) -bit 6 - MMU element size = 64bit (valid only for non mixed page entries) - -bit 14 - Input (read only) buffer -bit 15 - Output (writeable) buffer -*/ - -/* Types of mapping attributes */ - -/* MPU address is virtual and needs to be translated to physical addr */ -#define DSP_MAPVIRTUALADDR 0x00000000 -#define DSP_MAPPHYSICALADDR 0x00000001 - -/* Mapped data is big endian */ -#define DSP_MAPBIGENDIAN 0x00000002 -#define DSP_MAPLITTLEENDIAN 0x00000000 - -/* Element size is based on DSP r/w access size */ -#define DSP_MAPMIXEDELEMSIZE 0x00000004 - -/* - * Element size for MMU mapping (8, 16, 32, or 64 bit) - * Ignored if DSP_MAPMIXEDELEMSIZE enabled - */ -#define DSP_MAPELEMSIZE8 0x00000008 -#define DSP_MAPELEMSIZE16 0x00000010 -#define DSP_MAPELEMSIZE32 0x00000020 -#define DSP_MAPELEMSIZE64 0x00000040 - -#define DSP_MAPVMALLOCADDR 0x00000080 - -#define DSP_MAPDONOTLOCK 0x00000100 - -#define DSP_MAP_DIR_MASK 0x3FFF - -#define GEM_CACHE_LINE_SIZE 128 -#define GEM_L1P_PREFETCH_SIZE 128 - -/* - * Definitions from dbreg.h - */ - -#define DSPPROCTYPE_C64 6410 -#define IVAPROCTYPE_ARM7 470 - -/* Max registry path length. Also the max registry value length. */ -#define MAXREGPATHLENGTH 255 - -#endif /* DBDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dbll.h b/drivers/staging/tidspbridge/include/dspbridge/dbll.h deleted file mode 100644 index 46a9e0027ea5..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dbll.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * dbll.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge Dynamic load library module interface. Function header - * comments are in the file dblldefs.h. - * - * 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 DBLL_ -#define DBLL_ - -#include <dspbridge/dbdefs.h> -#include <dspbridge/dblldefs.h> - -extern bool symbols_reloaded; - -extern void dbll_close(struct dbll_library_obj *zl_lib); -extern int dbll_create(struct dbll_tar_obj **target_obj, - struct dbll_attrs *pattrs); -extern void dbll_delete(struct dbll_tar_obj *target); -extern void dbll_exit(void); -extern bool dbll_get_addr(struct dbll_library_obj *zl_lib, char *name, - struct dbll_sym_val **sym_val); -extern void dbll_get_attrs(struct dbll_tar_obj *target, - struct dbll_attrs *pattrs); -extern bool dbll_get_c_addr(struct dbll_library_obj *zl_lib, char *name, - struct dbll_sym_val **sym_val); -extern int dbll_get_sect(struct dbll_library_obj *lib, char *name, - u32 *paddr, u32 *psize); -extern bool dbll_init(void); -extern int dbll_load(struct dbll_library_obj *lib, - dbll_flags flags, - struct dbll_attrs *attrs, u32 * entry); -extern int dbll_open(struct dbll_tar_obj *target, char *file, - dbll_flags flags, - struct dbll_library_obj **lib_obj); -extern int dbll_read_sect(struct dbll_library_obj *lib, - char *name, char *buf, u32 size); -extern void dbll_unload(struct dbll_library_obj *lib, struct dbll_attrs *attrs); -#ifdef CONFIG_TIDSPBRIDGE_BACKTRACE -bool dbll_find_dsp_symbol(struct dbll_library_obj *zl_lib, u32 address, - u32 offset_range, u32 *sym_addr_output, char *name_output); -#endif - -#endif /* DBLL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h b/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h deleted file mode 100644 index 30e0aa0540de..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dblldefs.h +++ /dev/null @@ -1,431 +0,0 @@ -/* - * dblldefs.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 DBLLDEFS_ -#define DBLLDEFS_ - -/* - * Bit masks for dbl_flags. - */ -#define DBLL_NOLOAD 0x0 /* Don't load symbols, code, or data */ -#define DBLL_SYMB 0x1 /* load symbols */ -#define DBLL_CODE 0x2 /* load code */ -#define DBLL_DATA 0x4 /* load data */ -#define DBLL_DYNAMIC 0x8 /* dynamic load */ -#define DBLL_BSS 0x20 /* Unitialized section */ - -#define DBLL_MAXPATHLENGTH 255 - -/* - * ======== DBLL_Target ======== - * - */ -struct dbll_tar_obj; - -/* - * ======== dbll_flags ======== - * Specifies whether to load code, data, or symbols - */ -typedef s32 dbll_flags; - -/* - * ======== DBLL_Library ======== - * - */ -struct dbll_library_obj; - -/* - * ======== dbll_sect_info ======== - * For collecting info on overlay sections - */ -struct dbll_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) */ - dbll_flags type; /* Code, data, or BSS */ -}; - -/* - * ======== dbll_sym_val ======== - * (Needed for dynamic load library) - */ -struct dbll_sym_val { - u32 value; -}; - -/* - * ======== dbll_alloc_fxn ======== - * Allocate memory function. Allocate or reserve (if reserved == TRUE) - * "size" bytes of memory from segment "space" and return the address in - * *dsp_address (or starting at *dsp_address if reserve == TRUE). Returns 0 on - * success, or an error code on failure. - */ -typedef s32(*dbll_alloc_fxn) (void *hdl, s32 space, u32 size, u32 align, - u32 *dsp_address, s32 seg_id, s32 req, - bool reserved); - -/* - * ======== dbll_close_fxn ======== - */ -typedef s32(*dbll_f_close_fxn) (void *); - -/* - * ======== dbll_free_fxn ======== - * Free memory function. Free, or unreserve (if reserved == TRUE) "size" - * bytes of memory from segment "space" - */ -typedef bool(*dbll_free_fxn) (void *hdl, u32 addr, s32 space, u32 size, - bool reserved); - -/* - * ======== dbll_f_open_fxn ======== - */ -typedef void *(*dbll_f_open_fxn) (const char *, const char *); - -/* - * ======== dbll_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(*dbll_log_write_fxn) (void *handle, - struct dbll_sect_info *sect, u32 addr, - u32 bytes); - -/* - * ======== dbll_read_fxn ======== - */ -typedef s32(*dbll_read_fxn) (void *, size_t, size_t, void *); - -/* - * ======== dbll_seek_fxn ======== - */ -typedef s32(*dbll_seek_fxn) (void *, long, int); - -/* - * ======== dbll_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(*dbll_sym_lookup) (void *handle, void *parg, void *rmm_handle, - const char *name, struct dbll_sym_val ** sym); - -/* - * ======== dbll_tell_fxn ======== - */ -typedef s32(*dbll_tell_fxn) (void *); - -/* - * ======== dbll_write_fxn ======== - * Write memory function. Write "n" HOST bytes of memory to segment "mtype" - * starting at address "dsp_address" from the buffer "buf". The buffer is - * formatted as an array of words appropriate for the DSP. - */ -typedef s32(*dbll_write_fxn) (void *hdl, u32 dsp_address, void *buf, - u32 n, s32 mtype); - -/* - * ======== dbll_attrs ======== - */ -struct dbll_attrs { - dbll_alloc_fxn alloc; - dbll_free_fxn free; - void *rmm_handle; /* Handle to pass to alloc, free functions */ - dbll_write_fxn write; - void *input_params; /* Handle to pass to write, cinit function */ - bool base_image; - dbll_log_write_fxn log_write; - void *log_write_handle; - - /* Symbol matching function and handle to pass to it */ - dbll_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 *); -}; - -/* - * ======== dbll_close ======== - * Close library opened with dbll_open. - * Parameters: - * lib - Handle returned from dbll_open(). - * Returns: - * Requires: - * DBL initialized. - * Valid lib. - * Ensures: - */ -typedef void (*dbll_close_fxn) (struct dbll_library_obj *library); - -/* - * ======== dbll_create ======== - * Create a target object, specifying the alloc, free, and write functions. - * Parameters: - * target_obj - Location to store target handle on output. - * pattrs - Attributes. - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failed. - * Requires: - * DBL initialized. - * pattrs != NULL. - * target_obj != NULL; - * Ensures: - * Success: *target_obj != NULL. - * Failure: *target_obj == NULL. - */ -typedef int(*dbll_create_fxn) (struct dbll_tar_obj **target_obj, - struct dbll_attrs *attrs); - -/* - * ======== dbll_delete ======== - * Delete target object and free resources for any loaded libraries. - * Parameters: - * target - Handle returned from DBLL_Create(). - * Returns: - * Requires: - * DBL initialized. - * Valid target. - * Ensures: - */ -typedef void (*dbll_delete_fxn) (struct dbll_tar_obj *target); - -/* - * ======== dbll_exit ======== - * Discontinue use of DBL module. - * Parameters: - * Returns: - * Requires: - * refs > 0. - * Ensures: - * refs >= 0. - */ -typedef void (*dbll_exit_fxn) (void); - -/* - * ======== dbll_get_addr ======== - * Get address of name in the specified library. - * Parameters: - * lib - Handle returned from dbll_open(). - * name - Name of symbol - * sym_val - Location to store symbol address on output. - * Returns: - * TRUE: Success. - * FALSE: Symbol not found. - * Requires: - * DBL initialized. - * Valid library. - * name != NULL. - * sym_val != NULL. - * Ensures: - */ -typedef bool(*dbll_get_addr_fxn) (struct dbll_library_obj *lib, char *name, - struct dbll_sym_val **sym_val); - -/* - * ======== dbll_get_attrs ======== - * Retrieve the attributes of the target. - * Parameters: - * target - Handle returned from DBLL_Create(). - * pattrs - Location to store attributes on output. - * Returns: - * Requires: - * DBL initialized. - * Valid target. - * pattrs != NULL. - * Ensures: - */ -typedef void (*dbll_get_attrs_fxn) (struct dbll_tar_obj *target, - struct dbll_attrs *attrs); - -/* - * ======== dbll_get_c_addr ======== - * Get address of "C" name on the specified library. - * Parameters: - * lib - Handle returned from dbll_open(). - * name - Name of symbol - * sym_val - Location to store symbol address on output. - * Returns: - * TRUE: Success. - * FALSE: Symbol not found. - * Requires: - * DBL initialized. - * Valid target. - * name != NULL. - * sym_val != NULL. - * Ensures: - */ -typedef bool(*dbll_get_c_addr_fxn) (struct dbll_library_obj *lib, char *name, - struct dbll_sym_val **sym_val); - -/* - * ======== dbll_get_sect ======== - * Get address and size of a named section. - * Parameters: - * lib - Library handle returned from dbll_open(). - * name - Name of section. - * paddr - Location to store section address on output. - * psize - Location to store section size on output. - * Returns: - * 0: Success. - * -ENXIO: Section not found. - * Requires: - * DBL initialized. - * Valid lib. - * name != NULL. - * paddr != NULL; - * psize != NULL. - * Ensures: - */ -typedef int(*dbll_get_sect_fxn) (struct dbll_library_obj *lib, - char *name, u32 * addr, u32 * size); - -/* - * ======== dbll_init ======== - * Initialize DBL module. - * Parameters: - * Returns: - * TRUE: Success. - * FALSE: Failure. - * Requires: - * refs >= 0. - * Ensures: - * Success: refs > 0. - * Failure: refs >= 0. - */ -typedef bool(*dbll_init_fxn) (void); - -/* - * ======== dbll_load ======== - * Load library onto the target. - * - * Parameters: - * lib - Library handle returned from dbll_open(). - * flags - Load code, data and/or symbols. - * attrs - May contain alloc, free, and write function. - * entry_pt - Location to store program entry on output. - * Returns: - * 0: Success. - * -EBADF: File read failed. - * -EILSEQ: Failure in dynamic loader library. - * Requires: - * DBL initialized. - * Valid lib. - * entry != NULL. - * Ensures: - */ -typedef int(*dbll_load_fxn) (struct dbll_library_obj *lib, - dbll_flags flags, - struct dbll_attrs *attrs, u32 *entry); -/* - * ======== dbll_open ======== - * dbll_open() returns a library handle that can be used to load/unload - * the symbols/code/data via dbll_load()/dbll_unload(). - * Parameters: - * target - Handle returned from dbll_create(). - * file - Name of file to open. - * flags - If flags & DBLL_SYMB, load symbols. - * lib_obj - Location to store library handle on output. - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failure. - * -EBADF: File open/read failure. - * Unable to determine target type. - * Requires: - * DBL initialized. - * Valid target. - * file != NULL. - * lib_obj != NULL. - * dbll_attrs fopen function non-NULL. - * Ensures: - * Success: Valid *lib_obj. - * Failure: *lib_obj == NULL. - */ -typedef int(*dbll_open_fxn) (struct dbll_tar_obj *target, char *file, - dbll_flags flags, - struct dbll_library_obj **lib_obj); - -/* - * ======== dbll_read_sect ======== - * Read COFF section into a character buffer. - * Parameters: - * lib - Library handle returned from dbll_open(). - * name - Name of section. - * pbuf - Buffer to write section contents into. - * size - Buffer size - * Returns: - * 0: Success. - * -ENXIO: Named section does not exists. - * Requires: - * DBL initialized. - * Valid lib. - * name != NULL. - * pbuf != NULL. - * size != 0. - * Ensures: - */ -typedef int(*dbll_read_sect_fxn) (struct dbll_library_obj *lib, - char *name, char *content, - u32 cont_size); -/* - * ======== dbll_unload ======== - * Unload library loaded with dbll_load(). - * Parameters: - * lib - Handle returned from dbll_open(). - * attrs - Contains free() function and handle to pass to it. - * Returns: - * Requires: - * DBL initialized. - * Valid lib. - * Ensures: - */ -typedef void (*dbll_unload_fxn) (struct dbll_library_obj *library, - struct dbll_attrs *attrs); -struct dbll_fxns { - dbll_close_fxn close_fxn; - dbll_create_fxn create_fxn; - dbll_delete_fxn delete_fxn; - dbll_exit_fxn exit_fxn; - dbll_get_attrs_fxn get_attrs_fxn; - dbll_get_addr_fxn get_addr_fxn; - dbll_get_c_addr_fxn get_c_addr_fxn; - dbll_get_sect_fxn get_sect_fxn; - dbll_init_fxn init_fxn; - dbll_load_fxn load_fxn; - dbll_open_fxn open_fxn; - dbll_read_sect_fxn read_sect_fxn; - dbll_unload_fxn unload_fxn; -}; - -#endif /* DBLDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dev.h b/drivers/staging/tidspbridge/include/dspbridge/dev.h deleted file mode 100644 index fa2d79ef6cc8..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dev.h +++ /dev/null @@ -1,620 +0,0 @@ -/* - * dev.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Bridge Bridge driver device operations. - * - * 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 DEV_ -#define DEV_ - -/* ----------------------------------- Module Dependent Headers */ -#include <dspbridge/chnldefs.h> -#include <dspbridge/cmm.h> -#include <dspbridge/cod.h> -#include <dspbridge/dspdeh.h> -#include <dspbridge/nodedefs.h> -#include <dspbridge/disp.h> -#include <dspbridge/dspdefs.h> -#include <dspbridge/dmm.h> -#include <dspbridge/host_os.h> - -/* ----------------------------------- This */ -#include <dspbridge/devdefs.h> - -/* - * ======== dev_brd_write_fxn ======== - * Purpose: - * Exported function to be used as the COD write function. This function - * is passed a handle to a DEV_hObject by ZL in arb, then calls the - * device's bridge_brd_write() function. - * Parameters: - * arb: Handle to a Device Object. - * dev_ctxt: Handle to Bridge driver defined device info. - * dsp_addr: Address on DSP board (Destination). - * host_buf: Pointer to host buffer (Source). - * ul_num_bytes: Number of bytes to transfer. - * mem_type: Memory space on DSP to which to transfer. - * Returns: - * Number of bytes written. Returns 0 if the DEV_hObject passed in via - * arb is invalid. - * Requires: - * DEV Initialized. - * host_buf != NULL - * Ensures: - */ -extern u32 dev_brd_write_fxn(void *arb, - u32 dsp_add, - void *host_buf, u32 ul_num_bytes, u32 mem_space); - -/* - * ======== dev_create_device ======== - * Purpose: - * Called by the operating system to load the Bridge Driver for a - * 'Bridge device. - * Parameters: - * device_obj: Ptr to location to receive the device object handle. - * driver_file_name: Name of Bridge driver PE DLL file to load. If the - * absolute path is not provided, the file is loaded - * through 'Bridge's module search path. - * host_config: Host configuration information, to be passed down - * to the Bridge driver when bridge_dev_create() is called. - * pDspConfig: DSP resources, to be passed down to the Bridge driver - * when bridge_dev_create() is called. - * dev_node_obj: Platform specific device node. - * Returns: - * 0: Module is loaded, device object has been created - * -ENOMEM: Insufficient memory to create needed resources. - * -EPERM: Unable to find Bridge driver entry point function. - * -ESPIPE: Unable to load ZL DLL. - * Requires: - * DEV Initialized. - * device_obj != NULL. - * driver_file_name != NULL. - * host_config != NULL. - * pDspConfig != NULL. - * Ensures: - * 0: *device_obj will contain handle to the new device object. - * Otherwise, does not create the device object, ensures the Bridge driver - * module is unloaded, and sets *device_obj to NULL. - */ -extern int dev_create_device(struct dev_object - **device_obj, - const char *driver_file_name, - struct cfg_devnode *dev_node_obj); - -/* - * ======== dev_create2 ======== - * Purpose: - * After successful loading of the image from api_init_complete2 - * (PROC Auto_Start) or proc_load this fxn is called. This creates - * the Node Manager and updates the DEV Object. - * Parameters: - * hdev_obj: Handle to device object created with dev_create_device(). - * Returns: - * 0: Successful Creation of Node Manager - * -EPERM: Some Error Occurred. - * Requires: - * DEV Initialized - * Valid hdev_obj - * Ensures: - * 0 and hdev_obj->node_mgr != NULL - * else hdev_obj->node_mgr == NULL - */ -extern int dev_create2(struct dev_object *hdev_obj); - -/* - * ======== dev_destroy2 ======== - * Purpose: - * Destroys the Node manager for this device. - * Parameters: - * hdev_obj: Handle to device object created with dev_create_device(). - * Returns: - * 0: Successful Creation of Node Manager - * -EPERM: Some Error Occurred. - * Requires: - * DEV Initialized - * Valid hdev_obj - * Ensures: - * 0 and hdev_obj->node_mgr == NULL - * else -EPERM. - */ -extern int dev_destroy2(struct dev_object *hdev_obj); - -/* - * ======== dev_destroy_device ======== - * Purpose: - * Destroys the channel manager for this device, if any, calls - * bridge_dev_destroy(), and then attempts to unload the Bridge module. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * -EPERM: The Bridge driver failed it's bridge_dev_destroy() function. - * Requires: - * DEV Initialized. - * Ensures: - */ -extern int dev_destroy_device(struct dev_object - *hdev_obj); - -/* - * ======== dev_get_chnl_mgr ======== - * Purpose: - * Retrieve the handle to the channel manager created for this device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * *mgr: Ptr to location to store handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * mgr != NULL. - * DEV Initialized. - * Ensures: - * 0: *mgr contains a handle to a channel manager object, - * or NULL. - * else: *mgr is NULL. - */ -extern int dev_get_chnl_mgr(struct dev_object *hdev_obj, - struct chnl_mgr **mgr); - -/* - * ======== dev_get_cmm_mgr ======== - * Purpose: - * Retrieve the handle to the shared memory manager created for this - * device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * *mgr: Ptr to location to store handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * mgr != NULL. - * DEV Initialized. - * Ensures: - * 0: *mgr contains a handle to a channel manager object, - * or NULL. - * else: *mgr is NULL. - */ -extern int dev_get_cmm_mgr(struct dev_object *hdev_obj, - struct cmm_object **mgr); - -/* - * ======== dev_get_dmm_mgr ======== - * Purpose: - * Retrieve the handle to the dynamic memory manager created for this - * device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * *mgr: Ptr to location to store handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * mgr != NULL. - * DEV Initialized. - * Ensures: - * 0: *mgr contains a handle to a channel manager object, - * or NULL. - * else: *mgr is NULL. - */ -extern int dev_get_dmm_mgr(struct dev_object *hdev_obj, - struct dmm_object **mgr); - -/* - * ======== dev_get_cod_mgr ======== - * Purpose: - * Retrieve the COD manager create for this device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * *cod_mgr: Ptr to location to store handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * cod_mgr != NULL. - * DEV Initialized. - * Ensures: - * 0: *cod_mgr contains a handle to a COD manager object. - * else: *cod_mgr is NULL. - */ -extern int dev_get_cod_mgr(struct dev_object *hdev_obj, - struct cod_manager **cod_mgr); - -/* - * ======== dev_get_deh_mgr ======== - * Purpose: - * Retrieve the DEH manager created for this device. - * Parameters: - * hdev_obj: Handle to device object created with dev_create_device(). - * *deh_manager: Ptr to location to store handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * deh_manager != NULL. - * DEH Initialized. - * Ensures: - * 0: *deh_manager contains a handle to a DEH manager object. - * else: *deh_manager is NULL. - */ -extern int dev_get_deh_mgr(struct dev_object *hdev_obj, - struct deh_mgr **deh_manager); - -/* - * ======== dev_get_dev_node ======== - * Purpose: - * Retrieve the platform specific device ID for this device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * dev_nde: Ptr to location to get the device node handle. - * Returns: - * 0: Returns a DEVNODE in *dev_node_obj. - * -EFAULT: Invalid hdev_obj. - * Requires: - * dev_nde != NULL. - * DEV Initialized. - * Ensures: - * 0: *dev_nde contains a platform specific device ID; - * else: *dev_nde is NULL. - */ -extern int dev_get_dev_node(struct dev_object *hdev_obj, - struct cfg_devnode **dev_nde); - -/* - * ======== dev_get_dev_type ======== - * Purpose: - * Retrieve the platform specific device ID for this device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * dev_nde: Ptr to location to get the device node handle. - * Returns: - * 0: Success - * -EFAULT: Invalid hdev_obj. - * Requires: - * dev_nde != NULL. - * DEV Initialized. - * Ensures: - * 0: *dev_nde contains a platform specific device ID; - * else: *dev_nde is NULL. - */ -extern int dev_get_dev_type(struct dev_object *device_obj, - u8 *dev_type); - -/* - * ======== dev_get_first ======== - * Purpose: - * Retrieve the first Device Object handle from an internal linked list of - * of DEV_OBJECTs maintained by DEV. - * Parameters: - * Returns: - * NULL if there are no device objects stored; else - * a valid DEV_HOBJECT. - * Requires: - * No calls to dev_create_device or dev_destroy_device (which my modify the - * internal device object list) may occur between calls to dev_get_first - * and dev_get_next. - * Ensures: - * The DEV_HOBJECT returned is valid. - * A subsequent call to dev_get_next will return the next device object in - * the list. - */ -extern struct dev_object *dev_get_first(void); - -/* - * ======== dev_get_intf_fxns ======== - * Purpose: - * Retrieve the Bridge driver interface function structure for the - * loaded Bridge driver. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * *if_fxns: Ptr to location to store fxn interface. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * if_fxns != NULL. - * DEV Initialized. - * Ensures: - * 0: *if_fxns contains a pointer to the Bridge - * driver interface; - * else: *if_fxns is NULL. - */ -extern int dev_get_intf_fxns(struct dev_object *hdev_obj, - struct bridge_drv_interface **if_fxns); - -/* - * ======== dev_get_io_mgr ======== - * Purpose: - * Retrieve the handle to the IO manager created for this device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * *mgr: Ptr to location to store handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * mgr != NULL. - * DEV Initialized. - * Ensures: - * 0: *mgr contains a handle to an IO manager object. - * else: *mgr is NULL. - */ -extern int dev_get_io_mgr(struct dev_object *hdev_obj, - struct io_mgr **mgr); - -/* - * ======== dev_get_next ======== - * Purpose: - * Retrieve the next Device Object handle from an internal linked list of - * of DEV_OBJECTs maintained by DEV, after having previously called - * dev_get_first() and zero or more dev_get_next - * Parameters: - * hdev_obj: Handle to the device object returned from a previous - * call to dev_get_first() or dev_get_next(). - * Returns: - * NULL if there are no further device objects on the list or hdev_obj - * was invalid; - * else the next valid DEV_HOBJECT in the list. - * Requires: - * No calls to dev_create_device or dev_destroy_device (which my modify the - * internal device object list) may occur between calls to dev_get_first - * and dev_get_next. - * Ensures: - * The DEV_HOBJECT returned is valid. - * A subsequent call to dev_get_next will return the next device object in - * the list. - */ -extern struct dev_object *dev_get_next(struct dev_object - *hdev_obj); - -/* - * ========= dev_get_msg_mgr ======== - * Purpose: - * Retrieve the msg_ctrl Manager Handle from the DevObject. - * Parameters: - * hdev_obj: Handle to the Dev Object - * msg_man: Location where msg_ctrl Manager handle will be returned. - * Returns: - * Requires: - * DEV Initialized. - * Valid hdev_obj. - * node_man != NULL. - * Ensures: - */ -extern void dev_get_msg_mgr(struct dev_object *hdev_obj, - struct msg_mgr **msg_man); - -/* - * ========= dev_get_node_manager ======== - * Purpose: - * Retrieve the Node Manager Handle from the DevObject. It is an - * accessor function - * Parameters: - * hdev_obj: Handle to the Dev Object - * node_man: Location where Handle to the Node Manager will be - * returned.. - * Returns: - * 0: Success - * -EFAULT: Invalid Dev Object handle. - * Requires: - * DEV Initialized. - * node_man is not null - * Ensures: - * 0: *node_man contains a handle to a Node manager object. - * else: *node_man is NULL. - */ -extern int dev_get_node_manager(struct dev_object - *hdev_obj, - struct node_mgr **node_man); - -/* - * ======== dev_get_symbol ======== - * Purpose: - * Get the value of a symbol in the currently loaded program. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * str_sym: Name of symbol to look up. - * pul_value: Ptr to symbol value. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * -ESPIPE: Symbols couldn not be found or have not been loaded onto - * the board. - * Requires: - * str_sym != NULL. - * pul_value != NULL. - * DEV Initialized. - * Ensures: - * 0: *pul_value contains the symbol value; - */ -extern int dev_get_symbol(struct dev_object *hdev_obj, - const char *str_sym, u32 * pul_value); - -/* - * ======== dev_get_bridge_context ======== - * Purpose: - * Retrieve the Bridge Context handle, as returned by the - * bridge_dev_create fxn. - * Parameters: - * hdev_obj: Handle to device object created with dev_create_device() - * *phbridge_context: Ptr to location to store context handle. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * phbridge_context != NULL. - * DEV Initialized. - * Ensures: - * 0: *phbridge_context contains context handle; - * else: *phbridge_context is NULL; - */ -extern int dev_get_bridge_context(struct dev_object *hdev_obj, - struct bridge_dev_context - **phbridge_context); - -/* - * ======== dev_insert_proc_object ======== - * Purpose: - * Inserts the Processor Object into the List of PROC Objects - * kept in the DEV Object - * Parameters: - * proc_obj: Handle to the Proc Object - * hdev_obj Handle to the Dev Object - * bAttachedNew Specifies if there are already processors attached - * Returns: - * 0: Successfully inserted into the list - * Requires: - * proc_obj is not NULL - * hdev_obj is a valid handle to the DEV. - * DEV Initialized. - * List(of Proc object in Dev) Exists. - * Ensures: - * 0 & the PROC Object is inserted and the list is not empty - * Details: - * If the List of Proc Object is empty bAttachedNew is TRUE, it indicated - * this is the first Processor attaching. - * If it is False, there are already processors attached. - */ -extern int dev_insert_proc_object(struct dev_object - *hdev_obj, - u32 proc_obj, - bool *already_attached); - -/* - * ======== dev_remove_proc_object ======== - * Purpose: - * Search for and remove a Proc object from the given list maintained - * by the DEV - * Parameters: - * p_proc_object: Ptr to ProcObject to insert. - * dev_obj: Ptr to Dev Object where the list is. - * already_attached: Ptr to return the bool - * Returns: - * 0: If successful. - * -EPERM Failure to Remove the PROC Object from the list - * Requires: - * DevObject is Valid - * proc_obj != 0 - * dev_obj->proc_list != NULL - * !LST_IS_EMPTY(dev_obj->proc_list) - * already_attached !=NULL - * Ensures: - * Details: - * List will be deleted when the DEV is destroyed. - * - */ -extern int dev_remove_proc_object(struct dev_object - *hdev_obj, u32 proc_obj); - -/* - * ======== dev_notify_clients ======== - * Purpose: - * Notify all clients of this device of a change in device status. - * Clients may include multiple users of BRD, as well as CHNL. - * This function is asychronous, and may be called by a timer event - * set up by a watchdog timer. - * Parameters: - * hdev_obj: Handle to device object created with dev_create_device(). - * ret: A status word, most likely a BRD_STATUS. - * Returns: - * 0: All registered clients were asynchronously notified. - * -EINVAL: Invalid hdev_obj. - * Requires: - * DEV Initialized. - * Ensures: - * 0: Notifications are queued by the operating system to be - * delivered to clients. This function does not ensure that - * the notifications will ever be delivered. - */ -extern int dev_notify_clients(struct dev_object *hdev_obj, u32 ret); - -/* - * ======== dev_remove_device ======== - * Purpose: - * Destroys the Device Object created by dev_start_device. - * Parameters: - * dev_node_obj: Device node as it is know to OS. - * Returns: - * 0: If success; - * <error code> Otherwise. - * Requires: - * Ensures: - */ -extern int dev_remove_device(struct cfg_devnode *dev_node_obj); - -/* - * ======== dev_set_chnl_mgr ======== - * Purpose: - * Set the channel manager for this device. - * Parameters: - * hdev_obj: Handle to device object created with - * dev_create_device(). - * hmgr: Handle to a channel manager, or NULL. - * Returns: - * 0: Success. - * -EFAULT: Invalid hdev_obj. - * Requires: - * DEV Initialized. - * Ensures: - */ -extern int dev_set_chnl_mgr(struct dev_object *hdev_obj, - struct chnl_mgr *hmgr); - -/* - * ======== dev_set_msg_mgr ======== - * Purpose: - * Set the Message manager for this device. - * Parameters: - * hdev_obj: Handle to device object created with dev_create_device(). - * hmgr: Handle to a message manager, or NULL. - * Returns: - * Requires: - * DEV Initialized. - * Ensures: - */ -extern void dev_set_msg_mgr(struct dev_object *hdev_obj, struct msg_mgr *hmgr); - -/* - * ======== dev_start_device ======== - * Purpose: - * Initializes the new device with bridge environment. This involves - * querying CM for allocated resources, querying the registry for - * necessary dsp resources (requested in the INF file), and using this - * information to create a bridge device object. - * Parameters: - * dev_node_obj: Device node as it is know to OS. - * Returns: - * 0: If success; - * <error code> Otherwise. - * Requires: - * DEV initialized. - * Ensures: - */ -extern int dev_start_device(struct cfg_devnode *dev_node_obj); - -#endif /* DEV_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/devdefs.h b/drivers/staging/tidspbridge/include/dspbridge/devdefs.h deleted file mode 100644 index a2f9241ff139..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/devdefs.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * devdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Definition of common include typedef between dspdefs.h and dev.h. Required - * to break circular dependency between Bridge driver and DEV include files. - * - * Copyright (C) 2008 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 DEVDEFS_ -#define DEVDEFS_ - -/* Bridge Device Object */ -struct dev_object; - -#endif /* DEVDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/disp.h b/drivers/staging/tidspbridge/include/dspbridge/disp.h deleted file mode 100644 index 39d3cea9ca8b..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/disp.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * disp.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge Node Dispatcher. - * - * 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 DISP_ -#define DISP_ - -#include <dspbridge/dbdefs.h> -#include <dspbridge/nodedefs.h> -#include <dspbridge/nodepriv.h> - -struct disp_object; - -/* Node Dispatcher attributes */ -struct disp_attr { - u32 chnl_offset; /* Offset of channel ids reserved for RMS */ - /* Size of buffer for sending data to RMS */ - u32 chnl_buf_size; - int proc_family; /* eg, 5000 */ - int proc_type; /* eg, 5510 */ - void *reserved1; /* Reserved for future use. */ - u32 reserved2; /* Reserved for future use. */ -}; - - -/* - * ======== disp_create ======== - * Create a NODE Dispatcher object. This object handles the creation, - * deletion, and execution of nodes on the DSP target, through communication - * with the Resource Manager Server running on the target. Each NODE - * Manager object should have exactly one NODE Dispatcher. - * - * Parameters: - * dispatch_obj: Location to store node dispatcher object on output. - * hdev_obj: Device for this processor. - * disp_attrs: Node dispatcher attributes. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * -EPERM: Unable to create dispatcher. - * Requires: - * disp_attrs != NULL. - * hdev_obj != NULL. - * dispatch_obj != NULL. - * Ensures: - * 0: IS_VALID(*dispatch_obj). - * error: *dispatch_obj == NULL. - */ -extern int disp_create(struct disp_object **dispatch_obj, - struct dev_object *hdev_obj, - const struct disp_attr *disp_attrs); - -/* - * ======== disp_delete ======== - * Delete the NODE Dispatcher. - * - * Parameters: - * disp_obj: Node Dispatcher object. - * Returns: - * Requires: - * Valid disp_obj. - * Ensures: - * disp_obj is invalid. - */ -extern void disp_delete(struct disp_object *disp_obj); - -/* - * ======== disp_node_change_priority ======== - * Change the priority of a node currently running on the target. - * - * Parameters: - * disp_obj: Node Dispatcher object. - * hnode: Node object representing a node currently - * allocated or running on the DSP. - * ulFxnAddress: Address of RMS function for changing priority. - * node_env: Address of node's environment structure. - * prio: New priority level to set node's priority to. - * Returns: - * 0: Success. - * -ETIME: A timeout occurred before the DSP responded. - * Requires: - * Valid disp_obj. - * hnode != NULL. - * Ensures: - */ -extern int disp_node_change_priority(struct disp_object - *disp_obj, - struct node_object *hnode, - u32 rms_fxn, - nodeenv node_env, s32 prio); - -/* - * ======== disp_node_create ======== - * Create a node on the DSP by remotely calling the node's create function. - * - * Parameters: - * disp_obj: Node Dispatcher object. - * hnode: Node handle obtained from node_allocate(). - * ul_fxn_addr: Address or RMS create node function. - * ul_create_fxn: Address of node's create function. - * pargs: Arguments to pass to RMS node create function. - * node_env: Location to store node environment pointer on - * output. - * Returns: - * 0: Success. - * -ETIME: A timeout occurred before the DSP responded. - * -EPERM: A failure occurred, unable to create node. - * Requires: - * Valid disp_obj. - * pargs != NULL. - * hnode != NULL. - * node_env != NULL. - * node_get_type(hnode) != NODE_DEVICE. - * Ensures: - */ -extern int disp_node_create(struct disp_object *disp_obj, - struct node_object *hnode, - u32 rms_fxn, - u32 ul_create_fxn, - const struct node_createargs - *pargs, nodeenv *node_env); - -/* - * ======== disp_node_delete ======== - * Delete a node on the DSP by remotely calling the node's delete function. - * - * Parameters: - * disp_obj: Node Dispatcher object. - * hnode: Node object representing a node currently - * loaded on the DSP. - * ul_fxn_addr: Address or RMS delete node function. - * ul_delete_fxn: Address of node's delete function. - * node_env: Address of node's environment structure. - * Returns: - * 0: Success. - * -ETIME: A timeout occurred before the DSP responded. - * Requires: - * Valid disp_obj. - * hnode != NULL. - * Ensures: - */ -extern int disp_node_delete(struct disp_object *disp_obj, - struct node_object *hnode, - u32 rms_fxn, - u32 ul_delete_fxn, nodeenv node_env); - -/* - * ======== disp_node_run ======== - * Start execution of a node's execute phase, or resume execution of a node - * that has been suspended (via DISP_NodePause()) on the DSP. - * - * Parameters: - * disp_obj: Node Dispatcher object. - * hnode: Node object representing a node to be executed - * on the DSP. - * ul_fxn_addr: Address or RMS node execute function. - * ul_execute_fxn: Address of node's execute function. - * node_env: Address of node's environment structure. - * Returns: - * 0: Success. - * -ETIME: A timeout occurred before the DSP responded. - * Requires: - * Valid disp_obj. - * hnode != NULL. - * Ensures: - */ -extern int disp_node_run(struct disp_object *disp_obj, - struct node_object *hnode, - u32 rms_fxn, - u32 ul_execute_fxn, nodeenv node_env); - -#endif /* DISP_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dmm.h b/drivers/staging/tidspbridge/include/dspbridge/dmm.h deleted file mode 100644 index c3487be8fcf5..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dmm.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * dmm.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * The Dynamic Memory Mapping(DMM) module manages the DSP Virtual address - * space that can be directly mapped to any MPU buffer or memory region. - * - * 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 DMM_ -#define DMM_ - -#include <dspbridge/dbdefs.h> - -struct dmm_object; - -/* DMM attributes used in dmm_create() */ -struct dmm_mgrattrs { - u32 reserved; -}; - -#define DMMPOOLSIZE 0x4000000 - -/* - * ======== dmm_get_handle ======== - * Purpose: - * Return the dynamic memory manager object for this device. - * This is typically called from the client process. - */ - -extern int dmm_get_handle(void *hprocessor, - struct dmm_object **dmm_manager); - -extern int dmm_reserve_memory(struct dmm_object *dmm_mgr, - u32 size, u32 *prsv_addr); - -extern int dmm_un_reserve_memory(struct dmm_object *dmm_mgr, - u32 rsv_addr); - -extern int dmm_map_memory(struct dmm_object *dmm_mgr, u32 addr, - u32 size); - -extern int dmm_un_map_memory(struct dmm_object *dmm_mgr, - u32 addr, u32 *psize); - -extern int dmm_destroy(struct dmm_object *dmm_mgr); - -extern int dmm_delete_tables(struct dmm_object *dmm_mgr); - -extern int dmm_create(struct dmm_object **dmm_manager, - struct dev_object *hdev_obj, - const struct dmm_mgrattrs *mgr_attrts); - -extern int dmm_create_tables(struct dmm_object *dmm_mgr, - u32 addr, u32 size); - -#ifdef DSP_DMM_DEBUG -u32 dmm_mem_map_dump(struct dmm_object *dmm_mgr); -#endif - -#endif /* DMM_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/drv.h b/drivers/staging/tidspbridge/include/dspbridge/drv.h deleted file mode 100644 index b0c7708321b2..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/drv.h +++ /dev/null @@ -1,468 +0,0 @@ -/* - * drv.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DRV Resource allocation module. Driver Object gets Created - * at the time of Loading. It holds the List of Device Objects - * in the system. - * - * 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 DRV_ -#define DRV_ - -#include <dspbridge/devdefs.h> - -#include <linux/idr.h> - -/* Bridge Driver Object */ -struct drv_object; - -/* Provide the DSP Internal memory windows that can be accessed from L3 address - * space */ - -#define OMAP_GEM_BASE 0x107F8000 -#define OMAP_DSP_SIZE 0x00720000 - -/* MEM1 is L2 RAM + L2 Cache space */ -#define OMAP_DSP_MEM1_BASE 0x5C7F8000 -#define OMAP_DSP_MEM1_SIZE 0x18000 - -/* MEM2 is L1P RAM/CACHE space */ -#define OMAP_DSP_MEM2_BASE 0x5CE00000 -#define OMAP_DSP_MEM2_SIZE 0x8000 - -/* MEM3 is L1D RAM/CACHE space */ -#define OMAP_DSP_MEM3_BASE 0x5CF04000 -#define OMAP_DSP_MEM3_SIZE 0x14000 - -#define OMAP_PER_CM_BASE 0x48005000 -#define OMAP_PER_CM_SIZE 0x1000 - -#define OMAP_PER_PRM_BASE 0x48307000 -#define OMAP_PER_PRM_SIZE 0x1000 - -#define OMAP_CORE_PRM_BASE 0x48306A00 -#define OMAP_CORE_PRM_SIZE 0x1000 - -#define OMAP_DMMU_BASE 0x5D000000 -#define OMAP_DMMU_SIZE 0x1000 - -/* GPP PROCESS CLEANUP Data structures */ - -/* New structure (member of process context) abstracts NODE resource info */ -struct node_res_object { - void *node; - s32 node_allocated; /* Node status */ - s32 heap_allocated; /* Heap status */ - s32 streams_allocated; /* Streams status */ - int id; -}; - -/* used to cache dma mapping information */ -struct bridge_dma_map_info { - /* direction of DMA in action, or DMA_NONE */ - enum dma_data_direction dir; - /* number of elements requested by us */ - int num_pages; - /* number of elements returned from dma_map_sg */ - int sg_num; - /* list of buffers used in this DMA action */ - struct scatterlist *sg; -}; - -/* Used for DMM mapped memory accounting */ -struct dmm_map_object { - struct list_head link; - u32 dsp_addr; - u32 mpu_addr; - u32 size; - u32 num_usr_pgs; - struct page **pages; - struct bridge_dma_map_info dma_info; -}; - -/* Used for DMM reserved memory accounting */ -struct dmm_rsv_object { - struct list_head link; - u32 dsp_reserved_addr; -}; - -/* New structure (member of process context) abstracts stream resource info */ -struct strm_res_object { - s32 stream_allocated; /* Stream status */ - void *stream; - u32 num_bufs; - u32 dir; - int id; -}; - -/* Overall Bridge process resource usage state */ -enum gpp_proc_res_state { - PROC_RES_ALLOCATED, - PROC_RES_FREED -}; - -/* Bridge Data */ -struct drv_data { - char *base_img; - s32 shm_size; - int tc_wordswapon; - void *drv_object; - void *dev_object; - void *mgr_object; -}; - -/* Process Context */ -struct process_context { - /* Process State */ - enum gpp_proc_res_state res_state; - - /* Handle to Processor */ - void *processor; - - /* DSP Node resources */ - struct idr *node_id; - - /* DMM mapped memory resources */ - struct list_head dmm_map_list; - spinlock_t dmm_map_lock; - - /* DMM reserved memory resources */ - struct list_head dmm_rsv_list; - spinlock_t dmm_rsv_lock; - - /* Stream resources */ - struct idr *stream_id; -}; - -/* - * ======== drv_create ======== - * Purpose: - * Creates the Driver Object. This is done during the driver loading. - * There is only one Driver Object in the DSP/BIOS Bridge. - * Parameters: - * drv_obj: Location to store created DRV Object handle. - * Returns: - * 0: Success - * -ENOMEM: Failed in Memory allocation - * -EPERM: General Failure - * Requires: - * DRV Initialized (refs > 0 ) - * drv_obj != NULL. - * Ensures: - * 0: - *drv_obj is a valid DRV interface to the device. - * - List of DevObject Created and Initialized. - * - List of dev_node String created and initialized. - * - Registry is updated with the DRV Object. - * !0: DRV Object not created - * Details: - * There is one Driver Object for the Driver representing - * the driver itself. It contains the list of device - * Objects and the list of Device Extensions in the system. - * Also it can hold other necessary - * information in its storage area. - */ -extern int drv_create(struct drv_object **drv_obj); - -/* - * ======== drv_destroy ======== - * Purpose: - * destroys the Dev Object list, DrvExt list - * and destroy the DRV object - * Called upon driver unLoading.or unsuccessful loading of the driver. - * Parameters: - * driver_obj: Handle to Driver object . - * Returns: - * 0: Success. - * -EPERM: Failed to destroy DRV Object - * Requires: - * DRV Initialized (cRegs > 0 ) - * hdrv_obj is not NULL and a valid DRV handle . - * List of DevObject is Empty. - * List of DrvExt is Empty - * Ensures: - * 0: - DRV Object destroyed and hdrv_obj is not a valid - * DRV handle. - * - Registry is updated with "0" as the DRV Object. - */ -extern int drv_destroy(struct drv_object *driver_obj); - -/* - * ======== drv_get_first_dev_object ======== - * Purpose: - * Returns the Ptr to the FirstDev Object in the List - * Parameters: - * Requires: - * DRV Initialized - * Returns: - * dw_dev_object: Ptr to the First Dev Object as a u32 - * 0 if it fails to retrieve the First Dev Object - * Ensures: - */ -extern u32 drv_get_first_dev_object(void); - -/* - * ======== drv_get_first_dev_extension ======== - * Purpose: - * Returns the Ptr to the First Device Extension in the List - * Parameters: - * Requires: - * DRV Initialized - * Returns: - * dw_dev_extension: Ptr to the First Device Extension as a u32 - * 0: Failed to Get the Device Extension - * Ensures: - */ -extern u32 drv_get_first_dev_extension(void); - -/* - * ======== drv_get_dev_object ======== - * Purpose: - * Given a index, returns a handle to DevObject from the list - * Parameters: - * hdrv_obj: Handle to the Manager - * device_obj: Location to store the Dev Handle - * Requires: - * DRV Initialized - * index >= 0 - * hdrv_obj is not NULL and Valid DRV Object - * device_obj is not NULL - * Device Object List not Empty - * Returns: - * 0: Success - * -EPERM: Failed to Get the Dev Object - * Ensures: - * 0: *device_obj != NULL - * -EPERM: *device_obj = NULL - */ -extern int drv_get_dev_object(u32 index, - struct drv_object *hdrv_obj, - struct dev_object **device_obj); - -/* - * ======== drv_get_next_dev_object ======== - * Purpose: - * Returns the Ptr to the Next Device Object from the the List - * Parameters: - * hdev_obj: Handle to the Device Object - * Requires: - * DRV Initialized - * hdev_obj != 0 - * Returns: - * dw_dev_object: Ptr to the Next Dev Object as a u32 - * 0: If it fail to get the next Dev Object. - * Ensures: - */ -extern u32 drv_get_next_dev_object(u32 hdev_obj); - -/* - * ======== drv_get_next_dev_extension ======== - * Purpose: - * Returns the Ptr to the Next Device Extension from the the List - * Parameters: - * dev_extension: Handle to the Device Extension - * Requires: - * DRV Initialized - * dev_extension != 0. - * Returns: - * dw_dev_extension: Ptr to the Next Dev Extension - * 0: If it fail to Get the next Dev Extension - * Ensures: - */ -extern u32 drv_get_next_dev_extension(u32 dev_extension); - -/* - * ======== drv_insert_dev_object ======== - * Purpose: - * Insert a DeviceObject into the list of Driver object. - * Parameters: - * driver_obj: Handle to DrvObject - * hdev_obj: Handle to DeviceObject to insert. - * Returns: - * 0: If successful. - * -EPERM: General Failure: - * Requires: - * hdrv_obj != NULL and Valid DRV Handle. - * hdev_obj != NULL. - * Ensures: - * 0: Device Object is inserted and the List is not empty. - */ -extern int drv_insert_dev_object(struct drv_object *driver_obj, - struct dev_object *hdev_obj); - -/* - * ======== drv_remove_dev_object ======== - * Purpose: - * Search for and remove a Device object from the given list of Device Obj - * objects. - * Parameters: - * driver_obj: Handle to DrvObject - * hdev_obj: Handle to DevObject to Remove - * Returns: - * 0: Success. - * -EPERM: Unable to find dev_obj. - * Requires: - * hdrv_obj != NULL and a Valid DRV Handle. - * hdev_obj != NULL. - * List exists and is not empty. - * Ensures: - * List either does not exist (NULL), or is not empty if it does exist. - */ -extern int drv_remove_dev_object(struct drv_object *driver_obj, - struct dev_object *hdev_obj); - -/* - * ======== drv_request_resources ======== - * Purpose: - * Assigns the Resources or Releases them. - * Parameters: - * dw_context: Path to the driver Registry Key. - * dev_node_strg: Ptr to dev_node String stored in the Device Ext. - * Returns: - * TRUE if success; FALSE otherwise. - * Requires: - * Ensures: - * The Resources are assigned based on Bus type. - * The hardware is initialized. Resource information is - * gathered from the Registry(ISA, PCMCIA)or scanned(PCI) - * Resource structure is stored in the registry which will be - * later used by the CFG module. - */ -extern int drv_request_resources(u32 dw_context, - u32 *dev_node_strg); - -/* - * ======== drv_release_resources ======== - * Purpose: - * Assigns the Resources or Releases them. - * Parameters: - * dw_context: Path to the driver Registry Key. - * hdrv_obj: Handle to the Driver Object. - * Returns: - * TRUE if success; FALSE otherwise. - * Requires: - * Ensures: - * The Resources are released based on Bus type. - * Resource structure is deleted from the registry - */ -extern int drv_release_resources(u32 dw_context, - struct drv_object *hdrv_obj); - -/** - * drv_request_bridge_res_dsp() - Reserves shared memory for bridge. - * @phost_resources: pointer to host resources. - */ -int drv_request_bridge_res_dsp(void **phost_resources); - -#ifdef CONFIG_TIDSPBRIDGE_RECOVERY -void bridge_recover_schedule(void); -#endif - -/* - * ======== mem_ext_phys_pool_init ======== - * Purpose: - * Uses the physical memory chunk passed for internal consistent memory - * allocations. - * physical address based on the page frame address. - * Parameters: - * pool_phys_base starting address of the physical memory pool. - * pool_size size of the physical memory pool. - * Returns: - * none. - * Requires: - * - MEM initialized. - * - valid physical address for the base and size > 0 - */ -extern void mem_ext_phys_pool_init(u32 pool_phys_base, u32 pool_size); - -/* - * ======== mem_ext_phys_pool_release ======== - */ -extern void mem_ext_phys_pool_release(void); - -/* ======== mem_alloc_phys_mem ======== - * Purpose: - * Allocate physically contiguous, uncached memory - * Parameters: - * byte_size: Number of bytes to allocate. - * align_mask: Alignment Mask. - * physical_address: Physical address of allocated memory. - * Returns: - * Pointer to a block of memory; - * NULL if memory couldn't be allocated, or if byte_size == 0. - * Requires: - * MEM initialized. - * Ensures: - * The returned pointer, if not NULL, points to a valid memory block of - * the size requested. Returned physical address refers to physical - * location of memory. - */ -extern void *mem_alloc_phys_mem(u32 byte_size, - u32 align_mask, u32 *physical_address); - -/* - * ======== mem_free_phys_mem ======== - * Purpose: - * Free the given block of physically contiguous memory. - * Parameters: - * virtual_address: Pointer to virtual memory region allocated - * by mem_alloc_phys_mem(). - * physical_address: Pointer to physical memory region allocated - * by mem_alloc_phys_mem(). - * byte_size: Size of the memory region allocated by mem_alloc_phys_mem(). - * Returns: - * Requires: - * MEM initialized. - * virtual_address is a valid memory address returned by - * mem_alloc_phys_mem() - * Ensures: - * virtual_address is no longer a valid pointer to memory. - */ -extern void mem_free_phys_mem(void *virtual_address, - u32 physical_address, u32 byte_size); - -/* - * ======== MEM_LINEAR_ADDRESS ======== - * Purpose: - * Get the linear address corresponding to the given physical address. - * Parameters: - * phys_addr: Physical address to be mapped. - * byte_size: Number of bytes in physical range to map. - * Returns: - * The corresponding linear address, or NULL if unsuccessful. - * Requires: - * MEM initialized. - * Ensures: - * Notes: - * If valid linear address is returned, be sure to call - * MEM_UNMAP_LINEAR_ADDRESS(). - */ -#define MEM_LINEAR_ADDRESS(phy_addr, byte_size) phy_addr - -/* - * ======== MEM_UNMAP_LINEAR_ADDRESS ======== - * Purpose: - * Unmap the linear address mapped in MEM_LINEAR_ADDRESS. - * Parameters: - * base_addr: Ptr to mapped memory (as returned by MEM_LINEAR_ADDRESS()). - * Returns: - * Requires: - * - MEM initialized. - * - base_addr is a valid linear address mapped in MEM_LINEAR_ADDRESS. - * Ensures: - * - base_addr no longer points to a valid linear address. - */ -#define MEM_UNMAP_LINEAR_ADDRESS(base_addr) {} - -#endif /* DRV_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h b/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h deleted file mode 100644 index 6ff808297c10..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspapi-ioctl.h +++ /dev/null @@ -1,467 +0,0 @@ -/* - * dspapi-ioctl.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Contains structures and commands that are used for interaction - * between the DDSP API and Bridge driver. - * - * Copyright (C) 2008 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 DSPAPIIOCTL_ -#define DSPAPIIOCTL_ - -#include <dspbridge/cmm.h> -#include <dspbridge/strmdefs.h> -#include <dspbridge/dbdcd.h> - -union trapped_args { - - /* MGR Module */ - struct { - u32 node_id; - struct dsp_ndbprops __user *ndb_props; - u32 ndb_props_size; - u32 __user *num_nodes; - } args_mgr_enumnode_info; - - struct { - u32 processor_id; - struct dsp_processorinfo __user *processor_info; - u32 processor_info_size; - u32 __user *num_procs; - } args_mgr_enumproc_info; - - struct { - struct dsp_uuid *uuid_obj; - enum dsp_dcdobjtype obj_type; - char *sz_path_name; - } args_mgr_registerobject; - - struct { - struct dsp_uuid *uuid_obj; - enum dsp_dcdobjtype obj_type; - } args_mgr_unregisterobject; - - struct { - struct dsp_notification __user *__user *anotifications; - u32 count; - u32 __user *index; - u32 timeout; - } args_mgr_wait; - - /* PROC Module */ - struct { - u32 processor_id; - struct dsp_processorattrin __user *attr_in; - void *__user *ph_processor; - } args_proc_attach; - - struct { - void *processor; - u32 cmd; - struct dsp_cbdata __user *args; - } args_proc_ctrl; - - struct { - void *processor; - } args_proc_detach; - - struct { - void *processor; - void *__user *node_tab; - u32 node_tab_size; - u32 __user *num_nodes; - u32 __user *allocated; - } args_proc_enumnode_info; - - struct { - void *processor; - u32 resource_type; - struct dsp_resourceinfo *resource_info; - u32 resource_info_size; - } args_proc_enumresources; - - struct { - void *processor; - struct dsp_processorstate __user *proc_state_obj; - u32 state_info_size; - } args_proc_getstate; - - struct { - void *processor; - u8 __user *buf; - u8 __user *size; - u32 max_size; - } args_proc_gettrace; - - struct { - void *processor; - s32 argc_index; - char __user *__user *user_args; - char *__user *user_envp; - } args_proc_load; - - struct { - void *processor; - u32 event_mask; - u32 notify_type; - struct dsp_notification __user *notification; - } args_proc_register_notify; - - struct { - void *processor; - u32 size; - void *__user *rsv_addr; - } args_proc_rsvmem; - - struct { - void *processor; - u32 size; - void *rsv_addr; - } args_proc_unrsvmem; - - struct { - void *processor; - void *mpu_addr; - u32 size; - void *req_addr; - void *__user *map_addr; - u32 map_attr; - } args_proc_mapmem; - - struct { - void *processor; - u32 size; - void *map_addr; - } args_proc_unmapmem; - - struct { - void *processor; - void *mpu_addr; - u32 size; - u32 dir; - } args_proc_dma; - - struct { - void *processor; - void *mpu_addr; - u32 size; - u32 flags; - } args_proc_flushmemory; - - struct { - void *processor; - void *mpu_addr; - u32 size; - } args_proc_invalidatememory; - - /* NODE Module */ - struct { - void *processor; - struct dsp_uuid __user *node_id_ptr; - struct dsp_cbdata __user *args; - struct dsp_nodeattrin __user *attr_in; - void *__user *node; - } args_node_allocate; - - struct { - void *node; - u32 size; - struct dsp_bufferattr __user *attr; - u8 *__user *buffer; - } args_node_allocmsgbuf; - - struct { - void *node; - s32 prio; - } args_node_changepriority; - - struct { - void *node; - u32 stream_id; - void *other_node; - u32 other_stream; - struct dsp_strmattr __user *attrs; - struct dsp_cbdata __user *conn_param; - } args_node_connect; - - struct { - void *node; - } args_node_create; - - struct { - void *node; - } args_node_delete; - - struct { - void *node; - struct dsp_bufferattr __user *attr; - u8 *buffer; - } args_node_freemsgbuf; - - struct { - void *node; - struct dsp_nodeattr __user *attr; - u32 attr_size; - } args_node_getattr; - - struct { - void *node; - struct dsp_msg __user *message; - u32 timeout; - } args_node_getmessage; - - struct { - void *node; - } args_node_pause; - - struct { - void *node; - struct dsp_msg __user *message; - u32 timeout; - } args_node_putmessage; - - struct { - void *node; - u32 event_mask; - u32 notify_type; - struct dsp_notification __user *notification; - } args_node_registernotify; - - struct { - void *node; - } args_node_run; - - struct { - void *node; - int __user *status; - } args_node_terminate; - - struct { - void *processor; - struct dsp_uuid __user *node_id_ptr; - struct dsp_ndbprops __user *node_props; - } args_node_getuuidprops; - - /* STRM module */ - - struct { - void *stream; - u32 size; - u8 *__user *ap_buffer; - u32 num_bufs; - } args_strm_allocatebuffer; - - struct { - void *stream; - } args_strm_close; - - struct { - void *stream; - u8 *__user *ap_buffer; - u32 num_bufs; - } args_strm_freebuffer; - - struct { - void *stream; - void **event; - } args_strm_geteventhandle; - - struct { - void *stream; - struct stream_info __user *stream_info; - u32 stream_info_size; - } args_strm_getinfo; - - struct { - void *stream; - bool flush_flag; - } args_strm_idle; - - struct { - void *stream; - u8 *buffer; - u32 bytes; - u32 buf_size; - u32 arg; - } args_strm_issue; - - struct { - void *node; - u32 direction; - u32 index; - struct strm_attr __user *attr_in; - void *__user *stream; - } args_strm_open; - - struct { - void *stream; - u8 *__user *buf_ptr; - u32 __user *bytes; - u32 __user *buf_size_ptr; - u32 __user *arg; - } args_strm_reclaim; - - struct { - void *stream; - u32 event_mask; - u32 notify_type; - struct dsp_notification __user *notification; - } args_strm_registernotify; - - struct { - void *__user *stream_tab; - u32 strm_num; - u32 __user *mask; - u32 timeout; - } args_strm_select; - - /* CMM Module */ - struct { - struct cmm_object *cmm_mgr; - u32 size; - struct cmm_attrs *attrs; - void **buf_va; - } args_cmm_allocbuf; - - struct { - struct cmm_object *cmm_mgr; - void *buf_pa; - u32 seg_id; - } args_cmm_freebuf; - - struct { - void *processor; - struct cmm_object *__user *cmm_mgr; - } args_cmm_gethandle; - - struct { - struct cmm_object *cmm_mgr; - struct cmm_info __user *cmm_info_obj; - } args_cmm_getinfo; - - /* UTIL module */ - struct { - s32 util_argc; - char **argv; - } args_util_testdll; -}; - -/* - * Dspbridge Ioctl numbering scheme - * - * 7 0 - * --------------------------------- - * | Module | Ioctl Number | - * --------------------------------- - * | x | x | x | 0 | 0 | 0 | 0 | 0 | - * --------------------------------- - */ - -/* Ioctl driver identifier */ -#define DB 0xDB - -/* - * Following are used to distinguish between module ioctls, this is needed - * in case new ioctls are introduced. - */ -#define DB_MODULE_MASK 0xE0 -#define DB_IOC_MASK 0x1F - -/* Ioctl module masks */ -#define DB_MGR 0x0 -#define DB_PROC 0x20 -#define DB_NODE 0x40 -#define DB_STRM 0x60 -#define DB_CMM 0x80 - -#define DB_MODULE_SHIFT 5 - -/* Used to calculate the ioctl per dspbridge module */ -#define DB_IOC(module, num) \ - (((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK)) -/* Used to get dspbridge ioctl module */ -#define DB_GET_MODULE(cmd) ((cmd) & DB_MODULE_MASK) -/* Used to get dspbridge ioctl number */ -#define DB_GET_IOC(cmd) ((cmd) & DB_IOC_MASK) - -/* TODO: Remove deprecated and not implemented */ - -/* MGR Module */ -#define MGR_ENUMNODE_INFO _IOWR(DB, DB_IOC(DB_MGR, 0), unsigned long) -#define MGR_ENUMPROC_INFO _IOWR(DB, DB_IOC(DB_MGR, 1), unsigned long) -#define MGR_REGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 2), unsigned long) -#define MGR_UNREGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 3), unsigned long) -#define MGR_WAIT _IOWR(DB, DB_IOC(DB_MGR, 4), unsigned long) -/* MGR_GET_PROC_RES Deprecated */ -#define MGR_GET_PROC_RES _IOR(DB, DB_IOC(DB_MGR, 5), unsigned long) - -/* PROC Module */ -#define PROC_ATTACH _IOWR(DB, DB_IOC(DB_PROC, 0), unsigned long) -#define PROC_CTRL _IOR(DB, DB_IOC(DB_PROC, 1), unsigned long) -/* PROC_DETACH Deprecated */ -#define PROC_DETACH _IOR(DB, DB_IOC(DB_PROC, 2), unsigned long) -#define PROC_ENUMNODE _IOWR(DB, DB_IOC(DB_PROC, 3), unsigned long) -#define PROC_ENUMRESOURCES _IOWR(DB, DB_IOC(DB_PROC, 4), unsigned long) -#define PROC_GET_STATE _IOWR(DB, DB_IOC(DB_PROC, 5), unsigned long) -#define PROC_GET_TRACE _IOWR(DB, DB_IOC(DB_PROC, 6), unsigned long) -#define PROC_LOAD _IOW(DB, DB_IOC(DB_PROC, 7), unsigned long) -#define PROC_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_PROC, 8), unsigned long) -#define PROC_START _IOW(DB, DB_IOC(DB_PROC, 9), unsigned long) -#define PROC_RSVMEM _IOWR(DB, DB_IOC(DB_PROC, 10), unsigned long) -#define PROC_UNRSVMEM _IOW(DB, DB_IOC(DB_PROC, 11), unsigned long) -#define PROC_MAPMEM _IOWR(DB, DB_IOC(DB_PROC, 12), unsigned long) -#define PROC_UNMAPMEM _IOR(DB, DB_IOC(DB_PROC, 13), unsigned long) -#define PROC_FLUSHMEMORY _IOW(DB, DB_IOC(DB_PROC, 14), unsigned long) -#define PROC_STOP _IOWR(DB, DB_IOC(DB_PROC, 15), unsigned long) -#define PROC_INVALIDATEMEMORY _IOW(DB, DB_IOC(DB_PROC, 16), unsigned long) -#define PROC_BEGINDMA _IOW(DB, DB_IOC(DB_PROC, 17), unsigned long) -#define PROC_ENDDMA _IOW(DB, DB_IOC(DB_PROC, 18), unsigned long) - -/* NODE Module */ -#define NODE_ALLOCATE _IOWR(DB, DB_IOC(DB_NODE, 0), unsigned long) -#define NODE_ALLOCMSGBUF _IOWR(DB, DB_IOC(DB_NODE, 1), unsigned long) -#define NODE_CHANGEPRIORITY _IOW(DB, DB_IOC(DB_NODE, 2), unsigned long) -#define NODE_CONNECT _IOW(DB, DB_IOC(DB_NODE, 3), unsigned long) -#define NODE_CREATE _IOW(DB, DB_IOC(DB_NODE, 4), unsigned long) -#define NODE_DELETE _IOW(DB, DB_IOC(DB_NODE, 5), unsigned long) -#define NODE_FREEMSGBUF _IOW(DB, DB_IOC(DB_NODE, 6), unsigned long) -#define NODE_GETATTR _IOWR(DB, DB_IOC(DB_NODE, 7), unsigned long) -#define NODE_GETMESSAGE _IOWR(DB, DB_IOC(DB_NODE, 8), unsigned long) -#define NODE_PAUSE _IOW(DB, DB_IOC(DB_NODE, 9), unsigned long) -#define NODE_PUTMESSAGE _IOW(DB, DB_IOC(DB_NODE, 10), unsigned long) -#define NODE_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_NODE, 11), unsigned long) -#define NODE_RUN _IOW(DB, DB_IOC(DB_NODE, 12), unsigned long) -#define NODE_TERMINATE _IOWR(DB, DB_IOC(DB_NODE, 13), unsigned long) -#define NODE_GETUUIDPROPS _IOWR(DB, DB_IOC(DB_NODE, 14), unsigned long) - -/* STRM Module */ -#define STRM_ALLOCATEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 0), unsigned long) -#define STRM_CLOSE _IOW(DB, DB_IOC(DB_STRM, 1), unsigned long) -#define STRM_FREEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 2), unsigned long) -#define STRM_GETEVENTHANDLE _IO(DB, DB_IOC(DB_STRM, 3)) /* Not Impl'd */ -#define STRM_GETINFO _IOWR(DB, DB_IOC(DB_STRM, 4), unsigned long) -#define STRM_IDLE _IOW(DB, DB_IOC(DB_STRM, 5), unsigned long) -#define STRM_ISSUE _IOW(DB, DB_IOC(DB_STRM, 6), unsigned long) -#define STRM_OPEN _IOWR(DB, DB_IOC(DB_STRM, 7), unsigned long) -#define STRM_RECLAIM _IOWR(DB, DB_IOC(DB_STRM, 8), unsigned long) -#define STRM_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_STRM, 9), unsigned long) -#define STRM_SELECT _IOWR(DB, DB_IOC(DB_STRM, 10), unsigned long) - -/* CMM Module */ -#define CMM_ALLOCBUF _IO(DB, DB_IOC(DB_CMM, 0)) /* Not Impl'd */ -#define CMM_FREEBUF _IO(DB, DB_IOC(DB_CMM, 1)) /* Not Impl'd */ -#define CMM_GETHANDLE _IOR(DB, DB_IOC(DB_CMM, 2), unsigned long) -#define CMM_GETINFO _IOR(DB, DB_IOC(DB_CMM, 3), unsigned long) - -#endif /* DSPAPIIOCTL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspapi.h b/drivers/staging/tidspbridge/include/dspbridge/dspapi.h deleted file mode 100644 index c99c68738b0f..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspapi.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * dspapi.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Includes the wrapper functions called directly by the - * DeviceIOControl interface. - * - * Notes: - * Bridge services exported to Bridge driver are initialized by the DSPAPI on - * behalf of the Bridge driver. Bridge driver must not call module Init/Exit - * functions. - * - * To ensure Bridge driver binary compatibility across different platforms, - * for the same processor, a Bridge driver must restrict its usage of system - * services to those exported by the DSPAPI library. - * - * 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 DSPAPI_ -#define DSPAPI_ - -#include <dspbridge/dspapi-ioctl.h> - -/* This BRD API Library Version: */ -#define BRD_API_MAJOR_VERSION (u32)8 /* .8x - Alpha, .9x - Beta, 1.x FCS */ -#define BRD_API_MINOR_VERSION (u32)0 - -/* - * ======== api_call_dev_ioctl ======== - * Purpose: - * Call the (wrapper) function for the corresponding API IOCTL. - * Parameters: - * cmd: IOCTL id, base 0. - * args: Argument structure. - * result: - * Returns: - * 0 if command called; -EINVAL if command not in IOCTL - * table. - * Requires: - * Ensures: - */ -extern int api_call_dev_ioctl(unsigned int cmd, - union trapped_args *args, - u32 *result, void *pr_ctxt); - -/* - * ======== api_init ======== - * Purpose: - * Initialize modules used by Bridge API. - * This procedure is called when the driver is loaded. - * Parameters: - * Returns: - * TRUE if success; FALSE otherwise. - * Requires: - * Ensures: - */ -extern bool api_init(void); - -/* - * ======== api_init_complete2 ======== - * Purpose: - * Perform any required bridge initialization which cannot - * be performed in api_init() or dev_start_device() due - * to the fact that some services are not yet - * completely initialized. - * Parameters: - * Returns: - * 0: Allow this device to load - * -EPERM: Failure. - * Requires: - * Bridge API initialized. - * Ensures: - */ -extern int api_init_complete2(void); - -/* - * ======== api_exit ======== - * Purpose: - * Exit all modules initialized in api_init(void). - * This procedure is called when the driver is unloaded. - * Parameters: - * Returns: - * Requires: - * api_init(void) was previously called. - * Ensures: - * Resources acquired in api_init(void) are freed. - */ -extern void api_exit(void); - -/* MGR wrapper functions */ -extern u32 mgrwrap_enum_node_info(union trapped_args *args, void *pr_ctxt); -extern u32 mgrwrap_enum_proc_info(union trapped_args *args, void *pr_ctxt); -extern u32 mgrwrap_register_object(union trapped_args *args, void *pr_ctxt); -extern u32 mgrwrap_unregister_object(union trapped_args *args, void *pr_ctxt); -extern u32 mgrwrap_wait_for_bridge_events(union trapped_args *args, - void *pr_ctxt); - -extern u32 mgrwrap_get_process_resources_info(union trapped_args *args, - void *pr_ctxt); - -/* CPRC (Processor) wrapper Functions */ -extern u32 procwrap_attach(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_ctrl(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_detach(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_enum_node_info(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_enum_resources(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_get_state(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_get_trace(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_load(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_register_notify(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_start(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_reserve_memory(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_un_reserve_memory(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_map(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_un_map(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_flush_memory(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_stop(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_invalidate_memory(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_begin_dma(union trapped_args *args, void *pr_ctxt); -extern u32 procwrap_end_dma(union trapped_args *args, void *pr_ctxt); - -/* NODE wrapper functions */ -extern u32 nodewrap_allocate(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_alloc_msg_buf(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_change_priority(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_connect(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_create(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_delete(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_free_msg_buf(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_get_attr(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_get_message(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_pause(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_put_message(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_register_notify(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_run(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_terminate(union trapped_args *args, void *pr_ctxt); -extern u32 nodewrap_get_uuid_props(union trapped_args *args, void *pr_ctxt); - -/* STRM wrapper functions */ -extern u32 strmwrap_allocate_buffer(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_close(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_free_buffer(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_get_event_handle(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_get_info(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_idle(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_issue(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_open(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_reclaim(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_register_notify(union trapped_args *args, void *pr_ctxt); -extern u32 strmwrap_select(union trapped_args *args, void *pr_ctxt); - -extern u32 cmmwrap_calloc_buf(union trapped_args *args, void *pr_ctxt); -extern u32 cmmwrap_free_buf(union trapped_args *args, void *pr_ctxt); -extern u32 cmmwrap_get_handle(union trapped_args *args, void *pr_ctxt); -extern u32 cmmwrap_get_info(union trapped_args *args, void *pr_ctxt); - -#endif /* DSPAPI_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspchnl.h b/drivers/staging/tidspbridge/include/dspbridge/dspchnl.h deleted file mode 100644 index 7146a5057e29..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspchnl.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * dspchnl.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Declares the upper edge channel class library functions required by - * all Bridge driver / DSP API driver interface tables. These functions are - * implemented by every class of Bridge channel library. - * - * Notes: - * The function comment headers reside in dspdefs.h. - * - * 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 DSPCHNL_ -#define DSPCHNL_ - -extern int bridge_chnl_create(struct chnl_mgr **channel_mgr, - struct dev_object *hdev_obj, - const struct chnl_mgrattrs - *mgr_attrts); - -extern int bridge_chnl_destroy(struct chnl_mgr *hchnl_mgr); - -extern int bridge_chnl_open(struct chnl_object **chnl, - struct chnl_mgr *hchnl_mgr, - s8 chnl_mode, - u32 ch_id, - const struct chnl_attr - *pattrs); - -extern int bridge_chnl_close(struct chnl_object *chnl_obj); - -extern int bridge_chnl_add_io_req(struct chnl_object *chnl_obj, - void *host_buf, - u32 byte_size, u32 buf_size, - u32 dw_dsp_addr, u32 dw_arg); - -extern int bridge_chnl_get_ioc(struct chnl_object *chnl_obj, - u32 timeout, struct chnl_ioc *chan_ioc); - -extern int bridge_chnl_cancel_io(struct chnl_object *chnl_obj); - -extern int bridge_chnl_flush_io(struct chnl_object *chnl_obj, - u32 timeout); - -extern int bridge_chnl_get_info(struct chnl_object *chnl_obj, - struct chnl_info *channel_info); - -extern int bridge_chnl_get_mgr_info(struct chnl_mgr *hchnl_mgr, - u32 ch_id, struct chnl_mgrinfo - *mgr_info); - -extern int bridge_chnl_idle(struct chnl_object *chnl_obj, - u32 timeout, bool flush_data); - -extern int bridge_chnl_register_notify(struct chnl_object *chnl_obj, - u32 event_mask, - u32 notify_type, - struct dsp_notification - *hnotification); - -#endif /* DSPCHNL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h b/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h deleted file mode 100644 index ed32bf383132..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspdefs.h +++ /dev/null @@ -1,1048 +0,0 @@ -/* - * dspdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Bridge driver entry point and interface function declarations. - * - * Notes: - * The DSP API obtains it's function interface to - * the Bridge driver via a call to bridge_drv_entry(). - * - * Bridge services exported to Bridge drivers are initialized by the - * DSP API on behalf of the Bridge driver. - * - * Bridge function DBC Requires and Ensures are also made by the DSP API on - * behalf of the Bridge driver, to simplify the Bridge driver code. - * - * 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 DSPDEFS_ -#define DSPDEFS_ - -#include <dspbridge/brddefs.h> -#include <dspbridge/cfgdefs.h> -#include <dspbridge/chnlpriv.h> -#include <dspbridge/dspdeh.h> -#include <dspbridge/devdefs.h> -#include <dspbridge/io.h> -#include <dspbridge/msgdefs.h> - -/* Handle to Bridge driver's private device context. */ -struct bridge_dev_context; - -/*--------------------------------------------------------------------------- */ -/* BRIDGE DRIVER FUNCTION TYPES */ -/*--------------------------------------------------------------------------- */ - -/* - * ======== bridge_brd_monitor ======== - * Purpose: - * Bring the board to the BRD_IDLE (monitor) state. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device context. - * Returns: - * 0: Success. - * -ETIMEDOUT: Timeout occurred waiting for a response from hardware. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL - * Ensures: - * 0: Board is in BRD_IDLE state; - * else: Board state is indeterminate. - */ -typedef int(*fxn_brd_monitor) (struct bridge_dev_context *dev_ctxt); - -/* - * ======== fxn_brd_setstate ======== - * Purpose: - * Sets the Bridge driver state - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * brd_state: Board state - * Returns: - * 0: Success. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL; - * brd_state <= BRD_LASTSTATE. - * Ensures: - * brd_state <= BRD_LASTSTATE. - * Update the Board state to the specified state. - */ -typedef int(*fxn_brd_setstate) (struct bridge_dev_context - * dev_ctxt, u32 brd_state); - -/* - * ======== bridge_brd_start ======== - * Purpose: - * Bring board to the BRD_RUNNING (start) state. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device context. - * dsp_addr: DSP address at which to start execution. - * Returns: - * 0: Success. - * -ETIMEDOUT: Timeout occurred waiting for a response from hardware. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL - * Board is in monitor (BRD_IDLE) state. - * Ensures: - * 0: Board is in BRD_RUNNING state. - * Interrupts to the PC are enabled. - * else: Board state is indeterminate. - */ -typedef int(*fxn_brd_start) (struct bridge_dev_context - * dev_ctxt, u32 dsp_addr); - -/* - * ======== bridge_brd_mem_copy ======== - * Purpose: - * Copy memory from one DSP address to another - * Parameters: - * dev_context: Pointer to context handle - * dsp_dest_addr: DSP address to copy to - * dsp_src_addr: DSP address to copy from - * ul_num_bytes: Number of bytes to copy - * mem_type: What section of memory to copy to - * Returns: - * 0: Success. - * -EPERM: Other, unspecified error. - * Requires: - * dev_context != NULL - * Ensures: - * 0: Board is in BRD_RUNNING state. - * Interrupts to the PC are enabled. - * else: Board state is indeterminate. - */ -typedef int(*fxn_brd_memcopy) (struct bridge_dev_context - * dev_ctxt, - u32 dsp_dest_addr, - u32 dsp_src_addr, - u32 ul_num_bytes, u32 mem_type); -/* - * ======== bridge_brd_mem_write ======== - * Purpose: - * Write a block of host memory into a DSP address, into a given memory - * space. Unlike bridge_brd_write, this API does reset the DSP - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * dsp_addr: Address on DSP board (Destination). - * host_buf: Pointer to host buffer (Source). - * ul_num_bytes: Number of bytes to transfer. - * mem_type: Memory space on DSP to which to transfer. - * Returns: - * 0: Success. - * -ETIMEDOUT: Timeout occurred waiting for a response from hardware. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL; - * host_buf != NULL. - * Ensures: - */ -typedef int(*fxn_brd_memwrite) (struct bridge_dev_context - * dev_ctxt, - u8 *host_buf, - u32 dsp_addr, u32 ul_num_bytes, - u32 mem_type); - -/* - * ======== bridge_brd_mem_map ======== - * Purpose: - * Map a MPU memory region to a DSP/IVA memory space - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * ul_mpu_addr: MPU memory region start address. - * virt_addr: DSP/IVA memory region u8 address. - * ul_num_bytes: Number of bytes to map. - * map_attrs: Mapping attributes (e.g. endianness). - * Returns: - * 0: Success. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL; - * Ensures: - */ -typedef int(*fxn_brd_memmap) (struct bridge_dev_context - * dev_ctxt, u32 ul_mpu_addr, - u32 virt_addr, u32 ul_num_bytes, - u32 map_attr, - struct page **mapped_pages); - -/* - * ======== bridge_brd_mem_un_map ======== - * Purpose: - * UnMap an MPU memory region from DSP/IVA memory space - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * virt_addr: DSP/IVA memory region u8 address. - * ul_num_bytes: Number of bytes to unmap. - * Returns: - * 0: Success. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL; - * Ensures: - */ -typedef int(*fxn_brd_memunmap) (struct bridge_dev_context - * dev_ctxt, - u32 virt_addr, u32 ul_num_bytes); - -/* - * ======== bridge_brd_stop ======== - * Purpose: - * Bring board to the BRD_STOPPED state. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device context. - * Returns: - * 0: Success. - * -ETIMEDOUT: Timeout occurred waiting for a response from hardware. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL - * Ensures: - * 0: Board is in BRD_STOPPED (stop) state; - * Interrupts to the PC are disabled. - * else: Board state is indeterminate. - */ -typedef int(*fxn_brd_stop) (struct bridge_dev_context *dev_ctxt); - -/* - * ======== bridge_brd_status ======== - * Purpose: - * Report the current state of the board. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device context. - * board_state: Ptr to BRD status variable. - * Returns: - * 0: - * Requires: - * board_state != NULL; - * dev_ctxt != NULL - * Ensures: - * *board_state is one of - * {BRD_STOPPED, BRD_IDLE, BRD_RUNNING, BRD_UNKNOWN}; - */ -typedef int(*fxn_brd_status) (struct bridge_dev_context *dev_ctxt, - int *board_state); - -/* - * ======== bridge_brd_read ======== - * Purpose: - * Read a block of DSP memory, from a given memory space, into a host - * buffer. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * host_buf: Pointer to host buffer (Destination). - * dsp_addr: Address on DSP board (Source). - * ul_num_bytes: Number of bytes to transfer. - * mem_type: Memory space on DSP from which to transfer. - * Returns: - * 0: Success. - * -ETIMEDOUT: Timeout occurred waiting for a response from hardware. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL; - * host_buf != NULL. - * Ensures: - * Will not write more than ul_num_bytes bytes into host_buf. - */ -typedef int(*fxn_brd_read) (struct bridge_dev_context *dev_ctxt, - u8 *host_buf, - u32 dsp_addr, - u32 ul_num_bytes, u32 mem_type); - -/* - * ======== bridge_brd_write ======== - * Purpose: - * Write a block of host memory into a DSP address, into a given memory - * space. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * dsp_addr: Address on DSP board (Destination). - * host_buf: Pointer to host buffer (Source). - * ul_num_bytes: Number of bytes to transfer. - * mem_type: Memory space on DSP to which to transfer. - * Returns: - * 0: Success. - * -ETIMEDOUT: Timeout occurred waiting for a response from hardware. - * -EPERM: Other, unspecified error. - * Requires: - * dev_ctxt != NULL; - * host_buf != NULL. - * Ensures: - */ -typedef int(*fxn_brd_write) (struct bridge_dev_context *dev_ctxt, - u8 *host_buf, - u32 dsp_addr, - u32 ul_num_bytes, u32 mem_type); - -/* - * ======== bridge_chnl_create ======== - * Purpose: - * Create a channel manager object, responsible for opening new channels - * and closing old ones for a given 'Bridge board. - * Parameters: - * channel_mgr: Location to store a channel manager object on output. - * hdev_obj: Handle to a device object. - * mgr_attrts: Channel manager attributes. - * mgr_attrts->max_channels: Max channels - * mgr_attrts->birq: Channel's I/O IRQ number. - * mgr_attrts->irq_shared: TRUE if the IRQ is shareable. - * mgr_attrts->word_size: DSP Word size in equivalent PC bytes.. - * mgr_attrts->shm_base: Base physical address of shared memory, if any. - * mgr_attrts->sm_length: Bytes of shared memory block. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * -EIO: Unable to plug ISR for given IRQ. - * -EFAULT: Couldn't map physical address to a virtual one. - * Requires: - * channel_mgr != NULL. - * mgr_attrts != NULL - * mgr_attrts field are all valid: - * 0 < max_channels <= CHNL_MAXCHANNELS. - * birq <= 15. - * word_size > 0. - * hdev_obj != NULL - * No channel manager exists for this board. - * Ensures: - */ -typedef int(*fxn_chnl_create) (struct chnl_mgr - **channel_mgr, - struct dev_object - * hdev_obj, - const struct - chnl_mgrattrs * mgr_attrts); - -/* - * ======== bridge_chnl_destroy ======== - * Purpose: - * Close all open channels, and destroy the channel manager. - * Parameters: - * hchnl_mgr: Channel manager object. - * Returns: - * 0: Success. - * -EFAULT: hchnl_mgr was invalid. - * Requires: - * Ensures: - * 0: Cancels I/O on each open channel. Closes each open channel. - * chnl_create may subsequently be called for the same device. - */ -typedef int(*fxn_chnl_destroy) (struct chnl_mgr *hchnl_mgr); -/* - * ======== bridge_deh_notify ======== - * Purpose: - * When notified of DSP error, take appropriate action. - * Parameters: - * hdeh_mgr: Handle to DEH manager object. - * evnt_mask: Indicate the type of exception - * error_info: Error information - * Returns: - * - * Requires: - * hdeh_mgr != NULL; - * evnt_mask with a valid exception - * Ensures: - */ -typedef void (*fxn_deh_notify) (struct deh_mgr *hdeh_mgr, - u32 evnt_mask, u32 error_info); - -/* - * ======== bridge_chnl_open ======== - * Purpose: - * Open a new half-duplex channel to the DSP board. - * Parameters: - * chnl: Location to store a channel object handle. - * hchnl_mgr: Handle to channel manager, as returned by - * CHNL_GetMgr(). - * chnl_mode: One of {CHNL_MODETODSP, CHNL_MODEFROMDSP} specifies - * direction of data transfer. - * ch_id: If CHNL_PICKFREE is specified, the channel manager will - * select a free channel id (default); - * otherwise this field specifies the id of the channel. - * pattrs: Channel attributes. Attribute fields are as follows: - * pattrs->uio_reqs: Specifies the maximum number of I/O requests which can - * be pending at any given time. All request packets are - * preallocated when the channel is opened. - * pattrs->event_obj: This field allows the user to supply an auto reset - * event object for channel I/O completion notifications. - * It is the responsibility of the user to destroy this - * object AFTER closing the channel. - * This channel event object can be retrieved using - * CHNL_GetEventHandle(). - * pattrs->hReserved: The kernel mode handle of this event object. - * - * Returns: - * 0: Success. - * -EFAULT: hchnl_mgr is invalid. - * -ENOMEM: Insufficient memory for requested resources. - * -EINVAL: Invalid number of IOReqs. - * -ENOSR: No free channels available. - * -ECHRNG: Channel ID is out of range. - * -EALREADY: Channel is in use. - * -EIO: No free IO request packets available for - * queuing. - * Requires: - * chnl != NULL. - * pattrs != NULL. - * pattrs->event_obj is a valid event handle. - * pattrs->hReserved is the kernel mode handle for pattrs->event_obj. - * Ensures: - * 0: *chnl is a valid channel. - * else: *chnl is set to NULL if (chnl != NULL); - */ -typedef int(*fxn_chnl_open) (struct chnl_object - **chnl, - struct chnl_mgr *hchnl_mgr, - s8 chnl_mode, - u32 ch_id, - const struct - chnl_attr * pattrs); - -/* - * ======== bridge_chnl_close ======== - * Purpose: - * Ensures all pending I/O on this channel is cancelled, discards all - * queued I/O completion notifications, then frees the resources allocated - * for this channel, and makes the corresponding logical channel id - * available for subsequent use. - * Parameters: - * chnl_obj: Handle to a channel object. - * Returns: - * 0: Success; - * -EFAULT: Invalid chnl_obj. - * Requires: - * No thread must be blocked on this channel's I/O completion event. - * Ensures: - * 0: chnl_obj is no longer valid. - */ -typedef int(*fxn_chnl_close) (struct chnl_object *chnl_obj); - -/* - * ======== bridge_chnl_add_io_req ======== - * Purpose: - * Enqueue an I/O request for data transfer on a channel to the DSP. - * The direction (mode) is specified in the channel object. Note the DSP - * address is specified for channels opened in direct I/O mode. - * Parameters: - * chnl_obj: Channel object handle. - * host_buf: Host buffer address source. - * byte_size: Number of PC bytes to transfer. A zero value indicates - * that this buffer is the last in the output channel. - * A zero value is invalid for an input channel. - *! buf_size: Actual buffer size in host bytes. - * dw_dsp_addr: DSP address for transfer. (Currently ignored). - * dw_arg: A user argument that travels with the buffer. - * Returns: - * 0: Success; - * -EFAULT: Invalid chnl_obj or host_buf. - * -EPERM: User cannot mark EOS on an input channel. - * -ECANCELED: I/O has been cancelled on this channel. No further - * I/O is allowed. - * -EPIPE: End of stream was already marked on a previous - * IORequest on this channel. No further I/O is expected. - * -EINVAL: Buffer submitted to this output channel is larger than - * the size of the physical shared memory output window. - * Requires: - * Ensures: - * 0: The buffer will be transferred if the channel is ready; - * otherwise, will be queued for transfer when the channel becomes - * ready. In any case, notifications of I/O completion are - * asynchronous. - * If byte_size is 0 for an output channel, subsequent CHNL_AddIOReq's - * on this channel will fail with error code -EPIPE. The - * corresponding IOC for this I/O request will have its status flag - * set to CHNL_IOCSTATEOS. - */ -typedef int(*fxn_chnl_addioreq) (struct chnl_object - * chnl_obj, - void *host_buf, - u32 byte_size, - u32 buf_size, - u32 dw_dsp_addr, u32 dw_arg); - -/* - * ======== bridge_chnl_get_ioc ======== - * Purpose: - * Dequeue an I/O completion record, which contains information about the - * completed I/O request. - * Parameters: - * chnl_obj: Channel object handle. - * timeout: A value of CHNL_IOCNOWAIT will simply dequeue the - * first available IOC. - * chan_ioc: On output, contains host buffer address, bytes - * transferred, and status of I/O completion. - * chan_ioc->status: See chnldefs.h. - * Returns: - * 0: Success. - * -EFAULT: Invalid chnl_obj or chan_ioc. - * -EREMOTEIO: CHNL_IOCNOWAIT was specified as the timeout parameter - * yet no I/O completions were queued. - * Requires: - * timeout == CHNL_IOCNOWAIT. - * Ensures: - * 0: if there are any remaining IOC's queued before this call - * returns, the channel event object will be left in a signalled - * state. - */ -typedef int(*fxn_chnl_getioc) (struct chnl_object *chnl_obj, - u32 timeout, - struct chnl_ioc *chan_ioc); - -/* - * ======== bridge_chnl_cancel_io ======== - * Purpose: - * Return all I/O requests to the client which have not yet been - * transferred. The channel's I/O completion object is - * signalled, and all the I/O requests are queued as IOC's, with the - * status field set to CHNL_IOCSTATCANCEL. - * This call is typically used in abort situations, and is a prelude to - * chnl_close(); - * Parameters: - * chnl_obj: Channel object handle. - * Returns: - * 0: Success; - * -EFAULT: Invalid chnl_obj. - * Requires: - * Ensures: - * Subsequent I/O requests to this channel will not be accepted. - */ -typedef int(*fxn_chnl_cancelio) (struct chnl_object *chnl_obj); - -/* - * ======== bridge_chnl_flush_io ======== - * Purpose: - * For an output stream (to the DSP), indicates if any IO requests are in - * the output request queue. For input streams (from the DSP), will - * cancel all pending IO requests. - * Parameters: - * chnl_obj: Channel object handle. - * timeout: Timeout value for flush operation. - * Returns: - * 0: Success; - * S_CHNLIOREQUEST: Returned if any IORequests are in the output queue. - * -EFAULT: Invalid chnl_obj. - * Requires: - * Ensures: - * 0: No I/O requests will be pending on this channel. - */ -typedef int(*fxn_chnl_flushio) (struct chnl_object *chnl_obj, - u32 timeout); - -/* - * ======== bridge_chnl_get_info ======== - * Purpose: - * Retrieve information related to a channel. - * Parameters: - * chnl_obj: Handle to a valid channel object, or NULL. - * channel_info: Location to store channel info. - * Returns: - * 0: Success; - * -EFAULT: Invalid chnl_obj or channel_info. - * Requires: - * Ensures: - * 0: channel_info points to a filled in chnl_info struct, - * if (channel_info != NULL). - */ -typedef int(*fxn_chnl_getinfo) (struct chnl_object *chnl_obj, - struct chnl_info *channel_info); - -/* - * ======== bridge_chnl_get_mgr_info ======== - * Purpose: - * Retrieve information related to the channel manager. - * Parameters: - * hchnl_mgr: Handle to a valid channel manager, or NULL. - * ch_id: Channel ID. - * mgr_info: Location to store channel manager info. - * Returns: - * 0: Success; - * -EFAULT: Invalid hchnl_mgr or mgr_info. - * -ECHRNG: Invalid channel ID. - * Requires: - * Ensures: - * 0: mgr_info points to a filled in chnl_mgrinfo - * struct, if (mgr_info != NULL). - */ -typedef int(*fxn_chnl_getmgrinfo) (struct chnl_mgr - * hchnl_mgr, - u32 ch_id, - struct chnl_mgrinfo *mgr_info); - -/* - * ======== bridge_chnl_idle ======== - * Purpose: - * Idle a channel. If this is an input channel, or if this is an output - * channel and flush_data is TRUE, all currently enqueued buffers will be - * dequeued (data discarded for output channel). - * If this is an output channel and flush_data is FALSE, this function - * will block until all currently buffered data is output, or the timeout - * specified has been reached. - * - * Parameters: - * chnl_obj: Channel object handle. - * timeout: If output channel and flush_data is FALSE, timeout value - * to wait for buffers to be output. (Not used for - * input channel). - * flush_data: If output channel and flush_data is TRUE, discard any - * currently buffered data. If FALSE, wait for currently - * buffered data to be output, or timeout, whichever - * occurs first. flush_data is ignored for input channel. - * Returns: - * 0: Success; - * -EFAULT: Invalid chnl_obj. - * -ETIMEDOUT: Timeout occurred before channel could be idled. - * Requires: - * Ensures: - */ -typedef int(*fxn_chnl_idle) (struct chnl_object *chnl_obj, - u32 timeout, bool flush_data); - -/* - * ======== bridge_chnl_register_notify ======== - * Purpose: - * Register for notification of events on a channel. - * Parameters: - * chnl_obj: Channel object handle. - * event_mask: Type of events to be notified about: IO completion - * (DSP_STREAMIOCOMPLETION) or end of stream - * (DSP_STREAMDONE). - * notify_type: DSP_SIGNALEVENT. - * hnotification: Handle of a dsp_notification object. - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory. - * -EINVAL: event_mask is 0 and hnotification was not - * previously registered. - * -EFAULT: NULL hnotification, hnotification event name - * too long, or hnotification event name NULL. - * Requires: - * Valid chnl_obj. - * hnotification != NULL. - * (event_mask & ~(DSP_STREAMIOCOMPLETION | DSP_STREAMDONE)) == 0. - * notify_type == DSP_SIGNALEVENT. - * Ensures: - */ -typedef int(*fxn_chnl_registernotify) - (struct chnl_object *chnl_obj, - u32 event_mask, u32 notify_type, struct dsp_notification *hnotification); - -/* - * ======== bridge_dev_create ======== - * Purpose: - * Complete creation of the device object for this board. - * Parameters: - * device_ctx: Ptr to location to store a Bridge device context. - * hdev_obj: Handle to a Device Object, created and managed by DSP API. - * config_param: Ptr to configuration parameters provided by the - * Configuration Manager during device loading. - * pDspConfig: DSP resources, as specified in the registry key for this - * device. - * Returns: - * 0: Success. - * -ENOMEM: Unable to allocate memory for device context. - * Requires: - * device_ctx != NULL; - * hdev_obj != NULL; - * config_param != NULL; - * pDspConfig != NULL; - * Fields in config_param and pDspConfig contain valid values. - * Ensures: - * 0: All Bridge driver specific DSP resource and other - * board context has been allocated. - * -ENOMEM: Bridge failed to allocate resources. - * Any acquired resources have been freed. The DSP API - * will not call bridge_dev_destroy() if - * bridge_dev_create() fails. - * Details: - * Called during the CONFIGMG's Device_Init phase. Based on host and - * DSP configuration information, create a board context, a handle to - * which is passed into other Bridge BRD and CHNL functions. The - * board context contains state information for the device. Since the - * addresses of all pointer parameters may be invalid when this - * function returns, they must not be stored into the device context - * structure. - */ -typedef int(*fxn_dev_create) (struct bridge_dev_context - **device_ctx, - struct dev_object - * hdev_obj, - struct cfg_hostres - * config_param); - -/* - * ======== bridge_dev_ctrl ======== - * Purpose: - * Bridge driver specific interface. - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device info. - * dw_cmd: Bridge driver defined command code. - * pargs: Pointer to an arbitrary argument structure. - * Returns: - * 0 or -EPERM. Actual command error codes should be passed back in - * the pargs structure, and are defined by the Bridge driver implementor. - * Requires: - * All calls are currently assumed to be synchronous. There are no - * IOCTL completion routines provided. - * Ensures: - */ -typedef int(*fxn_dev_ctrl) (struct bridge_dev_context *dev_ctxt, - u32 dw_cmd, void *pargs); - -/* - * ======== bridge_dev_destroy ======== - * Purpose: - * Deallocate Bridge device extension structures and all other resources - * acquired by the Bridge driver. - * No calls to other Bridge driver functions may subsequently - * occur, except for bridge_dev_create(). - * Parameters: - * dev_ctxt: Handle to Bridge driver defined device information. - * Returns: - * 0: Success. - * -EPERM: Failed to release a resource previously acquired. - * Requires: - * dev_ctxt != NULL; - * Ensures: - * 0: Device context is freed. - */ -typedef int(*fxn_dev_destroy) (struct bridge_dev_context *dev_ctxt); - -/* - * ======== bridge_io_create ======== - * Purpose: - * Create an object that manages I/O between CHNL and msg_ctrl. - * Parameters: - * io_man: Location to store IO manager on output. - * hchnl_mgr: Handle to channel manager. - * hmsg_mgr: Handle to message manager. - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failure. - * -EPERM: Creation failed. - * Requires: - * hdev_obj != NULL; - * Channel manager already created; - * Message manager already created; - * mgr_attrts != NULL; - * io_man != NULL; - * Ensures: - */ -typedef int(*fxn_io_create) (struct io_mgr **io_man, - struct dev_object *hdev_obj, - const struct io_attrs *mgr_attrts); - -/* - * ======== bridge_io_destroy ======== - * Purpose: - * Destroy object created in bridge_io_create. - * Parameters: - * hio_mgr: IO Manager. - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failure. - * -EPERM: Creation failed. - * Requires: - * Valid hio_mgr; - * Ensures: - */ -typedef int(*fxn_io_destroy) (struct io_mgr *hio_mgr); - -/* - * ======== bridge_io_on_loaded ======== - * Purpose: - * Called whenever a program is loaded to update internal data. For - * example, if shared memory is used, this function would update the - * shared memory location and address. - * Parameters: - * hio_mgr: IO Manager. - * Returns: - * 0: Success. - * -EPERM: Internal failure occurred. - * Requires: - * Valid hio_mgr; - * Ensures: - */ -typedef int(*fxn_io_onloaded) (struct io_mgr *hio_mgr); - -/* - * ======== fxn_io_getprocload ======== - * Purpose: - * Called to get the Processor's current and predicted load - * Parameters: - * hio_mgr: IO Manager. - * proc_load_stat Processor Load statistics - * Returns: - * 0: Success. - * -EPERM: Internal failure occurred. - * Requires: - * Valid hio_mgr; - * Ensures: - */ -typedef int(*fxn_io_getprocload) (struct io_mgr *hio_mgr, - struct dsp_procloadstat * - proc_load_stat); - -/* - * ======== bridge_msg_create ======== - * Purpose: - * Create an object to manage message queues. Only one of these objects - * can exist per device object. - * Parameters: - * msg_man: Location to store msg_ctrl manager on output. - * hdev_obj: Handle to a device object. - * msg_callback: Called whenever an RMS_EXIT message is received. - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory. - * Requires: - * msg_man != NULL. - * msg_callback != NULL. - * hdev_obj != NULL. - * Ensures: - */ -typedef int(*fxn_msg_create) - (struct msg_mgr **msg_man, - struct dev_object *hdev_obj, msg_onexit msg_callback); - -/* - * ======== bridge_msg_create_queue ======== - * Purpose: - * Create a msg_ctrl queue for sending or receiving messages from a Message - * node on the DSP. - * Parameters: - * hmsg_mgr: msg_ctrl queue manager handle returned from - * bridge_msg_create. - * msgq: Location to store msg_ctrl queue on output. - * msgq_id: Identifier for messages (node environment pointer). - * max_msgs: Max number of simultaneous messages for the node. - * h: Handle passed to hmsg_mgr->msg_callback(). - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory. - * Requires: - * msgq != NULL. - * h != NULL. - * max_msgs > 0. - * Ensures: - * msgq !=NULL <==> 0. - */ -typedef int(*fxn_msg_createqueue) - (struct msg_mgr *hmsg_mgr, - struct msg_queue **msgq, u32 msgq_id, u32 max_msgs, void *h); - -/* - * ======== bridge_msg_delete ======== - * Purpose: - * Delete a msg_ctrl manager allocated in bridge_msg_create(). - * Parameters: - * hmsg_mgr: Handle returned from bridge_msg_create(). - * Returns: - * Requires: - * Valid hmsg_mgr. - * Ensures: - */ -typedef void (*fxn_msg_delete) (struct msg_mgr *hmsg_mgr); - -/* - * ======== bridge_msg_delete_queue ======== - * Purpose: - * Delete a msg_ctrl queue allocated in bridge_msg_create_queue. - * Parameters: - * msg_queue_obj: Handle to msg_ctrl queue returned from - * bridge_msg_create_queue. - * Returns: - * Requires: - * Valid msg_queue_obj. - * Ensures: - */ -typedef void (*fxn_msg_deletequeue) (struct msg_queue *msg_queue_obj); - -/* - * ======== bridge_msg_get ======== - * Purpose: - * Get a message from a msg_ctrl queue. - * Parameters: - * msg_queue_obj: Handle to msg_ctrl queue returned from - * bridge_msg_create_queue. - * pmsg: Location to copy message into. - * utimeout: Timeout to wait for a message. - * Returns: - * 0: Success. - * -ETIME: Timeout occurred. - * -EPERM: No frames available for message (max_msgs too - * small). - * Requires: - * Valid msg_queue_obj. - * pmsg != NULL. - * Ensures: - */ -typedef int(*fxn_msg_get) (struct msg_queue *msg_queue_obj, - struct dsp_msg *pmsg, u32 utimeout); - -/* - * ======== bridge_msg_put ======== - * Purpose: - * Put a message onto a msg_ctrl queue. - * Parameters: - * msg_queue_obj: Handle to msg_ctrl queue returned from - * bridge_msg_create_queue. - * pmsg: Pointer to message. - * utimeout: Timeout to wait for a message. - * Returns: - * 0: Success. - * -ETIME: Timeout occurred. - * -EPERM: No frames available for message (max_msgs too - * small). - * Requires: - * Valid msg_queue_obj. - * pmsg != NULL. - * Ensures: - */ -typedef int(*fxn_msg_put) (struct msg_queue *msg_queue_obj, - const struct dsp_msg *pmsg, u32 utimeout); - -/* - * ======== bridge_msg_register_notify ======== - * Purpose: - * Register notification for when a message is ready. - * Parameters: - * msg_queue_obj: Handle to msg_ctrl queue returned from - * bridge_msg_create_queue. - * event_mask: Type of events to be notified about: Must be - * DSP_NODEMESSAGEREADY, or 0 to unregister. - * notify_type: DSP_SIGNALEVENT. - * hnotification: Handle of notification object. - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory. - * Requires: - * Valid msg_queue_obj. - * hnotification != NULL. - * notify_type == DSP_SIGNALEVENT. - * event_mask == DSP_NODEMESSAGEREADY || event_mask == 0. - * Ensures: - */ -typedef int(*fxn_msg_registernotify) - (struct msg_queue *msg_queue_obj, - u32 event_mask, u32 notify_type, struct dsp_notification *hnotification); - -/* - * ======== bridge_msg_set_queue_id ======== - * Purpose: - * Set message queue id to node environment. Allows bridge_msg_create_queue - * to be called in node_allocate, before the node environment is known. - * Parameters: - * msg_queue_obj: Handle to msg_ctrl queue returned from - * bridge_msg_create_queue. - * msgq_id: Node environment pointer. - * Returns: - * Requires: - * Valid msg_queue_obj. - * msgq_id != 0. - * Ensures: - */ -typedef void (*fxn_msg_setqueueid) (struct msg_queue *msg_queue_obj, - u32 msgq_id); - -/* - * Bridge Driver interface function table. - * - * The information in this table is filled in by the specific Bridge driver, - * and copied into the DSP API's own space. If any interface - * function field is set to a value of NULL, then the DSP API will - * consider that function not implemented, and return the error code - * -ENOSYS when a Bridge driver client attempts to call that function. - * - * This function table contains DSP API version numbers, which are used by the - * Bridge driver loader to help ensure backwards compatility between older - * Bridge drivers and newer DSP API. These must be set to - * BRD_API_MAJOR_VERSION and BRD_API_MINOR_VERSION, respectively. - * - * A Bridge driver need not export a CHNL interface. In this case, *all* of - * the bridge_chnl_* entries must be set to NULL. - */ -struct bridge_drv_interface { - u32 brd_api_major_version; /* Set to BRD_API_MAJOR_VERSION. */ - u32 brd_api_minor_version; /* Set to BRD_API_MINOR_VERSION. */ - fxn_dev_create dev_create; /* Create device context */ - fxn_dev_destroy dev_destroy; /* Destroy device context */ - fxn_dev_ctrl dev_cntrl; /* Optional vendor interface */ - fxn_brd_monitor brd_monitor; /* Load and/or start monitor */ - fxn_brd_start brd_start; /* Start DSP program. */ - fxn_brd_stop brd_stop; /* Stop/reset board. */ - fxn_brd_status brd_status; /* Get current board status. */ - fxn_brd_read brd_read; /* Read board memory */ - fxn_brd_write brd_write; /* Write board memory. */ - fxn_brd_setstate brd_set_state; /* Sets the Board State */ - fxn_brd_memcopy brd_mem_copy; /* Copies DSP Memory */ - fxn_brd_memwrite brd_mem_write; /* Write DSP Memory w/o halt */ - fxn_brd_memmap brd_mem_map; /* Maps MPU mem to DSP mem */ - fxn_brd_memunmap brd_mem_un_map; /* Unmaps MPU mem to DSP mem */ - fxn_chnl_create chnl_create; /* Create channel manager. */ - fxn_chnl_destroy chnl_destroy; /* Destroy channel manager. */ - fxn_chnl_open chnl_open; /* Create a new channel. */ - fxn_chnl_close chnl_close; /* Close a channel. */ - fxn_chnl_addioreq chnl_add_io_req; /* Req I/O on a channel. */ - fxn_chnl_getioc chnl_get_ioc; /* Wait for I/O completion. */ - fxn_chnl_cancelio chnl_cancel_io; /* Cancl I/O on a channel. */ - fxn_chnl_flushio chnl_flush_io; /* Flush I/O. */ - fxn_chnl_getinfo chnl_get_info; /* Get channel specific info */ - /* Get channel manager info. */ - fxn_chnl_getmgrinfo chnl_get_mgr_info; - fxn_chnl_idle chnl_idle; /* Idle the channel */ - /* Register for notif. */ - fxn_chnl_registernotify chnl_register_notify; - fxn_io_create io_create; /* Create IO manager */ - fxn_io_destroy io_destroy; /* Destroy IO manager */ - fxn_io_onloaded io_on_loaded; /* Notify of program loaded */ - /* Get Processor's current and predicted load */ - fxn_io_getprocload io_get_proc_load; - fxn_msg_create msg_create; /* Create message manager */ - /* Create message queue */ - fxn_msg_createqueue msg_create_queue; - fxn_msg_delete msg_delete; /* Delete message manager */ - /* Delete message queue */ - fxn_msg_deletequeue msg_delete_queue; - fxn_msg_get msg_get; /* Get a message */ - fxn_msg_put msg_put; /* Send a message */ - /* Register for notif. */ - fxn_msg_registernotify msg_register_notify; - /* Set message queue id */ - fxn_msg_setqueueid msg_set_queue_id; -}; - -/* - * ======== bridge_drv_entry ======== - * Purpose: - * Registers Bridge driver functions with the DSP API. Called only once - * by the DSP API. The caller will first check DSP API version - * compatibility, and then copy the interface functions into its own - * memory space. - * Parameters: - * drv_intf Pointer to a location to receive a pointer to the - * Bridge driver interface. - * Returns: - * Requires: - * The code segment this function resides in must expect to be discarded - * after completion. - * Ensures: - * drv_intf pointer initialized to Bridge driver's function - * interface. No system resources are acquired by this function. - * Details: - * Called during the Device_Init phase. - */ -void bridge_drv_entry(struct bridge_drv_interface **drv_intf, - const char *driver_file_name); - -#endif /* DSPDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspdeh.h b/drivers/staging/tidspbridge/include/dspbridge/dspdeh.h deleted file mode 100644 index d258ab6a41d1..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspdeh.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * dspdeh.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Defines upper edge DEH functions required by all Bridge driver/DSP API - * interface tables. - * - * Notes: - * Function comment headers reside with the function typedefs in dspdefs.h. - * - * Copyright (C) 2005-2006 Texas Instruments, Inc. - * Copyright (C) 2010 Felipe Contreras - * - * 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 DSPDEH_ -#define DSPDEH_ - -struct deh_mgr; -struct dev_object; -struct dsp_notification; - -int bridge_deh_create(struct deh_mgr **ret_deh, - struct dev_object *hdev_obj); - -int bridge_deh_destroy(struct deh_mgr *deh); - -int bridge_deh_register_notify(struct deh_mgr *deh, - u32 event_mask, - u32 notify_type, - struct dsp_notification *hnotification); - -void bridge_deh_notify(struct deh_mgr *deh, int event, int info); - -#endif /* DSPDEH_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h b/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h deleted file mode 100644 index 7adf1e705314..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspdrv.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * dspdrv.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * This is the Stream Interface for the DSp API. - * All Device operations are performed via DeviceIOControl. - * - * 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. - */ - -#if !defined _DSPDRV_H_ -#define _DSPDRV_H_ - -/* - * ======== dsp_deinit ======== - * Purpose: - * This function is called by Device Manager to de-initialize a device. - * This function is not called by applications. - * Parameters: - * device_context:Handle to the device context. The XXX_Init function - * creates and returns this identifier. - * Returns: - * TRUE indicates the device successfully de-initialized. Otherwise it - * returns FALSE. - * Requires: - * device_context!= NULL. For a built in device this should never - * get called. - * Ensures: - */ -extern bool dsp_deinit(u32 device_context); - -/* - * ======== dsp_init ======== - * Purpose: - * This function is called by Device Manager to initialize a device. - * This function is not called by applications - * Parameters: - * dw_context: Specifies a pointer to a string containing the registry - * path to the active key for the stream interface driver. - * HKEY_LOCAL_MACHINE\Drivers\Active - * Returns: - * Returns a handle to the device context created. This is the our actual - * Device Object representing the DSP Device instance. - * Requires: - * Ensures: - * Succeeded: device context > 0 - * Failed: device Context = 0 - */ -extern u32 dsp_init(u32 *init_status); - -#endif diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspio.h b/drivers/staging/tidspbridge/include/dspbridge/dspio.h deleted file mode 100644 index 66b64fadf197..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspio.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * dspio.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Declares the upper edge IO functions required by all Bridge driver /DSP API - * interface tables. - * - * Notes: - * Function comment headers reside in dspdefs.h. - * - * 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 DSPIO_ -#define DSPIO_ - -#include <dspbridge/devdefs.h> -#include <dspbridge/io.h> - - -extern int bridge_io_create(struct io_mgr **io_man, - struct dev_object *hdev_obj, - const struct io_attrs *mgr_attrts); - -extern int bridge_io_destroy(struct io_mgr *hio_mgr); - -extern int bridge_io_on_loaded(struct io_mgr *hio_mgr); - -extern int bridge_io_get_proc_load(struct io_mgr *hio_mgr, - struct dsp_procloadstat *proc_lstat); - -#endif /* DSPIO_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h b/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h deleted file mode 100644 index 0fcda1978921..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspioctl.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * dspioctl.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Bridge driver BRD_IOCtl reserved command definitions. - * - * 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 DSPIOCTL_ -#define DSPIOCTL_ - -/* ------------------------------------ Hardware Abstraction Layer */ -#include <hw_defs.h> -#include <hw_mmu.h> - -/* - * Any IOCTLS at or above this value are reserved for standard Bridge driver - * interfaces. - */ -#define BRDIOCTL_RESERVEDBASE 0x8000 - -#define BRDIOCTL_CHNLREAD (BRDIOCTL_RESERVEDBASE + 0x10) -#define BRDIOCTL_CHNLWRITE (BRDIOCTL_RESERVEDBASE + 0x20) -/* DMMU */ -#define BRDIOCTL_SETMMUCONFIG (BRDIOCTL_RESERVEDBASE + 0x60) -/* PWR */ -#define BRDIOCTL_PWRCONTROL (BRDIOCTL_RESERVEDBASE + 0x70) - -/* attention, modifiers: - * Some of these control enumerations are made visible to user for power - * control, so any changes to this list, should also be updated in the user - * header file 'dbdefs.h' ***/ -/* These ioctls are reserved for PWR power commands for the DSP */ -#define BRDIOCTL_DEEPSLEEP (BRDIOCTL_PWRCONTROL + 0x0) -#define BRDIOCTL_EMERGENCYSLEEP (BRDIOCTL_PWRCONTROL + 0x1) -#define BRDIOCTL_WAKEUP (BRDIOCTL_PWRCONTROL + 0x2) -#define BRDIOCTL_CLK_CTRL (BRDIOCTL_PWRCONTROL + 0x7) -/* DSP Initiated Hibernate */ -#define BRDIOCTL_PWR_HIBERNATE (BRDIOCTL_PWRCONTROL + 0x8) -#define BRDIOCTL_PRESCALE_NOTIFY (BRDIOCTL_PWRCONTROL + 0x9) -#define BRDIOCTL_POSTSCALE_NOTIFY (BRDIOCTL_PWRCONTROL + 0xA) -#define BRDIOCTL_CONSTRAINT_REQUEST (BRDIOCTL_PWRCONTROL + 0xB) - -/* Number of actual DSP-MMU TLB entries */ -#define BRDIOCTL_NUMOFMMUTLB 32 - -struct bridge_ioctl_extproc { - u32 dsp_va; /* DSP virtual address */ - u32 gpp_pa; /* GPP physical address */ - /* GPP virtual address. __va does not work for ioremapped addresses */ - u32 gpp_va; - u32 size; /* Size of the mapped memory in bytes */ - enum hw_endianism_t endianism; - enum hw_mmu_mixed_size_t mixed_mode; - enum hw_element_size_t elem_size; -}; - -#endif /* DSPIOCTL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dspmsg.h b/drivers/staging/tidspbridge/include/dspbridge/dspmsg.h deleted file mode 100644 index d4bd458bc8be..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dspmsg.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * dspmsg.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Declares the upper edge message class library functions required by - * all Bridge driver / DSP API interface tables. These functions are - * implemented by every class of Bridge driver channel library. - * - * Notes: - * Function comment headers reside in dspdefs.h. - * - * 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 DSPMSG_ -#define DSPMSG_ - -#include <dspbridge/msgdefs.h> - -extern int bridge_msg_create(struct msg_mgr **msg_man, - struct dev_object *hdev_obj, - msg_onexit msg_callback); - -extern int bridge_msg_create_queue(struct msg_mgr *hmsg_mgr, - struct msg_queue **msgq, - u32 msgq_id, u32 max_msgs, void *arg); - -extern void bridge_msg_delete(struct msg_mgr *hmsg_mgr); - -extern void bridge_msg_delete_queue(struct msg_queue *msg_queue_obj); - -extern int bridge_msg_get(struct msg_queue *msg_queue_obj, - struct dsp_msg *pmsg, u32 utimeout); - -extern int bridge_msg_put(struct msg_queue *msg_queue_obj, - const struct dsp_msg *pmsg, u32 utimeout); - -extern int bridge_msg_register_notify(struct msg_queue *msg_queue_obj, - u32 event_mask, - u32 notify_type, - struct dsp_notification - *hnotification); - -extern void bridge_msg_set_queue_id(struct msg_queue *msg_queue_obj, - u32 msgq_id); - -#endif /* DSPMSG_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h b/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h deleted file mode 100644 index 052d27ee8b1a..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/dynamic_loader.h +++ /dev/null @@ -1,490 +0,0 @@ -/* - * dynamic_loader.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Copyright (C) 2008 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 _DYNAMIC_LOADER_H_ -#define _DYNAMIC_LOADER_H_ -#include <linux/kernel.h> -#include <linux/types.h> - -/* - * Dynamic Loader - * - * The function of the dynamic loader is to load a "module" containing - * instructions for a "target" processor into that processor. In the process - * it assigns memory for the module, resolves symbol references made by the - * module, and remembers symbols defined by the module. - * - * The dynamic loader is parameterized for a particular system by 4 classes - * that supply the module and system specific functions it requires - */ - /* The read functions for the module image to be loaded */ -struct dynamic_loader_stream; - - /* This class defines "host" symbol and support functions */ -struct dynamic_loader_sym; - - /* This class defines the allocator for "target" memory */ -struct dynamic_loader_allocate; - - /* This class defines the copy-into-target-memory functions */ -struct dynamic_loader_initialize; - -/* - * Option flags to modify the behavior of module loading - */ -#define DLOAD_INITBSS 0x1 /* initialize BSS sections to zero */ - -/***************************************************************************** - * Procedure dynamic_load_module - * - * Parameters: - * module The input stream that supplies the module image - * syms Host-side symbol table and malloc/free functions - * alloc Target-side memory allocation - * init Target-side memory initialization, or NULL for symbol read only - * options Option flags DLOAD_* - * mhandle A module handle for use with Dynamic_Unload - * - * Effect: - * The module image is read using *module. Target storage for the new image is - * obtained from *alloc. Symbols defined and referenced by the module are - * managed using *syms. The image is then relocated and references resolved - * as necessary, and the resulting executable bits are placed into target memory - * using *init. - * - * Returns: - * On a successful load, a module handle is placed in *mhandle, and zero is - * returned. On error, the number of errors detected is returned. Individual - * errors are reported during the load process using syms->error_report(). - **************************************************************************** */ -extern int dynamic_load_module( - /* the source for the module image */ - struct dynamic_loader_stream *module, - /* host support for symbols and storage */ - struct dynamic_loader_sym *syms, - /* the target memory allocator */ - struct dynamic_loader_allocate *alloc, - /* the target memory initializer */ - struct dynamic_loader_initialize *init, - unsigned options, /* option flags */ - /* the returned module handle */ - void **mhandle); - -/***************************************************************************** - * Procedure dynamic_open_module - * - * Parameters: - * module The input stream that supplies the module image - * syms Host-side symbol table and malloc/free functions - * alloc Target-side memory allocation - * init Target-side memory initialization, or NULL for symbol read only - * options Option flags DLOAD_* - * mhandle A module handle for use with Dynamic_Unload - * - * Effect: - * The module image is read using *module. Target storage for the new image is - * obtained from *alloc. Symbols defined and referenced by the module are - * managed using *syms. The image is then relocated and references resolved - * as necessary, and the resulting executable bits are placed into target memory - * using *init. - * - * Returns: - * On a successful load, a module handle is placed in *mhandle, and zero is - * returned. On error, the number of errors detected is returned. Individual - * errors are reported during the load process using syms->error_report(). - **************************************************************************** */ -extern int dynamic_open_module( - /* the source for the module image */ - struct dynamic_loader_stream *module, - /* host support for symbols and storage */ - struct dynamic_loader_sym *syms, - /* the target memory allocator */ - struct dynamic_loader_allocate *alloc, - /* the target memory initializer */ - struct dynamic_loader_initialize *init, - unsigned options, /* option flags */ - /* the returned module handle */ - void **mhandle); - -/***************************************************************************** - * Procedure dynamic_unload_module - * - * Parameters: - * mhandle A module handle from dynamic_load_module - * syms Host-side symbol table and malloc/free functions - * alloc Target-side memory allocation - * - * Effect: - * The module specified by mhandle is unloaded. Unloading causes all - * target memory to be deallocated, all symbols defined by the module to - * be purged, and any host-side storage used by the dynamic loader for - * this module to be released. - * - * Returns: - * Zero for success. On error, the number of errors detected is returned. - * Individual errors are reported using syms->error_report(). - **************************************************************************** */ -extern int dynamic_unload_module(void *mhandle, /* the module - * handle */ - /* host support for symbols and - * storage */ - struct dynamic_loader_sym *syms, - /* the target memory allocator */ - struct dynamic_loader_allocate *alloc, - /* the target memory initializer */ - struct dynamic_loader_initialize *init); - -/***************************************************************************** - ***************************************************************************** - * A class used by the dynamic loader for input of the module image - ***************************************************************************** - **************************************************************************** */ -struct dynamic_loader_stream { -/* public: */ - /************************************************************************* - * read_buffer - * - * PARAMETERS : - * buffer Pointer to the buffer to fill - * bufsiz Amount of data desired in sizeof() units - * - * EFFECT : - * Reads the specified amount of data from the module input stream - * into the specified buffer. Returns the amount of data read in sizeof() - * units (which if less than the specification, represents an error). - * - * NOTES: - * In release 1 increments the file position by the number of bytes read - * - ************************************************************************ */ - int (*read_buffer) (struct dynamic_loader_stream *thisptr, - void *buffer, unsigned bufsiz); - - /************************************************************************* - * set_file_posn (release 1 only) - * - * PARAMETERS : - * posn Desired file position relative to start of file in sizeof() units. - * - * EFFECT : - * Adjusts the internal state of the stream object so that the next - * read_buffer call will begin to read at the specified offset from - * the beginning of the input module. Returns 0 for success, non-zero - * for failure. - * - ************************************************************************ */ - int (*set_file_posn) (struct dynamic_loader_stream *thisptr, - /* to be eliminated in release 2 */ - unsigned int posn); - -}; - -/***************************************************************************** - ***************************************************************************** - * A class used by the dynamic loader for symbol table support and - * miscellaneous host-side functions - ***************************************************************************** - **************************************************************************** */ - -typedef u32 ldr_addr; - -/* - * the structure of a symbol known to the dynamic loader - */ -struct dynload_symbol { - ldr_addr value; -}; - -struct dynamic_loader_sym { -/* public: */ - /************************************************************************* - * find_matching_symbol - * - * PARAMETERS : - * name The name of the desired symbol - * - * EFFECT : - * Locates a symbol matching the name specified. A pointer to the - * symbol is returned if it exists; 0 is returned if no such symbol is - * found. - * - ************************************************************************ */ - struct dynload_symbol *(*find_matching_symbol) - (struct dynamic_loader_sym *thisptr, const char *name); - - /************************************************************************* - * add_to_symbol_table - * - * PARAMETERS : - * nname Pointer to the name of the new symbol - * moduleid An opaque module id assigned by the dynamic loader - * - * EFFECT : - * The new symbol is added to the table. A pointer to the symbol is - * returned, or NULL is returned for failure. - * - * NOTES: - * It is permissible for this function to return NULL; the effect is that - * the named symbol will not be available to resolve references in - * subsequent loads. Returning NULL will not cause the current load - * to fail. - ************************************************************************ */ - struct dynload_symbol *(*add_to_symbol_table) - (struct dynamic_loader_sym * - thisptr, const char *nname, unsigned moduleid); - - /************************************************************************* - * purge_symbol_table - * - * PARAMETERS : - * moduleid An opaque module id assigned by the dynamic loader - * - * EFFECT : - * Each symbol in the symbol table whose moduleid matches the argument - * is removed from the table. - ************************************************************************ */ - void (*purge_symbol_table) (struct dynamic_loader_sym *thisptr, - unsigned moduleid); - - /************************************************************************* - * dload_allocate - * - * PARAMETERS : - * memsiz size of desired memory in sizeof() units - * - * EFFECT : - * Returns a pointer to some "host" memory for use by the dynamic - * loader, or NULL for failure. - * This function is serves as a replaceable form of "malloc" to - * allow the user to configure the memory usage of the dynamic loader. - ************************************************************************ */ - void *(*dload_allocate) (struct dynamic_loader_sym *thisptr, - unsigned memsiz); - - /************************************************************************* - * dload_deallocate - * - * PARAMETERS : - * memptr pointer to previously allocated memory - * - * EFFECT : - * Releases the previously allocated "host" memory. - ************************************************************************ */ - void (*dload_deallocate) (struct dynamic_loader_sym *thisptr, - void *memptr); - - /************************************************************************* - * error_report - * - * PARAMETERS : - * errstr pointer to an error string - * args additional arguments - * - * EFFECT : - * This function provides an error reporting interface for the dynamic - * loader. The error string and arguments are designed as for the - * library function vprintf. - ************************************************************************ */ - void (*error_report) (struct dynamic_loader_sym *thisptr, - const char *errstr, va_list args); - -}; /* class dynamic_loader_sym */ - -/***************************************************************************** - ***************************************************************************** - * A class used by the dynamic loader to allocate and deallocate target memory. - ***************************************************************************** - **************************************************************************** */ - -struct ldr_section_info { - /* Name of the memory section assigned at build time */ - const char *name; - ldr_addr run_addr; /* execution address of the section */ - ldr_addr load_addr; /* load address of the section */ - ldr_addr size; /* size of the section in addressable units */ -#ifndef _BIG_ENDIAN - u16 page; /* memory page or view */ - u16 type; /* one of the section types below */ -#else - u16 type; /* one of the section types below */ - u16 page; /* memory page or view */ -#endif - /* a context field for use by dynamic_loader_allocate; - * ignored but maintained by the dynamic loader */ - u32 context; -}; - -/* use this macro to extract type of section from ldr_section_info.type field */ -#define DLOAD_SECTION_TYPE(typeinfo) (typeinfo & 0xF) - -/* type of section to be allocated */ -#define DLOAD_TEXT 0 -#define DLOAD_DATA 1 -#define DLOAD_BSS 2 - /* internal use only, run-time cinit will be of type DLOAD_DATA */ -#define DLOAD_CINIT 3 - -struct dynamic_loader_allocate { -/* public: */ - - /************************************************************************* - * Function allocate - * - * Parameters: - * info A pointer to an information block for the section - * align The alignment of the storage in target AUs - * - * Effect: - * Allocates target memory for the specified section and fills in the - * load_addr and run_addr fields of the section info structure. Returns TRUE - * for success, FALSE for failure. - * - * Notes: - * Frequently load_addr and run_addr are the same, but if they are not - * load_addr is used with dynamic_loader_initialize, and run_addr is - * used for almost all relocations. This function should always initialize - * both fields. - ************************************************************************ */ - int (*dload_allocate) (struct dynamic_loader_allocate *thisptr, - struct ldr_section_info *info, unsigned align); - - /************************************************************************* - * Function deallocate - * - * Parameters: - * info A pointer to an information block for the section - * - * Effect: - * Releases the target memory previously allocated. - * - * Notes: - * The content of the info->name field is undefined on call to this function. - ************************************************************************ */ - void (*dload_deallocate) (struct dynamic_loader_allocate *thisptr, - struct ldr_section_info *info); - -}; /* class dynamic_loader_allocate */ - -/***************************************************************************** - ***************************************************************************** - * A class used by the dynamic loader to load data into a target. This class - * provides the interface-specific functions needed to load data. - ***************************************************************************** - **************************************************************************** */ - -struct dynamic_loader_initialize { -/* public: */ - /************************************************************************* - * Function connect - * - * Parameters: - * none - * - * Effect: - * Connect to the initialization interface. Returns TRUE for success, - * FALSE for failure. - * - * Notes: - * This function is called prior to use of any other functions in - * this interface. - ************************************************************************ */ - int (*connect) (struct dynamic_loader_initialize *thisptr); - - /************************************************************************* - * Function readmem - * - * Parameters: - * bufr Pointer to a word-aligned buffer for the result - * locn Target address of first data element - * info Section info for the section in which the address resides - * bytsiz Size of the data to be read in sizeof() units - * - * Effect: - * Fills the specified buffer with data from the target. Returns TRUE for - * success, FALSE for failure. - ************************************************************************ */ - int (*readmem) (struct dynamic_loader_initialize *thisptr, - void *bufr, - ldr_addr locn, - struct ldr_section_info *info, unsigned bytsiz); - - /************************************************************************* - * Function writemem - * - * Parameters: - * bufr Pointer to a word-aligned buffer of data - * locn Target address of first data element to be written - * info Section info for the section in which the address resides - * bytsiz Size of the data to be written in sizeof() units - * - * Effect: - * Writes the specified buffer to the target. Returns TRUE for success, - * FALSE for failure. - ************************************************************************ */ - int (*writemem) (struct dynamic_loader_initialize *thisptr, - void *bufr, - ldr_addr locn, - struct ldr_section_info *info, unsigned bytsiz); - - /************************************************************************* - * Function fillmem - * - * Parameters: - * locn Target address of first data element to be written - * info Section info for the section in which the address resides - * bytsiz Size of the data to be written in sizeof() units - * val Value to be written in each byte - * Effect: - * Fills the specified area of target memory. Returns TRUE for success, - * FALSE for failure. - ************************************************************************ */ - int (*fillmem) (struct dynamic_loader_initialize *thisptr, - ldr_addr locn, struct ldr_section_info *info, - unsigned bytsiz, unsigned val); - - /************************************************************************* - * Function execute - * - * Parameters: - * start Starting address - * - * Effect: - * The target code at the specified starting address is executed. - * - * Notes: - * This function is called at the end of the dynamic load process - * if the input module has specified a starting address. - ************************************************************************ */ - int (*execute) (struct dynamic_loader_initialize *thisptr, - ldr_addr start); - - /************************************************************************* - * Function release - * - * Parameters: - * none - * - * Effect: - * Releases the connection to the load interface. - * - * Notes: - * This function is called at the end of the dynamic load process. - ************************************************************************ */ - void (*release) (struct dynamic_loader_initialize *thisptr); - -}; /* class dynamic_loader_initialize */ - -#endif /* _DYNAMIC_LOADER_H_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/getsection.h b/drivers/staging/tidspbridge/include/dspbridge/getsection.h deleted file mode 100644 index 626063dd9dfe..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/getsection.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * getsection.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * This file provides an API add-on to the dynamic loader that allows the user - * to query section information and extract section data from dynamic load - * modules. - * - * Notes: - * Functions in this API assume that the supplied dynamic_loader_stream - * object supports the set_file_posn method. - * - * Copyright (C) 2008 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 _GETSECTION_H_ -#define _GETSECTION_H_ - -#include "dynamic_loader.h" - -/* - * Procedure dload_module_open - * - * Parameters: - * module The input stream that supplies the module image - * syms Host-side malloc/free and error reporting functions. - * Other methods are unused. - * - * Effect: - * Reads header information from a dynamic loader module using the specified - * stream object, and returns a handle for the module information. This - * handle may be used in subsequent query calls to obtain information - * contained in the module. - * - * Returns: - * NULL if an error is encountered, otherwise a module handle for use - * in subsequent operations. - */ -extern void *dload_module_open(struct dynamic_loader_stream - *module, struct dynamic_loader_sym - *syms); - -/* - * Procedure dload_get_section_info - * - * Parameters: - * minfo Handle from dload_module_open for this module - * section_name Pointer to the string name of the section desired - * section_info Address of a section info structure pointer to be initialized - * - * Effect: - * Finds the specified section in the module information, and fills in - * the provided ldr_section_info structure. - * - * Returns: - * TRUE for success, FALSE for section not found - */ -extern int dload_get_section_info(void *minfo, - const char *section_name, - const struct ldr_section_info - **const section_info); - -/* - * Procedure dload_get_section - * - * Parameters: - * minfo Handle from dload_module_open for this module - * section_info Pointer to a section info structure for the desired section - * section_data Buffer to contain the section initialized data - * - * Effect: - * Copies the initialized data for the specified section into the - * supplied buffer. - * - * Returns: - * TRUE for success, FALSE for section not found - */ -extern int dload_get_section(void *minfo, - const struct ldr_section_info *section_info, - void *section_data); - -/* - * Procedure dload_module_close - * - * Parameters: - * minfo Handle from dload_module_open for this module - * - * Effect: - * Releases any storage associated with the module handle. On return, - * the module handle is invalid. - * - * Returns: - * Zero for success. On error, the number of errors detected is returned. - * Individual errors are reported using syms->error_report(), where syms was - * an argument to dload_module_open - */ -extern void dload_module_close(void *minfo); - -#endif /* _GETSECTION_H_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/gh.h b/drivers/staging/tidspbridge/include/dspbridge/gh.h deleted file mode 100644 index e4303b4bf5fd..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/gh.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * gh.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 GH_ -#define GH_ -#include <dspbridge/host_os.h> - -extern struct gh_t_hash_tab *gh_create(u32 val_size, - u32 (*hash)(const void *), bool (*match)(const void *, - const void *), void (*delete) (void *)); -extern void gh_delete(struct gh_t_hash_tab *hash_tab); -extern void *gh_find(struct gh_t_hash_tab *hash_tab, const void *key); -extern void *gh_insert(struct gh_t_hash_tab *hash_tab, const void *key, - const void *value); -#ifdef CONFIG_TIDSPBRIDGE_BACKTRACE -void gh_iterate(struct gh_t_hash_tab *hash_tab, - void (*callback)(void *, void *), void *user_data); -#endif -#endif /* GH_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/host_os.h b/drivers/staging/tidspbridge/include/dspbridge/host_os.h deleted file mode 100644 index d1441db469fc..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/host_os.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * host_os.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Copyright (C) 2008 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 _HOST_OS_H_ -#define _HOST_OS_H_ - -#include <linux/atomic.h> -#include <linux/semaphore.h> -#include <linux/uaccess.h> -#include <linux/irq.h> -#include <linux/io.h> -#include <linux/syscalls.h> -#include <linux/kernel.h> -#include <linux/string.h> -#include <linux/stddef.h> -#include <linux/types.h> -#include <linux/interrupt.h> -#include <linux/spinlock.h> -#include <linux/sched.h> -#include <linux/fs.h> -#include <linux/file.h> -#include <linux/slab.h> -#include <linux/delay.h> -#include <linux/ctype.h> -#include <linux/mm.h> -#include <linux/device.h> -#include <linux/vmalloc.h> -#include <linux/ioport.h> -#include <linux/platform_device.h> -#include <linux/clk.h> -#include <linux/omap-mailbox.h> -#include <linux/pagemap.h> -#include <asm/cacheflush.h> -#include <linux/dma-mapping.h> - -/* TODO -- Remove, once omap-iommu is used */ -#define INT_DSP_MMU_IRQ (28 + NR_IRQS) - -#define PRCM_VDD1 1 - -extern struct platform_device *omap_dspbridge_dev; -extern struct device *bridge; - -#endif diff --git a/drivers/staging/tidspbridge/include/dspbridge/io.h b/drivers/staging/tidspbridge/include/dspbridge/io.h deleted file mode 100644 index 750571856908..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/io.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * io.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * The io module manages IO between CHNL and msg_ctrl. - * - * 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 IO_ -#define IO_ - -#include <dspbridge/cfgdefs.h> -#include <dspbridge/devdefs.h> - -/* IO Objects: */ -struct io_mgr; - -/* IO manager attributes: */ -struct io_attrs { - u8 birq; /* Channel's I/O IRQ number. */ - bool irq_shared; /* TRUE if the IRQ is shareable. */ - u32 word_size; /* DSP Word size. */ - u32 shm_base; /* Physical base address of shared memory. */ - u32 sm_length; /* Size (in bytes) of shared memory. */ -}; - - -/* - * ======== io_create ======== - * Purpose: - * Create an IO manager object, responsible for managing IO between - * CHNL and msg_ctrl. - * Parameters: - * channel_mgr: Location to store a channel manager object on - * output. - * hdev_obj: Handle to a device object. - * mgr_attrts: IO manager attributes. - * mgr_attrts->birq: I/O IRQ number. - * mgr_attrts->irq_shared: TRUE if the IRQ is shareable. - * mgr_attrts->word_size: DSP Word size in equivalent PC bytes.. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * -EIO: Unable to plug channel ISR for configured IRQ. - * -EINVAL: Invalid DSP word size (must be > 0). - * Invalid base address for DSP communications. - * Requires: - * io_man != NULL. - * mgr_attrts != NULL. - * Ensures: - */ -extern int io_create(struct io_mgr **io_man, - struct dev_object *hdev_obj, - const struct io_attrs *mgr_attrts); - -/* - * ======== io_destroy ======== - * Purpose: - * Destroy the IO manager. - * Parameters: - * hio_mgr: IOmanager object. - * Returns: - * 0: Success. - * -EFAULT: hio_mgr was invalid. - * Requires: - * Ensures: - */ -extern int io_destroy(struct io_mgr *hio_mgr); - -#endif /* CHNL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h b/drivers/staging/tidspbridge/include/dspbridge/io_sm.h deleted file mode 100644 index 903ff12b14de..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/io_sm.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * io_sm.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * IO dispatcher for a shared memory channel driver. - * Also, includes macros to simulate shm via port io calls. - * - * 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 IOSM_ -#define IOSM_ - -#include <dspbridge/_chnl_sm.h> -#include <dspbridge/host_os.h> - -#include <dspbridge/io.h> -#include <dspbridge/mbx_sh.h> /* shared mailbox codes */ - -/* Magic code used to determine if DSP signaled exception. */ -#define DEH_BASE MBX_DEH_BASE -#define DEH_LIMIT MBX_DEH_LIMIT - -#define IO_INPUT 0 -#define IO_OUTPUT 1 -#define IO_SERVICE 2 - -#ifdef CONFIG_TIDSPBRIDGE_DVFS -/* The maximum number of OPPs that are supported */ -extern s32 dsp_max_opps; -/* The Vdd1 opp table information */ -extern u32 vdd1_dsp_freq[6][4]; -#endif - -/* - * ======== io_cancel_chnl ======== - * Purpose: - * Cancel IO on a given channel. - * Parameters: - * hio_mgr: IO Manager. - * chnl: Index of channel to cancel IO on. - * Returns: - * Requires: - * Valid hio_mgr. - * Ensures: - */ -extern void io_cancel_chnl(struct io_mgr *hio_mgr, u32 chnl); - -/* - * ======== io_dpc ======== - * Purpose: - * Deferred procedure call for shared memory channel driver ISR. Carries - * out the dispatch of I/O. - * Parameters: - * ref_data: Pointer to reference data registered via a call to - * DPC_Create(). - * Returns: - * Requires: - * Must not block. - * Must not acquire resources. - * All data touched must be locked in memory if running in kernel mode. - * Ensures: - * Non-preemptible (but interruptible). - */ -extern void io_dpc(unsigned long ref_data); - -/* - * ======== io_mbox_msg ======== - * Purpose: - * Main message handler for the shared memory Bridge channel manager. - * Determine if this message is ours, then schedules a DPC to - * dispatch I/O. - * Parameters: - * self: Pointer to its own notifier_block struct. - * len: Length of message. - * msg: Message code received. - * Returns: - * NOTIFY_OK if handled; NOTIFY_BAD otherwise. - */ -int io_mbox_msg(struct notifier_block *self, unsigned long len, void *msg); - -/* - * ======== io_request_chnl ======== - * Purpose: - * Request I/O from the DSP. Sets flags in shared memory, then interrupts - * the DSP. - * Parameters: - * hio_mgr: IO manager handle. - * pchnl: Ptr to the channel requesting I/O. - * io_mode: Mode of channel: {IO_INPUT | IO_OUTPUT}. - * Returns: - * Requires: - * pchnl != NULL - * Ensures: - */ -extern void io_request_chnl(struct io_mgr *io_manager, - struct chnl_object *pchnl, - u8 io_mode, u16 *mbx_val); - -/* - * ======== iosm_schedule ======== - * Purpose: - * Schedule DPC for IO. - * Parameters: - * pio_mgr: Ptr to a I/O manager. - * Returns: - * Requires: - * pchnl != NULL - * Ensures: - */ -extern void iosm_schedule(struct io_mgr *io_manager); - -/* - * ======== io_sh_msetting ======== - * Purpose: - * Sets the shared memory setting - * Parameters: - * hio_mgr: Handle to a I/O manager. - * desc: Shared memory type - * pargs: Ptr to shm setting - * Returns: - * Requires: - * hio_mgr != NULL - * pargs != NULL - * Ensures: - */ -extern int io_sh_msetting(struct io_mgr *hio_mgr, u8 desc, void *pargs); - -/* - * Misc functions for the CHNL_IO shared memory library: - */ - -/* Maximum channel bufsize that can be used. */ -extern u32 io_buf_size(struct io_mgr *hio_mgr); - -#ifdef CONFIG_TIDSPBRIDGE_BACKTRACE -/* - * ========print_dsp_trace_buffer ======== - * Print DSP tracebuffer. - */ -extern int print_dsp_trace_buffer(struct bridge_dev_context - *hbridge_context); - -int dump_dsp_stack(struct bridge_dev_context *bridge_context); - -void dump_dl_modules(struct bridge_dev_context *bridge_context); - -void print_dsp_debug_trace(struct io_mgr *hio_mgr); -#endif - -#endif /* IOSM_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h b/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h deleted file mode 100644 index d4cb3948baba..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/mbx_sh.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * mbx_sh.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Definitions for shared mailbox cmd/data values.(used on both - * the GPP and DSP sides). - * - * Copyright (C) 2008 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. - */ - -/* - * Bridge usage of OMAP mailbox 1 is determined by the "class" of the - * mailbox interrupt's cmd value received. The class value are defined - * as a bit (10 thru 15) being set. - * - * Note: Only 16 bits of each is used. Other 16 bit data reg available. - * - * 16 bit Mbx bit defns: - * - * A). Exception/Error handling (Module DEH) : class = 0. - * - * 15 10 0 - * --------------------------------- - * |0|0|0|0|0|0|x|x|x|x|x|x|x|x|x|x| - * --------------------------------- - * | (class) | (module specific) | - * - * - * B: DSP-DMA link driver channels (DDMA) : class = 1. - * - * 15 10 0 - * --------------------------------- - * |0|0|0|0|0|1|b|b|b|b|b|c|c|c|c|c| - * --------------------------------- - * | (class) | (module specific) | - * - * where b -> buffer index (32 DDMA buffers/chnl max) - * c -> channel Id (32 DDMA chnls max) - * - * - * C: Proc-copy link driver channels (PCPY) : class = 2. - * - * 15 10 0 - * --------------------------------- - * |0|0|0|0|1|0|x|x|x|x|x|x|x|x|x|x| - * --------------------------------- - * | (class) | (module specific) | - * - * - * D: Zero-copy link driver channels (DDZC) : class = 4. - * - * 15 10 0 - * --------------------------------- - * |0|0|0|1|0|0|x|x|x|x|x|c|c|c|c|c| - * --------------------------------- - * | (class) | (module specific) | - * - * where x -> not used - * c -> channel Id (32 ZCPY chnls max) - * - * - * E: Power management : class = 8. - * - * 15 10 0 - * --------------------------------- - * |0|0|1|0|0|0|x|x|x|x|x|c|c|c|c|c| - - * 0010 00xx xxxc cccc - * 0010 00nn pppp qqqq - * nn: - * 00 = reserved - * 01 = pwr state change - * 10 = opp pre-change - * 11 = opp post-change - * - * if nn = pwr state change: - * pppp = don't care - * qqqq: - * 0010 = hibernate - * 0010 0001 0000 0010 - * 0110 = retention - * 0010 0001 0000 0110 - * others reserved - * - * if nn = opp pre-change: - * pppp = current opp - * qqqq = next opp - * - * if nn = opp post-change: - * pppp = prev opp - * qqqq = current opp - * - * --------------------------------- - * | (class) | (module specific) | - * - * where x -> not used - * c -> Power management command - * - */ - -#ifndef _MBX_SH_H -#define _MBX_SH_H - -#define MBX_PCPY_CLASS 0x0800 /* PROC-COPY " */ -#define MBX_PM_CLASS 0x2000 /* Power Management */ -#define MBX_DBG_CLASS 0x4000 /* For debugging purpose */ - -/* - * Exception Handler codes - * Magic code used to determine if DSP signaled exception. - */ -#define MBX_DEH_BASE 0x0 -#define MBX_DEH_USERS_BASE 0x100 /* 256 */ -#define MBX_DEH_LIMIT 0x3FF /* 1023 */ -#define MBX_DEH_RESET 0x101 /* DSP RESET (DEH) */ - -/* - * Link driver command/status codes. - */ - -/* Power Management Commands */ -#define MBX_PM_DSPIDLE (MBX_PM_CLASS + 0x0) -#define MBX_PM_DSPWAKEUP (MBX_PM_CLASS + 0x1) -#define MBX_PM_EMERGENCYSLEEP (MBX_PM_CLASS + 0x2) -#define MBX_PM_SETPOINT_PRENOTIFY (MBX_PM_CLASS + 0x6) -#define MBX_PM_SETPOINT_POSTNOTIFY (MBX_PM_CLASS + 0x7) -#define MBX_PM_DSPRETENTION (MBX_PM_CLASS + 0x8) -#define MBX_PM_DSPHIBERNATE (MBX_PM_CLASS + 0x9) -#define MBX_PM_HIBERNATE_EN (MBX_PM_CLASS + 0xA) -#define MBX_PM_OPP_REQ (MBX_PM_CLASS + 0xB) - -/* Bridge Debug Commands */ -#define MBX_DBG_SYSPRINTF (MBX_DBG_CLASS + 0x0) - -#endif /* _MBX_SH_H */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/memdefs.h b/drivers/staging/tidspbridge/include/dspbridge/memdefs.h deleted file mode 100644 index 78d2c5d0045b..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/memdefs.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * memdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global MEM constants and types, shared between Bridge driver and DSP API. - * - * Copyright (C) 2008 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 MEMDEFS_ -#define MEMDEFS_ - -/* - * MEM_VIRTUALSEGID is used by Node & Strm to access virtual address space in - * the correct client process context. - */ -#define MEM_SETVIRTUALSEGID 0x10000000 -#define MEM_GETVIRTUALSEGID 0x20000000 -#define MEM_MASKVIRTUALSEGID (MEM_SETVIRTUALSEGID | MEM_GETVIRTUALSEGID) - -#endif /* MEMDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/mgr.h b/drivers/staging/tidspbridge/include/dspbridge/mgr.h deleted file mode 100644 index 47b0318430e1..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/mgr.h +++ /dev/null @@ -1,205 +0,0 @@ -/* - * mgr.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * This is the DSP API RM module interface. - * - * 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 MGR_ -#define MGR_ - -#include <dspbridge/mgrpriv.h> - -#define MAX_EVENTS 32 - -/* - * ======== mgr_wait_for_bridge_events ======== - * Purpose: - * Block on any Bridge event(s) - * Parameters: - * anotifications : array of pointers to notification objects. - * count : number of elements in above array - * pu_index : index of signaled event object - * utimeout : timeout interval in milliseocnds - * Returns: - * 0 : Success. - * -ETIME : Wait timed out. *pu_index is undetermined. - * Details: - */ - -int mgr_wait_for_bridge_events(struct dsp_notification - **anotifications, - u32 count, u32 *pu_index, - u32 utimeout); - -/* - * ======== mgr_create ======== - * Purpose: - * Creates the Manager Object. This is done during the driver loading. - * There is only one Manager Object in the DSP/BIOS Bridge. - * Parameters: - * mgr_obj: Location to store created MGR Object handle. - * dev_node_obj: Device object as known to the system. - * Returns: - * 0: Success - * -ENOMEM: Failed to Create the Object - * -EPERM: General Failure - * Requires: - * MGR Initialized (refs > 0 ) - * mgr_obj != NULL. - * Ensures: - * 0: *mgr_obj is a valid MGR interface to the device. - * MGR Object stores the DCD Manager Handle. - * MGR Object stored in the Regsitry. - * !0: MGR Object not created - * Details: - * DCD Dll is loaded and MGR Object stores the handle of the DLL. - */ -extern int mgr_create(struct mgr_object **mgr_obj, - struct cfg_devnode *dev_node_obj); - -/* - * ======== mgr_destroy ======== - * Purpose: - * Destroys the MGR object. Called upon driver unloading. - * Parameters: - * hmgr_obj: Handle to Manager object . - * Returns: - * 0: Success. - * DCD Manager freed; MGR Object destroyed; - * MGR Object deleted from the Registry. - * -EPERM: Failed to destroy MGR Object - * Requires: - * MGR Initialized (refs > 0 ) - * hmgr_obj is a valid MGR handle . - * Ensures: - * 0: MGR Object destroyed and hmgr_obj is Invalid MGR - * Handle. - */ -extern int mgr_destroy(struct mgr_object *hmgr_obj); - -/* - * ======== mgr_enum_node_info ======== - * Purpose: - * Enumerate and get configuration information about nodes configured - * in the node database. - * Parameters: - * node_id: The node index (base 0). - * pndb_props: Ptr to the dsp_ndbprops structure for output. - * undb_props_size: Size of the dsp_ndbprops structure. - * pu_num_nodes: Location where the number of nodes configured - * in the database will be returned. - * Returns: - * 0: Success. - * -EINVAL: Parameter node_id is > than the number of nodes. - * configutred in the system - * -EIDRM: During Enumeration there has been a change in - * the number of nodes configured or in the - * the properties of the enumerated nodes. - * -EPERM: Failed to querry the Node Data Base - * Requires: - * pNDBPROPS is not null - * undb_props_size >= sizeof(dsp_ndbprops) - * pu_num_nodes is not null - * MGR Initialized (refs > 0 ) - * Ensures: - * SUCCESS on successful retreival of data and *pu_num_nodes > 0 OR - * DSP_FAILED && *pu_num_nodes == 0. - * Details: - */ -extern int mgr_enum_node_info(u32 node_id, - struct dsp_ndbprops *pndb_props, - u32 undb_props_size, - u32 *pu_num_nodes); - -/* - * ======== mgr_enum_processor_info ======== - * Purpose: - * Enumerate and get configuration information about available DSP - * processors - * Parameters: - * processor_id: The processor index (zero-based). - * processor_info: Ptr to the dsp_processorinfo structure . - * processor_info_size: Size of dsp_processorinfo structure. - * pu_num_procs: Location where the number of DSPs configured - * in the database will be returned - * Returns: - * 0: Success. - * -EINVAL: Parameter processor_id is > than the number of - * DSP Processors in the system. - * -EPERM: Failed to querry the Node Data Base - * Requires: - * processor_info is not null - * pu_num_procs is not null - * processor_info_size >= sizeof(dsp_processorinfo) - * MGR Initialized (refs > 0 ) - * Ensures: - * SUCCESS on successful retreival of data and *pu_num_procs > 0 OR - * DSP_FAILED && *pu_num_procs == 0. - * Details: - */ -extern int mgr_enum_processor_info(u32 processor_id, - struct dsp_processorinfo - *processor_info, - u32 processor_info_size, - u8 *pu_num_procs); -/* - * ======== mgr_exit ======== - * Purpose: - * Decrement reference count, and free resources when reference count is - * 0. - * Parameters: - * Returns: - * Requires: - * MGR is initialized. - * Ensures: - * When reference count == 0, MGR's private resources are freed. - */ -extern void mgr_exit(void); - -/* - * ======== mgr_get_dcd_handle ======== - * Purpose: - * Retrieves the MGR handle. Accessor Function - * Parameters: - * mgr_handle: Handle to the Manager Object - * dcd_handle: Ptr to receive the DCD Handle. - * Returns: - * 0: Success - * -EPERM: Failure to get the Handle - * Requires: - * MGR is initialized. - * dcd_handle != NULL - * Ensures: - * 0 and *dcd_handle != NULL || - * -EPERM and *dcd_handle == NULL - */ -extern int mgr_get_dcd_handle(struct mgr_object - *mgr_handle, u32 *dcd_handle); - -/* - * ======== mgr_init ======== - * Purpose: - * Initialize MGR's private state, keeping a reference count on each - * call. Initializes the DCD. - * Parameters: - * Returns: - * TRUE if initialized; FALSE if error occurred. - * Requires: - * Ensures: - * TRUE: A requirement for the other public MGR functions. - */ -extern bool mgr_init(void); - -#endif /* MGR_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/mgrpriv.h b/drivers/staging/tidspbridge/include/dspbridge/mgrpriv.h deleted file mode 100644 index 3a4e337c040d..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/mgrpriv.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * mgrpriv.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global MGR constants and types, shared by PROC, MGR, and DSP API. - * - * Copyright (C) 2008 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 MGRPRIV_ -#define MGRPRIV_ - -/* - * OMAP1510 specific - */ -#define MGR_MAXTLBENTRIES 32 - -/* RM MGR Object */ -struct mgr_object; - -struct mgr_tlbentry { - u32 dsp_virt; /* DSP virtual address */ - u32 gpp_phys; /* GPP physical address */ -}; - -/* - * The DSP_PROCESSOREXTINFO structure describes additional extended - * capabilities of a DSP processor not exposed to user. - */ -struct mgr_processorextinfo { - struct dsp_processorinfo ty_basic; /* user processor info */ - /* private dsp mmu entries */ - struct mgr_tlbentry ty_tlb[MGR_MAXTLBENTRIES]; -}; - -#endif /* MGRPRIV_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/msg.h b/drivers/staging/tidspbridge/include/dspbridge/msg.h deleted file mode 100644 index 2c8712c933fc..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/msg.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * msg.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge msg_ctrl Module. - * - * 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 MSG_ -#define MSG_ - -#include <dspbridge/devdefs.h> -#include <dspbridge/msgdefs.h> - -/* - * ======== msg_create ======== - * Purpose: - * Create an object to manage message queues. Only one of these objects - * can exist per device object. The msg_ctrl manager must be created before - * the IO Manager. - * Parameters: - * msg_man: Location to store msg_ctrl manager handle on output. - * hdev_obj: The device object. - * msg_callback: Called whenever an RMS_EXIT message is received. - * Returns: - * Requires: - * msg_man != NULL. - * hdev_obj != NULL. - * msg_callback != NULL. - * Ensures: - */ -extern int msg_create(struct msg_mgr **msg_man, - struct dev_object *hdev_obj, - msg_onexit msg_callback); - -/* - * ======== msg_delete ======== - * Purpose: - * Delete a msg_ctrl manager allocated in msg_create(). - * Parameters: - * hmsg_mgr: Handle returned from msg_create(). - * Returns: - * Requires: - * Valid hmsg_mgr. - * Ensures: - */ -extern void msg_delete(struct msg_mgr *hmsg_mgr); - -#endif /* MSG_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/msgdefs.h b/drivers/staging/tidspbridge/include/dspbridge/msgdefs.h deleted file mode 100644 index 80a3fa1a8a33..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/msgdefs.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * msgdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global msg_ctrl constants and types. - * - * 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 MSGDEFS_ -#define MSGDEFS_ - -/* msg_ctrl Objects: */ -struct msg_mgr; -struct msg_queue; - -/* Function prototype for callback to be called on RMS_EXIT message received */ -typedef void (*msg_onexit) (void *h, s32 node_status); - -#endif /* MSGDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/nldr.h b/drivers/staging/tidspbridge/include/dspbridge/nldr.h deleted file mode 100644 index c5e48ca6c548..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/nldr.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * nldr.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge dynamic loader interface. - * - * 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. - */ - -#include <dspbridge/dbdefs.h> -#include <dspbridge/dbdcddef.h> -#include <dspbridge/dev.h> -#include <dspbridge/rmm.h> -#include <dspbridge/nldrdefs.h> - -#ifndef NLDR_ -#define NLDR_ - -extern int nldr_allocate(struct nldr_object *nldr_obj, - void *priv_ref, const struct dcd_nodeprops - *node_props, - struct nldr_nodeobject **nldr_nodeobj, - bool *pf_phase_split); - -extern int nldr_create(struct nldr_object **nldr, - struct dev_object *hdev_obj, - const struct nldr_attrs *pattrs); - -extern void nldr_delete(struct nldr_object *nldr_obj); - -extern int nldr_get_fxn_addr(struct nldr_nodeobject *nldr_node_obj, - char *str_fxn, u32 * addr); - -extern int nldr_get_rmm_manager(struct nldr_object *nldr, - struct rmm_target_obj **rmm_mgr); - -extern int nldr_load(struct nldr_nodeobject *nldr_node_obj, - enum nldr_phase phase); -extern int nldr_unload(struct nldr_nodeobject *nldr_node_obj, - enum nldr_phase phase); -#ifdef CONFIG_TIDSPBRIDGE_BACKTRACE -int nldr_find_addr(struct nldr_nodeobject *nldr_node, u32 sym_addr, - u32 offset_range, void *offset_output, char *sym_name); -#endif - -#endif /* NLDR_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/nldrdefs.h b/drivers/staging/tidspbridge/include/dspbridge/nldrdefs.h deleted file mode 100644 index 7e3c7f58b496..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/nldrdefs.h +++ /dev/null @@ -1,259 +0,0 @@ -/* - * nldrdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global Dynamic + static/overlay Node loader (NLDR) constants and types. - * - * Copyright (C) 2008 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 NLDRDEFS_ -#define NLDRDEFS_ - -#include <dspbridge/dbdcddef.h> -#include <dspbridge/devdefs.h> - -#define NLDR_MAXPATHLENGTH 255 -/* NLDR Objects: */ -struct nldr_object; -struct nldr_nodeobject; - -/* - * ======== nldr_loadtype ======== - * Load types for a node. Must match values in node.h55. - */ -enum nldr_loadtype { - NLDR_STATICLOAD, /* Linked in base image, not overlay */ - NLDR_DYNAMICLOAD, /* Dynamically loaded node */ - NLDR_OVLYLOAD /* Linked in base image, overlay node */ -}; - -/* - * ======== nldr_ovlyfxn ======== - * Causes code or data to be copied from load address to run address. This - * is the "cod_writefxn" that gets passed to the DBLL_Library and is used as - * the ZL write function. - * - * Parameters: - * priv_ref: Handle to identify the node. - * dsp_run_addr: Run address of code or data. - * dsp_load_addr: Load address of code or data. - * ul_num_bytes: Number of (GPP) bytes to copy. - * mem_space: RMS_CODE or RMS_DATA. - * Returns: - * ul_num_bytes: Success. - * 0: Failure. - * Requires: - * Ensures: - */ -typedef u32(*nldr_ovlyfxn) (void *priv_ref, u32 dsp_run_addr, - u32 dsp_load_addr, u32 ul_num_bytes, u32 mem_space); - -/* - * ======== nldr_writefxn ======== - * Write memory function. Used for dynamic load writes. - * Parameters: - * priv_ref: Handle to identify the node. - * dsp_add: Address of code or data. - * pbuf: Code or data to be written - * ul_num_bytes: Number of (GPP) bytes to write. - * mem_space: DBLL_DATA or DBLL_CODE. - * Returns: - * ul_num_bytes: Success. - * 0: Failure. - * Requires: - * Ensures: - */ -typedef u32(*nldr_writefxn) (void *priv_ref, - u32 dsp_add, void *pbuf, - u32 ul_num_bytes, u32 mem_space); - -/* - * ======== nldr_attrs ======== - * Attributes passed to nldr_create function. - */ -struct nldr_attrs { - nldr_ovlyfxn ovly; - nldr_writefxn write; - u16 dsp_word_size; - u16 dsp_mau_size; -}; - -/* - * ======== nldr_phase ======== - * Indicates node create, delete, or execute phase function. - */ -enum nldr_phase { - NLDR_CREATE, - NLDR_DELETE, - NLDR_EXECUTE, - NLDR_NOPHASE -}; - -/* - * Typedefs of loader functions imported from a DLL, or defined in a - * function table. - */ - -/* - * ======== nldr_allocate ======== - * Allocate resources to manage the loading of a node on the DSP. - * - * Parameters: - * nldr_obj: Handle of loader that will load the node. - * priv_ref: Handle to identify the node. - * node_props: Pointer to a dcd_nodeprops for the node. - * nldr_nodeobj: Location to store node handle on output. This handle - * will be passed to nldr_load/nldr_unload. - * pf_phase_split: pointer to int variable referenced in node.c - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory on GPP. - * Requires: - * Valid nldr_obj. - * node_props != NULL. - * nldr_nodeobj != NULL. - * Ensures: - * 0: IsValidNode(*nldr_nodeobj). - * error: *nldr_nodeobj == NULL. - */ -typedef int(*nldr_allocatefxn) (struct nldr_object *nldr_obj, - void *priv_ref, - const struct dcd_nodeprops - * node_props, - struct nldr_nodeobject - **nldr_nodeobj, - bool *pf_phase_split); - -/* - * ======== nldr_create ======== - * Create a loader object. This object handles the loading and unloading of - * create, delete, and execute phase functions of nodes on the DSP target. - * - * Parameters: - * nldr: Location to store loader handle on output. - * hdev_obj: Device for this processor. - * pattrs: Loader attributes. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * Requires: - * nldr != NULL. - * hdev_obj != NULL. - * pattrs != NULL. - * Ensures: - * 0: Valid *nldr. - * error: *nldr == NULL. - */ -typedef int(*nldr_createfxn) (struct nldr_object **nldr, - struct dev_object *hdev_obj, - const struct nldr_attrs *pattrs); - -/* - * ======== nldr_delete ======== - * Delete the NLDR loader. - * - * Parameters: - * nldr_obj: Node manager object. - * Returns: - * Requires: - * Valid nldr_obj. - * Ensures: - * nldr_obj invalid - */ -typedef void (*nldr_deletefxn) (struct nldr_object *nldr_obj); - -/* - * ======== NLDR_Free ======== - * Free resources allocated in nldr_allocate. - * - * Parameters: - * nldr_node_obj: Handle returned from nldr_allocate(). - * Returns: - * Requires: - * Valid nldr_node_obj. - * Ensures: - */ -typedef void (*nldr_freefxn) (struct nldr_nodeobject *nldr_node_obj); - -/* - * ======== nldr_get_fxn_addr ======== - * Get address of create, delete, or execute phase function of a node on - * the DSP. - * - * Parameters: - * nldr_node_obj: Handle returned from nldr_allocate(). - * str_fxn: Name of function. - * addr: Location to store function address. - * Returns: - * 0: Success. - * -ESPIPE: Address of function not found. - * Requires: - * Valid nldr_node_obj. - * addr != NULL; - * str_fxn != NULL; - * Ensures: - */ -typedef int(*nldr_getfxnaddrfxn) (struct nldr_nodeobject - * nldr_node_obj, - char *str_fxn, u32 * addr); - -/* - * ======== nldr_load ======== - * Load create, delete, or execute phase function of a node on the DSP. - * - * Parameters: - * nldr_node_obj: Handle returned from nldr_allocate(). - * phase: Type of function to load (create, delete, or execute). - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory on GPP. - * -ENXIO: Can't overlay phase because overlay memory - * is already in use. - * -EILSEQ: Failure in dynamic loader library. - * Requires: - * Valid nldr_node_obj. - * Ensures: - */ -typedef int(*nldr_loadfxn) (struct nldr_nodeobject *nldr_node_obj, - enum nldr_phase phase); - -/* - * ======== nldr_unload ======== - * Unload create, delete, or execute phase function of a node on the DSP. - * - * Parameters: - * nldr_node_obj: Handle returned from nldr_allocate(). - * phase: Node function to unload (create, delete, or execute). - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory on GPP. - * Requires: - * Valid nldr_node_obj. - * Ensures: - */ -typedef int(*nldr_unloadfxn) (struct nldr_nodeobject *nldr_node_obj, - enum nldr_phase phase); - -/* - * ======== node_ldr_fxns ======== - */ -struct node_ldr_fxns { - nldr_allocatefxn allocate; - nldr_createfxn create; - nldr_deletefxn delete; - nldr_getfxnaddrfxn get_fxn_addr; - nldr_loadfxn load; - nldr_unloadfxn unload; -}; - -#endif /* NLDRDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/node.h b/drivers/staging/tidspbridge/include/dspbridge/node.h deleted file mode 100644 index 68ed74a86c95..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/node.h +++ /dev/null @@ -1,524 +0,0 @@ -/* - * node.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge Node Manager. - * - * 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 NODE_ -#define NODE_ - -#include <dspbridge/procpriv.h> - -#include <dspbridge/nodedefs.h> -#include <dspbridge/disp.h> -#include <dspbridge/nldrdefs.h> -#include <dspbridge/drv.h> - -/* - * ======== node_allocate ======== - * Purpose: - * Allocate GPP resources to manage a node on the DSP. - * Parameters: - * hprocessor: Handle of processor that is allocating the node. - * node_uuid: Pointer to a dsp_uuid for the node. - * pargs: Optional arguments to be passed to the node. - * attr_in: Optional pointer to node attributes (priority, - * timeout...) - * noderes: Location to store node resource info. - * Returns: - * 0: Success. - * -ENOMEM: Insufficient memory on GPP. - * -ENOKEY: Node UUID has not been registered. - * -ESPIPE: iAlg functions not found for a DAIS node. - * -EDOM: attr_in != NULL and attr_in->prio out of - * range. - * -EPERM: A failure occurred, unable to allocate node. - * -EBADR: Proccessor is not in the running state. - * Requires: - * hprocessor != NULL. - * node_uuid != NULL. - * noderes != NULL. - * Ensures: - * 0: IsValidNode(*ph_node). - * error: *noderes == NULL. - */ -extern int node_allocate(struct proc_object *hprocessor, - const struct dsp_uuid *node_uuid, - const struct dsp_cbdata - *pargs, const struct dsp_nodeattrin - *attr_in, - struct node_res_object **noderes, - struct process_context *pr_ctxt); - -/* - * ======== node_alloc_msg_buf ======== - * Purpose: - * Allocate and Prepare a buffer whose descriptor will be passed to a - * Node within a (dsp_msg)message - * Parameters: - * hnode: The node handle. - * usize: The size of the buffer to be allocated. - * pattr: Pointer to a dsp_bufferattr structure. - * pbuffer: Location to store the address of the allocated - * buffer on output. - * Returns: - * 0: Success. - * -EFAULT: Invalid node handle. - * -ENOMEM: Insufficent memory. - * -EPERM: General Failure. - * -EINVAL: Invalid Size. - * Requires: - * pbuffer != NULL. - * Ensures: - */ -extern int node_alloc_msg_buf(struct node_object *hnode, - u32 usize, struct dsp_bufferattr - *pattr, u8 **pbuffer); - -/* - * ======== node_change_priority ======== - * Purpose: - * Change the priority of an allocated node. - * Parameters: - * hnode: Node handle returned from node_allocate. - * prio: New priority level to set node's priority to. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EDOM: prio is out of range. - * -EPERM: The specified node is not a task node. - * Unable to change node's runtime priority level. - * -EBADR: Node is not in the NODE_ALLOCATED, NODE_PAUSED, - * or NODE_RUNNING state. - * -ETIME: A timeout occurred before the DSP responded. - * Requires: - * Ensures: - * 0 && (Node's current priority == prio) - */ -extern int node_change_priority(struct node_object *hnode, s32 prio); - -/* - * ======== node_connect ======== - * Purpose: - * Connect two nodes on the DSP, or a node on the DSP to the GPP. In the - * case that the connection is being made between a node on the DSP and - * the GPP, one of the node handles (either node1 or node2) must be - * the constant NODE_HGPPNODE. - * Parameters: - * node1: Handle of first node to connect to second node. If - * this is a connection from the GPP to node2, node1 - * must be the constant NODE_HGPPNODE. Otherwise, node1 - * must be a node handle returned from a successful call - * to Node_Allocate(). - * node2: Handle of second node. Must be either NODE_HGPPNODE - * if this is a connection from DSP node to GPP, or a - * node handle returned from a successful call to - * node_allocate(). - * stream1: Output stream index on first node, to be connected - * to second node's input stream. Value must range from - * 0 <= stream1 < number of output streams. - * stream2: Input stream index on second node. Value must range - * from 0 <= stream2 < number of input streams. - * pattrs: Stream attributes (NULL ==> use defaults). - * conn_param: A pointer to a dsp_cbdata structure that defines - * connection parameter for device nodes to pass to DSP - * side. - * If the value of this parameter is NULL, then this API - * behaves like DSPNode_Connect. This parameter will have - * length of the string and the null terminated string in - * dsp_cbdata struct. This can be extended in future tp - * pass binary data. - * Returns: - * 0: Success. - * -EFAULT: Invalid node1 or node2. - * -ENOMEM: Insufficient host memory. - * -EINVAL: A stream index parameter is invalid. - * -EISCONN: A connection already exists for one of the - * indices stream1 or stream2. - * -EBADR: Either node1 or node2 is not in the - * NODE_ALLOCATED state. - * -ECONNREFUSED: No more connections available. - * -EPERM: Attempt to make an illegal connection (eg, - * Device node to device node, or device node to - * GPP), the two nodes are on different DSPs. - * Requires: - * Ensures: - */ -extern int node_connect(struct node_object *node1, - u32 stream1, - struct node_object *node2, - u32 stream2, - struct dsp_strmattr *pattrs, - struct dsp_cbdata - *conn_param); - -/* - * ======== node_create ======== - * Purpose: - * Create a node on the DSP by remotely calling the node's create - * function. If necessary, load code that contains the node's create - * function. - * Parameters: - * hnode: Node handle returned from node_allocate(). - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -ESPIPE: Create function not found in the COFF file. - * -EBADR: Node is not in the NODE_ALLOCATED state. - * -ENOMEM: Memory allocation failure on the DSP. - * -ETIME: A timeout occurred before the DSP responded. - * -EPERM: A failure occurred, unable to create node. - * Requires: - * Ensures: - */ -extern int node_create(struct node_object *hnode); - -/* - * ======== node_create_mgr ======== - * Purpose: - * Create a NODE Manager object. This object handles the creation, - * deletion, and execution of nodes on the DSP target. The NODE Manager - * also maintains a pipe map of used and available node connections. - * Each DEV object should have exactly one NODE Manager object. - * - * Parameters: - * node_man: Location to store node manager handle on output. - * hdev_obj: Device for this processor. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * -EPERM: General failure. - * Requires: - * node_man != NULL. - * hdev_obj != NULL. - * Ensures: - * 0: Valide *node_man. - * error: *node_man == NULL. - */ -extern int node_create_mgr(struct node_mgr **node_man, - struct dev_object *hdev_obj); - -/* - * ======== node_delete ======== - * Purpose: - * Delete resources allocated in node_allocate(). If the node was - * created, delete the node on the DSP by remotely calling the node's - * delete function. Loads the node's delete function if necessary. - * GPP side resources are freed after node's delete function returns. - * Parameters: - * noderes: Node resource info handle returned from - * node_allocate(). - * pr_ctxt: Pointer to process context data. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -ETIME: A timeout occurred before the DSP responded. - * -EPERM: A failure occurred in deleting the node. - * -ESPIPE: Delete function not found in the COFF file. - * Requires: - * Ensures: - * 0: hnode is invalid. - */ -extern int node_delete(struct node_res_object *noderes, - struct process_context *pr_ctxt); - -/* - * ======== node_delete_mgr ======== - * Purpose: - * Delete the NODE Manager. - * Parameters: - * hnode_mgr: Node manager object. - * Returns: - * 0: Success. - * Requires: - * Valid hnode_mgr. - * Ensures: - */ -extern int node_delete_mgr(struct node_mgr *hnode_mgr); - -/* - * ======== node_enum_nodes ======== - * Purpose: - * Enumerate the nodes currently allocated for the DSP. - * Parameters: - * hnode_mgr: Node manager returned from node_create_mgr(). - * node_tab: Array to copy node handles into. - * node_tab_size: Number of handles that can be written to node_tab. - * pu_num_nodes: Location where number of node handles written to - * node_tab will be written. - * pu_allocated: Location to write total number of allocated nodes. - * Returns: - * 0: Success. - * -EINVAL: node_tab is too small to hold all node handles. - * Requires: - * Valid hnode_mgr. - * node_tab != NULL || node_tab_size == 0. - * pu_num_nodes != NULL. - * pu_allocated != NULL. - * Ensures: - * - (-EINVAL && *pu_num_nodes == 0) - * - || (0 && *pu_num_nodes <= node_tab_size) && - * (*pu_allocated == *pu_num_nodes) - */ -extern int node_enum_nodes(struct node_mgr *hnode_mgr, - void **node_tab, - u32 node_tab_size, - u32 *pu_num_nodes, - u32 *pu_allocated); - -/* - * ======== node_free_msg_buf ======== - * Purpose: - * Free a message buffer previously allocated with node_alloc_msg_buf. - * Parameters: - * hnode: The node handle. - * pbuffer: (Address) Buffer allocated by node_alloc_msg_buf. - * pattr: Same buffer attributes passed to node_alloc_msg_buf. - * Returns: - * 0: Success. - * -EFAULT: Invalid node handle. - * -EPERM: Failure to free the buffer. - * Requires: - * pbuffer != NULL. - * Ensures: - */ -extern int node_free_msg_buf(struct node_object *hnode, - u8 *pbuffer, - struct dsp_bufferattr - *pattr); - -/* - * ======== node_get_attr ======== - * Purpose: - * Copy the current attributes of the specified node into a dsp_nodeattr - * structure. - * Parameters: - * hnode: Node object allocated from node_allocate(). - * pattr: Pointer to dsp_nodeattr structure to copy node's - * attributes. - * attr_size: Size of pattr. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * Requires: - * pattr != NULL. - * Ensures: - * 0: *pattrs contains the node's current attributes. - */ -extern int node_get_attr(struct node_object *hnode, - struct dsp_nodeattr *pattr, u32 attr_size); - -/* - * ======== node_get_message ======== - * Purpose: - * Retrieve a message from a node on the DSP. The node must be either a - * message node, task node, or XDAIS socket node. - * If a message is not available, this function will block until a - * message is available, or the node's timeout value is reached. - * Parameters: - * hnode: Node handle returned from node_allocate(). - * message: Pointer to dsp_msg structure to copy the - * message into. - * utimeout: Timeout in milliseconds to wait for message. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EPERM: Cannot retrieve messages from this type of node. - * Error occurred while trying to retrieve a message. - * -ETIME: Timeout occurred and no message is available. - * Requires: - * message != NULL. - * Ensures: - */ -extern int node_get_message(struct node_object *hnode, - struct dsp_msg *message, u32 utimeout); - -/* - * ======== node_get_nldr_obj ======== - * Purpose: - * Retrieve the Nldr manager - * Parameters: - * hnode_mgr: Node Manager - * nldr_ovlyobj: Pointer to a Nldr manager handle - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * Ensures: - */ -extern int node_get_nldr_obj(struct node_mgr *hnode_mgr, - struct nldr_object **nldr_ovlyobj); - -/* - * ======== node_on_exit ======== - * Purpose: - * Gets called when RMS_EXIT is received for a node. PROC needs to pass - * this function as a parameter to msg_create(). This function then gets - * called by the Bridge driver when an exit message for a node is received. - * Parameters: - * hnode: Handle of the node that the exit message is for. - * node_status: Return status of the node's execute phase. - * Returns: - * Ensures: - */ -void node_on_exit(struct node_object *hnode, s32 node_status); - -/* - * ======== node_pause ======== - * Purpose: - * Suspend execution of a node currently running on the DSP. - * Parameters: - * hnode: Node object representing a node currently - * running on the DSP. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EPERM: Node is not a task or socket node. - * Failed to pause node. - * -ETIME: A timeout occurred before the DSP responded. - * DSP_EWRONGSTSATE: Node is not in NODE_RUNNING state. - * Requires: - * Ensures: - */ -extern int node_pause(struct node_object *hnode); - -/* - * ======== node_put_message ======== - * Purpose: - * Send a message to a message node, task node, or XDAIS socket node. - * This function will block until the message stream can accommodate - * the message, or a timeout occurs. The message will be copied, so Msg - * can be re-used immediately after return. - * Parameters: - * hnode: Node handle returned by node_allocate(). - * pmsg: Location of message to be sent to the node. - * utimeout: Timeout in msecs to wait. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EPERM: Messages can't be sent to this type of node. - * Unable to send message. - * -ETIME: Timeout occurred before message could be set. - * -EBADR: Node is in invalid state for sending messages. - * Requires: - * pmsg != NULL. - * Ensures: - */ -extern int node_put_message(struct node_object *hnode, - const struct dsp_msg *pmsg, u32 utimeout); - -/* - * ======== node_register_notify ======== - * Purpose: - * Register to be notified on specific events for this node. - * Parameters: - * hnode: Node handle returned by node_allocate(). - * event_mask: Mask of types of events to be notified about. - * notify_type: Type of notification to be sent. - * hnotification: Handle to be used for notification. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -ENOMEM: Insufficient memory on GPP. - * -EINVAL: event_mask is invalid. - * -ENOSYS: Notification type specified by notify_type is not - * supported. - * Requires: - * hnotification != NULL. - * Ensures: - */ -extern int node_register_notify(struct node_object *hnode, - u32 event_mask, u32 notify_type, - struct dsp_notification - *hnotification); - -/* - * ======== node_run ======== - * Purpose: - * Start execution of a node's execute phase, or resume execution of - * a node that has been suspended (via node_pause()) on the DSP. Load - * the node's execute function if necessary. - * Parameters: - * hnode: Node object representing a node currently - * running on the DSP. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EPERM: hnode doesn't represent a message, task or dais socket node. - * Unable to start or resume execution. - * -ETIME: A timeout occurred before the DSP responded. - * DSP_EWRONGSTSATE: Node is not in NODE_PAUSED or NODE_CREATED state. - * -ESPIPE: Execute function not found in the COFF file. - * Requires: - * Ensures: - */ -extern int node_run(struct node_object *hnode); - -/* - * ======== node_terminate ======== - * Purpose: - * Signal a node running on the DSP that it should exit its execute - * phase function. - * Parameters: - * hnode: Node object representing a node currently - * running on the DSP. - * pstatus: Location to store execute-phase function return - * value. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -ETIME: A timeout occurred before the DSP responded. - * -EPERM: Type of node specified cannot be terminated. - * Unable to terminate the node. - * -EBADR: Operation not valid for the current node state. - * Requires: - * pstatus != NULL. - * Ensures: - */ -extern int node_terminate(struct node_object *hnode, - int *pstatus); - -/* - * ======== node_get_uuid_props ======== - * Purpose: - * Fetch Node properties given the UUID - * Parameters: - * - */ -extern int node_get_uuid_props(void *hprocessor, - const struct dsp_uuid *node_uuid, - struct dsp_ndbprops - *node_props); - -#ifdef CONFIG_TIDSPBRIDGE_BACKTRACE -/** - * node_find_addr() - Find the closest symbol to the given address. - * - * @node_mgr: Node manager handle - * @sym_addr: Given address to find the closest symbol - * @offset_range: offset range to look fo the closest symbol - * @sym_addr_output: Symbol Output address - * @sym_name: String with the symbol name of the closest symbol - * - * This function finds the closest symbol to the address where a MMU - * Fault occurred on the DSP side. - */ -int node_find_addr(struct node_mgr *node_mgr, u32 sym_addr, - u32 offset_range, void *sym_addr_output, - char *sym_name); - -enum node_state node_get_state(void *hnode); -#endif - -#endif /* NODE_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/nodedefs.h b/drivers/staging/tidspbridge/include/dspbridge/nodedefs.h deleted file mode 100644 index fb9623d8a79a..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/nodedefs.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * nodedefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global NODE constants and types, shared by PROCESSOR, NODE, and DISP. - * - * 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 NODEDEFS_ -#define NODEDEFS_ - -#define NODE_SUSPENDEDPRI -1 - -/* NODE Objects: */ -struct node_mgr; -struct node_object; - -#endif /* NODEDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/nodepriv.h b/drivers/staging/tidspbridge/include/dspbridge/nodepriv.h deleted file mode 100644 index d5b54bb81e8e..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/nodepriv.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * nodepriv.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Private node header shared by NODE and DISP. - * - * 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 NODEPRIV_ -#define NODEPRIV_ - -#include <dspbridge/strmdefs.h> -#include <dspbridge/nodedefs.h> -#include <dspbridge/nldrdefs.h> - -/* DSP address of node environment structure */ -typedef u32 nodeenv; - -/* - * Node create structures - */ - -/* Message node */ -struct node_msgargs { - u32 max_msgs; /* Max # of simultaneous messages for node */ - u32 seg_id; /* Segment for allocating message buffers */ - u32 notify_type; /* Notify type (SEM_post, SWI_post, etc.) */ - u32 arg_length; /* Length in 32-bit words of arg data block */ - u8 *pdata; /* Argument data for node */ -}; - -struct node_strmdef { - u32 buf_size; /* Size of buffers for SIO stream */ - u32 num_bufs; /* max # of buffers in SIO stream at once */ - u32 seg_id; /* Memory segment id to allocate buffers */ - u32 timeout; /* Timeout for blocking SIO calls */ - u32 buf_alignment; /* Buffer alignment */ - char *sz_device; /* Device name for stream */ -}; - -/* Task node */ -struct node_taskargs { - struct node_msgargs node_msg_args; - s32 prio; - u32 stack_size; - u32 sys_stack_size; - u32 stack_seg; - u32 dsp_heap_res_addr; /* DSP virtual heap address */ - u32 dsp_heap_addr; /* DSP virtual heap address */ - u32 heap_size; /* Heap size */ - u32 gpp_heap_addr; /* GPP virtual heap address */ - u32 profile_id; /* Profile ID */ - u32 num_inputs; - u32 num_outputs; - u32 dais_arg; /* Address of iAlg object */ - struct node_strmdef *strm_in_def; - struct node_strmdef *strm_out_def; -}; - -/* - * ======== node_createargs ======== - */ -struct node_createargs { - union { - struct node_msgargs node_msg_args; - struct node_taskargs task_arg_obj; - } asa; -}; - -/* - * ======== node_get_channel_id ======== - * Purpose: - * Get the channel index reserved for a stream connection between the - * host and a node. This index is reserved when node_connect() is called - * to connect the node with the host. This index should be passed to - * the CHNL_Open function when the stream is actually opened. - * Parameters: - * hnode: Node object allocated from node_allocate(). - * dir: Input (DSP_TONODE) or output (DSP_FROMNODE). - * index: Stream index. - * chan_id: Location to store channel index. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EPERM: Not a task or DAIS socket node. - * -EINVAL: The node's stream corresponding to index and dir - * is not a stream to or from the host. - * Requires: - * Valid dir. - * chan_id != NULL. - * Ensures: - */ -extern int node_get_channel_id(struct node_object *hnode, - u32 dir, u32 index, u32 *chan_id); - -/* - * ======== node_get_strm_mgr ======== - * Purpose: - * Get the STRM manager for a node. - * Parameters: - * hnode: Node allocated with node_allocate(). - * strm_man: Location to store STRM manager on output. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * Requires: - * strm_man != NULL. - * Ensures: - */ -extern int node_get_strm_mgr(struct node_object *hnode, - struct strm_mgr **strm_man); - -/* - * ======== node_get_timeout ======== - * Purpose: - * Get the timeout value of a node. - * Parameters: - * hnode: Node allocated with node_allocate(), or DSP_HGPPNODE. - * Returns: - * Node's timeout value. - * Requires: - * Valid hnode. - * Ensures: - */ -extern u32 node_get_timeout(struct node_object *hnode); - -/* - * ======== node_get_type ======== - * Purpose: - * Get the type (device, message, task, or XDAIS socket) of a node. - * Parameters: - * hnode: Node allocated with node_allocate(), or DSP_HGPPNODE. - * Returns: - * Node type: NODE_DEVICE, NODE_TASK, NODE_XDAIS, or NODE_GPP. - * Requires: - * Valid hnode. - * Ensures: - */ -extern enum node_type node_get_type(struct node_object *hnode); - -/* - * ======== get_node_info ======== - * Purpose: - * Get node information without holding semaphore. - * Parameters: - * hnode: Node allocated with node_allocate(), or DSP_HGPPNODE. - * Returns: - * Node info: priority, device owner, no. of streams, execution state - * NDB properties. - * Requires: - * Valid hnode. - * Ensures: - */ -extern void get_node_info(struct node_object *hnode, - struct dsp_nodeinfo *node_info); - -/* - * ======== node_get_load_type ======== - * Purpose: - * Get the load type (dynamic, overlay, static) of a node. - * Parameters: - * hnode: Node allocated with node_allocate(), or DSP_HGPPNODE. - * Returns: - * Node type: NLDR_DYNAMICLOAD, NLDR_OVLYLOAD, NLDR_STATICLOAD - * Requires: - * Valid hnode. - * Ensures: - */ -extern enum nldr_loadtype node_get_load_type(struct node_object *hnode); - -#endif /* NODEPRIV_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/ntfy.h b/drivers/staging/tidspbridge/include/dspbridge/ntfy.h deleted file mode 100644 index 6bb94d20e99a..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/ntfy.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * ntfy.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Manage lists of notification events. - * - * 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 NTFY_ -#define NTFY_ - -#include <dspbridge/host_os.h> -#include <dspbridge/dbdefs.h> -#include <dspbridge/sync.h> - -/** - * ntfy_object - head structure to nofify dspbridge events - * @head: List of notify objects - * @ntfy_lock: lock for list access. - * - */ -struct ntfy_object { - struct raw_notifier_head head;/* List of notifier objects */ - spinlock_t ntfy_lock; /* For critical sections */ -}; - -/** - * ntfy_event - structure store specify event to be notified - * @noti_block: List of notify objects - * @event: event that it respond - * @type: event type (only DSP_SIGNALEVENT supported) - * @sync_obj: sync_event used to set the event - * - */ -struct ntfy_event { - struct notifier_block noti_block; - u32 event; /* Events to be notified about */ - u32 type; /* Type of notification to be sent */ - struct sync_object sync_obj; -}; - - -/** - * dsp_notifier_event() - callback function to nofity events - * @this: pointer to itself struct notifier_block - * @event: event to be notified. - * @data: Currently not used. - * - */ -int dsp_notifier_event(struct notifier_block *this, unsigned long event, - void *data); - -/** - * ntfy_init() - Set the initial state of the ntfy_object structure. - * @no: pointer to ntfy_object structure. - * - * This function sets the initial state of the ntfy_object in order it - * can be used by the other ntfy functions. - */ - -static inline void ntfy_init(struct ntfy_object *no) -{ - spin_lock_init(&no->ntfy_lock); - RAW_INIT_NOTIFIER_HEAD(&no->head); -} - -/** - * ntfy_delete() - delete list of nofy events registered. - * @ntfy_obj: Pointer to the ntfy object structure. - * - * This function is used to remove all the notify events registered. - * unregister function is not needed in this function, to unregister - * a ntfy_event please look at ntfy_register function. - * - */ -static inline void ntfy_delete(struct ntfy_object *ntfy_obj) -{ - struct ntfy_event *ne; - struct notifier_block *nb; - - spin_lock_bh(&ntfy_obj->ntfy_lock); - nb = ntfy_obj->head.head; - while (nb) { - ne = container_of(nb, struct ntfy_event, noti_block); - nb = nb->next; - kfree(ne); - } - spin_unlock_bh(&ntfy_obj->ntfy_lock); -} - -/** - * ntfy_notify() - nofity all event register for an specific event. - * @ntfy_obj: Pointer to the ntfy_object structure. - * @event: event to be notified. - * - * This function traverses all the ntfy events registers and - * set the event with mach with @event. - */ -static inline void ntfy_notify(struct ntfy_object *ntfy_obj, u32 event) -{ - spin_lock_bh(&ntfy_obj->ntfy_lock); - raw_notifier_call_chain(&ntfy_obj->head, event, NULL); - spin_unlock_bh(&ntfy_obj->ntfy_lock); -} - - - -/** - * ntfy_init() - Create and initialize a ntfy_event structure. - * @event: event that the ntfy event will respond - * @type event type (only DSP_SIGNALEVENT supported) - * - * This function create a ntfy_event element and sets the event it will - * respond the ntfy_event in order it can be used by the other ntfy functions. - * In case of success it will return a pointer to the ntfy_event struct - * created. Otherwise it will return NULL; - */ - -static inline struct ntfy_event *ntfy_event_create(u32 event, u32 type) -{ - struct ntfy_event *ne; - ne = kmalloc(sizeof(struct ntfy_event), GFP_KERNEL); - if (ne) { - sync_init_event(&ne->sync_obj); - ne->noti_block.notifier_call = dsp_notifier_event; - ne->event = event; - ne->type = type; - } - return ne; -} - -/** - * ntfy_register() - register new ntfy_event into a given ntfy_object - * @ntfy_obj: Pointer to the ntfy_object structure. - * @noti: Pointer to the handle to be returned to the user space. - * @event event that the ntfy event will respond - * @type event type (only DSP_SIGNALEVENT supported) - * - * This function register a new ntfy_event into the ntfy_object list, - * which will respond to the @event passed. - * This function will return 0 in case of error. - * -EFAULT in case of bad pointers and - * DSP_EMemory in case of no memory to create ntfy_event. - */ -static inline int ntfy_register(struct ntfy_object *ntfy_obj, - struct dsp_notification *noti, - u32 event, u32 type) -{ - struct ntfy_event *ne; - int status = 0; - - if (!noti || !ntfy_obj) { - status = -EFAULT; - goto func_end; - } - if (!event) { - status = -EINVAL; - goto func_end; - } - ne = ntfy_event_create(event, type); - if (!ne) { - status = -ENOMEM; - goto func_end; - } - noti->handle = &ne->sync_obj; - - spin_lock_bh(&ntfy_obj->ntfy_lock); - raw_notifier_chain_register(&ntfy_obj->head, &ne->noti_block); - spin_unlock_bh(&ntfy_obj->ntfy_lock); -func_end: - return status; -} - -/** - * ntfy_unregister() - unregister a ntfy_event from a given ntfy_object - * @ntfy_obj: Pointer to the ntfy_object structure. - * @noti: Pointer to the event that will be removed. - * - * This function unregister a ntfy_event from the ntfy_object list, - * @noti contains the event which is wanted to be removed. - * This function will return 0 in case of error. - * -EFAULT in case of bad pointers and - * DSP_EMemory in case of no memory to create ntfy_event. - */ -static inline int ntfy_unregister(struct ntfy_object *ntfy_obj, - struct dsp_notification *noti) -{ - int status = 0; - struct ntfy_event *ne; - - if (!noti || !ntfy_obj) { - status = -EFAULT; - goto func_end; - } - - ne = container_of((struct sync_object *)noti, struct ntfy_event, - sync_obj); - spin_lock_bh(&ntfy_obj->ntfy_lock); - raw_notifier_chain_unregister(&ntfy_obj->head, - &ne->noti_block); - kfree(ne); - spin_unlock_bh(&ntfy_obj->ntfy_lock); -func_end: - return status; -} - -#endif /* NTFY_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/proc.h b/drivers/staging/tidspbridge/include/dspbridge/proc.h deleted file mode 100644 index 64c2457aae95..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/proc.h +++ /dev/null @@ -1,591 +0,0 @@ -/* - * proc.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * This is the DSP API RM module interface. - * - * 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 PROC_ -#define PROC_ - -#include <dspbridge/cfgdefs.h> -#include <dspbridge/devdefs.h> -#include <dspbridge/drv.h> - -/* - * ======== proc_attach ======== - * Purpose: - * Prepare for communication with a particular DSP processor, and return - * a handle to the processor object. The PROC Object gets created - * Parameters: - * processor_id : The processor index (zero-based). - * hmgr_obj : Handle to the Manager Object - * attr_in : Ptr to the dsp_processorattrin structure. - * A NULL value means use default values. - * ph_processor : Ptr to location to store processor handle. - * Returns: - * 0 : Success. - * -EPERM : General failure. - * -EFAULT : Invalid processor handle. - * 0: Success; Processor already attached. - * Requires: - * ph_processor != NULL. - * PROC Initialized. - * Ensures: - * -EPERM, and *ph_processor == NULL, OR - * Success and *ph_processor is a Valid Processor handle OR - * 0 and *ph_processor is a Valid Processor. - * Details: - * When attr_in is NULL, the default timeout value is 10 seconds. - */ -extern int proc_attach(u32 processor_id, - const struct dsp_processorattrin - *attr_in, void **ph_processor, - struct process_context *pr_ctxt); - -/* - * ======== proc_auto_start ========= - * Purpose: - * A Particular device gets loaded with the default image - * if the AutoStart flag is set. - * Parameters: - * hdev_obj : Handle to the Device - * Returns: - * 0 : On Successful Loading - * -ENOENT : No DSP exec file found. - * -EPERM : General Failure - * Requires: - * hdev_obj != NULL. - * dev_node_obj != NULL. - * PROC Initialized. - * Ensures: - */ -extern int proc_auto_start(struct cfg_devnode *dev_node_obj, - struct dev_object *hdev_obj); - -/* - * ======== proc_ctrl ======== - * Purpose: - * Pass control information to the GPP device driver managing the DSP - * processor. This will be an OEM-only function, and not part of the - * 'Bridge application developer's API. - * Parameters: - * hprocessor : The processor handle. - * dw_cmd : Private driver IOCTL cmd ID. - * pargs : Ptr to an driver defined argument structure. - * Returns: - * 0 : SUCCESS - * -EFAULT : Invalid processor handle. - * -ETIME: A Timeout Occurred before the Control information - * could be sent. - * -EPERM : General Failure. - * Requires: - * PROC Initialized. - * Ensures - * Details: - * This function Calls bridge_dev_ctrl. - */ -extern int proc_ctrl(void *hprocessor, - u32 dw_cmd, struct dsp_cbdata *arg); - -/* - * ======== proc_detach ======== - * Purpose: - * Close a DSP processor and de-allocate all (GPP) resources reserved - * for it. The Processor Object is deleted. - * Parameters: - * pr_ctxt : The processor handle. - * Returns: - * 0 : Success. - * -EFAULT : InValid Handle. - * -EPERM : General failure. - * Requires: - * PROC Initialized. - * Ensures: - * PROC Object is destroyed. - */ -extern int proc_detach(struct process_context *pr_ctxt); - -/* - * ======== proc_enum_nodes ======== - * Purpose: - * Enumerate the nodes currently allocated on a processor. - * Parameters: - * hprocessor : The processor handle. - * node_tab : The first Location of an array allocated for node - * handles. - * node_tab_size: The number of (DSP_HNODE) handles that can be held - * to the memory the client has allocated for node_tab - * pu_num_nodes : Location where DSPProcessor_EnumNodes will return - * the number of valid handles written to node_tab - * pu_allocated : Location where DSPProcessor_EnumNodes will return - * the number of nodes that are allocated on the DSP. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EINVAL : The amount of memory allocated for node_tab is - * insufficent. That is the number of nodes actually - * allocated on the DSP is greater than the value - * specified for node_tab_size. - * -EPERM : Unable to get Resource Information. - * Details: - * Requires - * pu_num_nodes is not NULL. - * pu_allocated is not NULL. - * node_tab is not NULL. - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_enum_nodes(void *hprocessor, - void **node_tab, - u32 node_tab_size, - u32 *pu_num_nodes, - u32 *pu_allocated); - -/* - * ======== proc_get_resource_info ======== - * Purpose: - * Enumerate the resources currently available on a processor. - * Parameters: - * hprocessor : The processor handle. - * resource_type: Type of resource . - * resource_info: Ptr to the dsp_resourceinfo structure. - * resource_info_size: Size of the structure. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EBADR: The processor is not in the PROC_RUNNING state. - * -ETIME: A timeout occurred before the DSP responded to the - * querry. - * -EPERM : Unable to get Resource Information - * Requires: - * resource_info is not NULL. - * Parameter resource_type is Valid.[TBD] - * resource_info_size is >= sizeof dsp_resourceinfo struct. - * PROC Initialized. - * Ensures: - * Details: - * This function currently returns - * -ENOSYS, and does not write any data to the resource_info struct. - */ -extern int proc_get_resource_info(void *hprocessor, - u32 resource_type, - struct dsp_resourceinfo - *resource_info, - u32 resource_info_size); - -/* - * ======== proc_get_dev_object ========= - * Purpose: - * Returns the DEV Hanlde for a given Processor handle - * Parameters: - * hprocessor : Processor Handle - * device_obj : Location to store the DEV Handle. - * Returns: - * 0 : Success; *device_obj has Dev handle - * -EPERM : Failure; *device_obj is zero. - * Requires: - * device_obj is not NULL - * PROC Initialized. - * Ensures: - * 0 : *device_obj is not NULL - * -EPERM : *device_obj is NULL. - */ -extern int proc_get_dev_object(void *hprocessor, - struct dev_object **device_obj); - -/* - * ======== proc_get_state ======== - * Purpose: - * Report the state of the specified DSP processor. - * Parameters: - * hprocessor : The processor handle. - * proc_state_obj : Ptr to location to store the dsp_processorstate - * structure. - * state_info_size: Size of dsp_processorstate. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure while querying processor state. - * Requires: - * proc_state_obj is not NULL - * state_info_size is >= than the size of dsp_processorstate structure. - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_get_state(void *hprocessor, struct dsp_processorstate - *proc_state_obj, u32 state_info_size); - -/* - * ======== PROC_GetProcessorID ======== - * Purpose: - * Report the state of the specified DSP processor. - * Parameters: - * hprocessor : The processor handle. - * proc_id : Processor ID - * - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure while querying processor state. - * Requires: - * proc_state_obj is not NULL - * state_info_size is >= than the size of dsp_processorstate structure. - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_get_processor_id(void *proc, u32 * proc_id); - -/* - * ======== proc_get_trace ======== - * Purpose: - * Retrieve the trace buffer from the specified DSP processor. - * Parameters: - * hprocessor : The processor handle. - * pbuf : Ptr to buffer to hold trace output. - * max_size : Maximum size of the output buffer. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure while retrieving processor trace - * Buffer. - * Requires: - * pbuf is not NULL - * max_size is > 0. - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_get_trace(void *hprocessor, u8 * pbuf, u32 max_size); - -/* - * ======== proc_load ======== - * Purpose: - * Reset a processor and load a new base program image. - * This will be an OEM-only function. - * Parameters: - * hprocessor: The processor handle. - * argc_index: The number of Arguments(strings)in the aArgV[] - * user_args: An Array of Arguments(Unicode Strings) - * user_envp: An Array of Environment settings(Unicode Strings) - * Returns: - * 0: Success. - * -ENOENT: The DSP Executable was not found. - * -EFAULT: Invalid processor handle. - * -EPERM : Unable to Load the Processor - * Requires: - * user_args is not NULL - * argc_index is > 0 - * PROC Initialized. - * Ensures: - * Success and ProcState == PROC_LOADED - * or DSP_FAILED status. - * Details: - * Does not implement access rights to control which GPP application - * can load the processor. - */ -extern int proc_load(void *hprocessor, - const s32 argc_index, const char **user_args, - const char **user_envp); - -/* - * ======== proc_register_notify ======== - * Purpose: - * Register to be notified of specific processor events - * Parameters: - * hprocessor : The processor handle. - * event_mask : Mask of types of events to be notified about. - * notify_type : Type of notification to be sent. - * hnotification: Handle to be used for notification. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle or hnotification. - * -EINVAL : Parameter event_mask is Invalid - * DSP_ENOTIMP : The notification type specified in uNotifyMask - * is not supported. - * -EPERM : Unable to register for notification. - * Requires: - * hnotification is not NULL - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_register_notify(void *hprocessor, - u32 event_mask, u32 notify_type, - struct dsp_notification - *hnotification); - -/* - * ======== proc_notify_clients ======== - * Purpose: - * Notify the Processor Clients - * Parameters: - * proc : The processor handle. - * events : Event to be notified about. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : Failure to Set or Reset the Event - * Requires: - * events is Supported or Valid type of Event - * proc is a valid handle - * PROC Initialized. - * Ensures: - */ -extern int proc_notify_clients(void *proc, u32 events); - -/* - * ======== proc_notify_all_clients ======== - * Purpose: - * Notify the Processor Clients - * Parameters: - * proc : The processor handle. - * events : Event to be notified about. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : Failure to Set or Reset the Event - * Requires: - * events is Supported or Valid type of Event - * proc is a valid handle - * PROC Initialized. - * Ensures: - * Details: - * NODE And STRM would use this function to notify their clients - * about the state changes in NODE or STRM. - */ -extern int proc_notify_all_clients(void *proc, u32 events); - -/* - * ======== proc_start ======== - * Purpose: - * Start a processor running. - * Processor must be in PROC_LOADED state. - * This will be an OEM-only function, and not part of the 'Bridge - * application developer's API. - * Parameters: - * hprocessor : The processor handle. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EBADR: Processor is not in PROC_LOADED state. - * -EPERM : Unable to start the processor. - * Requires: - * PROC Initialized. - * Ensures: - * Success and ProcState == PROC_RUNNING or DSP_FAILED status. - * Details: - */ -extern int proc_start(void *hprocessor); - -/* - * ======== proc_stop ======== - * Purpose: - * Start a processor running. - * Processor must be in PROC_LOADED state. - * This will be an OEM-only function, and not part of the 'Bridge - * application developer's API. - * Parameters: - * hprocessor : The processor handle. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EBADR: Processor is not in PROC_LOADED state. - * -EPERM : Unable to start the processor. - * Requires: - * PROC Initialized. - * Ensures: - * Success and ProcState == PROC_RUNNING or DSP_FAILED status. - * Details: - */ -extern int proc_stop(void *hprocessor); - -/* - * ======== proc_end_dma ======== - * Purpose: - * Begin a DMA transfer - * Parameters: - * hprocessor : The processor handle. - * pmpu_addr : Buffer start address - * ul_size : Buffer size - * dir : The direction of the transfer - * Requires: - * Memory was previously mapped. - */ -extern int proc_end_dma(void *hprocessor, void *pmpu_addr, u32 ul_size, - enum dma_data_direction dir); -/* - * ======== proc_begin_dma ======== - * Purpose: - * Begin a DMA transfer - * Parameters: - * hprocessor : The processor handle. - * pmpu_addr : Buffer start address - * ul_size : Buffer size - * dir : The direction of the transfer - * Requires: - * Memory was previously mapped. - */ -extern int proc_begin_dma(void *hprocessor, void *pmpu_addr, u32 ul_size, - enum dma_data_direction dir); - -/* - * ======== proc_flush_memory ======== - * Purpose: - * Flushes a buffer from the MPU data cache. - * Parameters: - * hprocessor : The processor handle. - * pmpu_addr : Buffer start address - * ul_size : Buffer size - * ul_flags : Reserved. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure. - * Requires: - * PROC Initialized. - * Ensures: - * Details: - * All the arguments are currently ignored. - */ -extern int proc_flush_memory(void *hprocessor, - void *pmpu_addr, u32 ul_size, u32 ul_flags); - -/* - * ======== proc_invalidate_memory ======== - * Purpose: - * Invalidates a buffer from the MPU data cache. - * Parameters: - * hprocessor : The processor handle. - * pmpu_addr : Buffer start address - * ul_size : Buffer size - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure. - * Requires: - * PROC Initialized. - * Ensures: - * Details: - * All the arguments are currently ignored. - */ -extern int proc_invalidate_memory(void *hprocessor, - void *pmpu_addr, u32 ul_size); - -/* - * ======== proc_map ======== - * Purpose: - * Maps a MPU buffer to DSP address space. - * Parameters: - * hprocessor : The processor handle. - * pmpu_addr : Starting address of the memory region to map. - * ul_size : Size of the memory region to map. - * req_addr : Requested DSP start address. Offset-adjusted actual - * mapped address is in the last argument. - * pp_map_addr : Ptr to DSP side mapped u8 address. - * ul_map_attr : Optional endianness attributes, virt to phys flag. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure. - * -ENOMEM : MPU side memory allocation error. - * -ENOENT : Cannot find a reserved region starting with this - * : address. - * Requires: - * pmpu_addr is not NULL - * ul_size is not zero - * pp_map_addr is not NULL - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_map(void *hprocessor, - void *pmpu_addr, - u32 ul_size, - void *req_addr, - void **pp_map_addr, u32 ul_map_attr, - struct process_context *pr_ctxt); - -/* - * ======== proc_reserve_memory ======== - * Purpose: - * Reserve a virtually contiguous region of DSP address space. - * Parameters: - * hprocessor : The processor handle. - * ul_size : Size of the address space to reserve. - * pp_rsv_addr : Ptr to DSP side reserved u8 address. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure. - * -ENOMEM : Cannot reserve chunk of this size. - * Requires: - * pp_rsv_addr is not NULL - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_reserve_memory(void *hprocessor, - u32 ul_size, void **pp_rsv_addr, - struct process_context *pr_ctxt); - -/* - * ======== proc_un_map ======== - * Purpose: - * Removes a MPU buffer mapping from the DSP address space. - * Parameters: - * hprocessor : The processor handle. - * map_addr : Starting address of the mapped memory region. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure. - * -ENOENT : Cannot find a mapped region starting with this - * : address. - * Requires: - * map_addr is not NULL - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_un_map(void *hprocessor, void *map_addr, - struct process_context *pr_ctxt); - -/* - * ======== proc_un_reserve_memory ======== - * Purpose: - * Frees a previously reserved region of DSP address space. - * Parameters: - * hprocessor : The processor handle. - * prsv_addr : Ptr to DSP side reservedBYTE address. - * Returns: - * 0 : Success. - * -EFAULT : Invalid processor handle. - * -EPERM : General failure. - * -ENOENT : Cannot find a reserved region starting with this - * : address. - * Requires: - * prsv_addr is not NULL - * PROC Initialized. - * Ensures: - * Details: - */ -extern int proc_un_reserve_memory(void *hprocessor, - void *prsv_addr, - struct process_context *pr_ctxt); - -#endif /* PROC_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/procpriv.h b/drivers/staging/tidspbridge/include/dspbridge/procpriv.h deleted file mode 100644 index 77d1f0ef95c3..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/procpriv.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * procpriv.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global PROC constants and types, shared by PROC, MGR and DSP API. - * - * 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 PROCPRIV_ -#define PROCPRIV_ - -/* RM PROC Object */ -struct proc_object; - -#endif /* PROCPRIV_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/pwr.h b/drivers/staging/tidspbridge/include/dspbridge/pwr.h deleted file mode 100644 index 0fb066488da9..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/pwr.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * pwr.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 PWR_ -#define PWR_ - -#include <dspbridge/dbdefs.h> -#include <dspbridge/mbx_sh.h> - -/* valid sleep command codes that can be sent by GPP via mailbox: */ -#define PWR_DEEPSLEEP MBX_PM_DSPIDLE -#define PWR_EMERGENCYDEEPSLEEP MBX_PM_EMERGENCYSLEEP -#define PWR_WAKEUP MBX_PM_DSPWAKEUP - - -/* - * ======== pwr_sleep_dsp ======== - * Signal the DSP to go to sleep. - * - * Parameters: - * sleep_code: New sleep state for DSP. (Initially, valid codes - * are PWR_DEEPSLEEP or PWR_EMERGENCYDEEPSLEEP; both of - * these codes will simply put the DSP in deep sleep.) - * - * timeout: Maximum time (msec) that PWR should wait for - * confirmation that the DSP sleep state has been - * reached. If PWR should simply send the command to - * the DSP to go to sleep and then return (i.e., - * asynchrounous sleep), the timeout should be - * specified as zero. - * - * Returns: - * 0: Success. - * 0: Success, but the DSP was already asleep. - * -EINVAL: The specified sleep_code is not supported. - * -ETIME: A timeout occurred while waiting for DSP sleep - * confirmation. - * -EPERM: General failure, unable to send sleep command to - * the DSP. - */ -extern int pwr_sleep_dsp(const u32 sleep_code, const u32 timeout); - -/* - * ======== pwr_wake_dsp ======== - * Signal the DSP to wake from sleep. - * - * Parameters: - * timeout: Maximum time (msec) that PWR should wait for - * confirmation that the DSP is awake. If PWR should - * simply send a command to the DSP to wake and then - * return (i.e., asynchrounous wake), timeout should - * be specified as zero. - * - * Returns: - * 0: Success. - * 0: Success, but the DSP was already awake. - * -ETIME: A timeout occurred while waiting for wake - * confirmation. - * -EPERM: General failure, unable to send wake command to - * the DSP. - */ -extern int pwr_wake_dsp(const u32 timeout); - -/* - * ======== pwr_pm_pre_scale ======== - * Prescale notification to DSP. - * - * Parameters: - * voltage_domain: The voltage domain for which notification is sent - * level: The level of voltage domain - * - * Returns: - * 0: Success. - * 0: Success, but the DSP was already awake. - * -ETIME: A timeout occurred while waiting for wake - * confirmation. - * -EPERM: General failure, unable to send wake command to - * the DSP. - */ -extern int pwr_pm_pre_scale(u16 voltage_domain, u32 level); - -/* - * ======== pwr_pm_post_scale ======== - * PostScale notification to DSP. - * - * Parameters: - * voltage_domain: The voltage domain for which notification is sent - * level: The level of voltage domain - * - * Returns: - * 0: Success. - * 0: Success, but the DSP was already awake. - * -ETIME: A timeout occurred while waiting for wake - * confirmation. - * -EPERM: General failure, unable to send wake command to - * the DSP. - */ -extern int pwr_pm_post_scale(u16 voltage_domain, u32 level); - -#endif /* PWR_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h b/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h deleted file mode 100644 index 8c9c902a0432..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/resourcecleanup.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * resourcecleanup.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. - */ - -#include <dspbridge/nodepriv.h> -#include <dspbridge/drv.h> - -extern int drv_remove_all_dmm_res_elements(void *process_ctxt); - -extern int drv_remove_all_node_res_elements(void *process_ctxt); - -extern int drv_remove_all_resources(void *process_ctxt); - -extern int drv_insert_node_res_element(void *hnode, void *node_resource, - void *process_ctxt); - -extern void drv_proc_node_update_heap_status(void *node_resource, s32 status); - -extern void drv_proc_node_update_status(void *node_resource, s32 status); - -extern int drv_proc_update_strm_res(u32 num_bufs, void *strm_resources); - -extern int drv_proc_insert_strm_res_element(void *stream_obj, - void *strm_res, - void *process_ctxt); - -extern int drv_remove_all_strm_res_elements(void *process_ctxt); - -extern enum node_state node_get_state(void *hnode); diff --git a/drivers/staging/tidspbridge/include/dspbridge/rmm.h b/drivers/staging/tidspbridge/include/dspbridge/rmm.h deleted file mode 100644 index f7a4dc8ecb4f..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/rmm.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * rmm.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * This memory manager provides general heap management and arbitrary - * alignment for any number of memory segments, and management of overlay - * memory. - * - * 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 RMM_ -#define RMM_ - -/* - * ======== rmm_addr ======== - * DSP address + segid - */ -struct rmm_addr { - u32 addr; - s32 segid; -}; - -/* - * ======== rmm_segment ======== - * Memory segment on the DSP available for remote allocations. - */ -struct rmm_segment { - u32 base; /* Base of the segment */ - u32 length; /* Size of the segment (target MAUs) */ - s32 space; /* Code or data */ - u32 number; /* Number of Allocated Blocks */ -}; - -/* - * ======== RMM_Target ======== - */ -struct rmm_target_obj; - -/* - * ======== rmm_alloc ======== - * - * rmm_alloc is used to remotely allocate or reserve memory on the DSP. - * - * Parameters: - * target - Target returned from rmm_create(). - * segid - Memory segment to allocate from. - * size - Size (target MAUS) to allocate. - * align - alignment. - * dsp_address - If reserve is FALSE, the location to store allocated - * address on output, otherwise, the DSP address to - * reserve. - * reserve - If TRUE, reserve the memory specified by dsp_address. - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation on GPP failed. - * -ENXIO: Cannot "allocate" overlay memory because it's - * already in use. - * Requires: - * RMM initialized. - * Valid target. - * dsp_address != NULL. - * size > 0 - * reserve || target->num_segs > 0. - * Ensures: - */ -extern int rmm_alloc(struct rmm_target_obj *target, u32 segid, u32 size, - u32 align, u32 *dsp_address, bool reserve); - -/* - * ======== rmm_create ======== - * Create a target object with memory segments for remote allocation. If - * seg_tab == NULL or num_segs == 0, memory can only be reserved through - * rmm_alloc(). - * - * Parameters: - * target_obj: - Location to store target on output. - * seg_tab: - Table of memory segments. - * num_segs: - Number of memory segments. - * Returns: - * 0: Success. - * -ENOMEM: Memory allocation failed. - * Requires: - * RMM initialized. - * target_obj != NULL. - * num_segs == 0 || seg_tab != NULL. - * Ensures: - * Success: Valid *target_obj. - * Failure: *target_obj == NULL. - */ -extern int rmm_create(struct rmm_target_obj **target_obj, - struct rmm_segment seg_tab[], u32 num_segs); - -/* - * ======== rmm_delete ======== - * Delete target allocated in rmm_create(). - * - * Parameters: - * target - Target returned from rmm_create(). - * Returns: - * Requires: - * RMM initialized. - * Valid target. - * Ensures: - */ -extern void rmm_delete(struct rmm_target_obj *target); - -/* - * ======== rmm_free ======== - * Free or unreserve memory allocated through rmm_alloc(). - * - * Parameters: - * target: - Target returned from rmm_create(). - * segid: - Segment of memory to free. - * dsp_address: - Address to free or unreserve. - * size: - Size of memory to free or unreserve. - * reserved: - TRUE if memory was reserved only, otherwise FALSE. - * Returns: - * Requires: - * RMM initialized. - * Valid target. - * reserved || segid < target->num_segs. - * reserve || [dsp_address, dsp_address + size] is a valid memory range. - * Ensures: - */ -extern bool rmm_free(struct rmm_target_obj *target, u32 segid, u32 dsp_addr, - u32 size, bool reserved); - -/* - * ======== rmm_stat ======== - * Obtain memory segment status - * - * Parameters: - * segid: Segment ID of the dynamic loading segment. - * mem_stat_buf: Pointer to allocated buffer into which memory stats are - * placed. - * Returns: - * TRUE: Success. - * FALSE: Failure. - * Requires: - * segid < target->num_segs - * Ensures: - */ -extern bool rmm_stat(struct rmm_target_obj *target, enum dsp_memtype segid, - struct dsp_memstat *mem_stat_buf); - -#endif /* RMM_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h b/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h deleted file mode 100644 index ba7f47845673..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/rms_sh.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * rms_sh.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge Resource Manager Server shared definitions (used on both - * GPP and DSP sides). - * - * Copyright (C) 2008 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 RMS_SH_ -#define RMS_SH_ - -#include <dspbridge/rmstypes.h> - -/* Memory Types: */ -#define RMS_CODE 0 /* Program space */ -#define RMS_DATA 1 /* Data space */ - -/* RM Server Command and Response Buffer Sizes: */ -#define RMS_COMMANDBUFSIZE 256 /* Size of command buffer */ - -/* Pre-Defined Command/Response Codes: */ -#define RMS_EXIT 0x80000000 /* GPP->Node: shutdown */ -#define RMS_EXITACK 0x40000000 /* Node->GPP: ack shutdown */ -#define RMS_BUFDESC 0x20000000 /* Arg1 SM buf, Arg2 SM size */ -#define RMS_KILLTASK 0x10000000 /* GPP->Node: Kill Task */ - -/* RM Server RPC Command Structure: */ -struct rms_command { - rms_word fxn; /* Server function address */ - rms_word arg1; /* First argument */ - rms_word arg2; /* Second argument */ - rms_word data; /* Function-specific data array */ -}; - -/* - * The rms_strm_def structure defines the parameters for both input and output - * streams, and is passed to a node's create function. - */ -struct rms_strm_def { - rms_word bufsize; /* Buffer size (in DSP words) */ - rms_word nbufs; /* Max number of bufs in stream */ - rms_word segid; /* Segment to allocate buffers */ - rms_word align; /* Alignment for allocated buffers */ - rms_word timeout; /* Timeout (msec) for blocking calls */ - char name[1]; /* Device Name (terminated by '\0') */ -}; - -/* Message node create args structure: */ -struct rms_msg_args { - rms_word max_msgs; /* Max # simultaneous msgs to node */ - rms_word segid; /* Mem segment for NODE_allocMsgBuf */ - rms_word notify_type; /* Type of message notification */ - rms_word arg_length; /* Length (in DSP chars) of arg data */ - rms_word arg_data; /* Arg data for node */ -}; - -/* Partial task create args structure */ -struct rms_more_task_args { - rms_word priority; /* Task's runtime priority level */ - rms_word stack_size; /* Task's stack size */ - rms_word sysstack_size; /* Task's system stack size (55x) */ - rms_word stack_seg; /* Memory segment for task's stack */ - rms_word heap_addr; /* base address of the node memory heap in - * external memory (DSP virtual address) */ - rms_word heap_size; /* size in MAUs of the node memory heap in - * external memory */ - rms_word misc; /* Misc field. Not used for 'normal' - * task nodes; for xDAIS socket nodes - * specifies the IALG_Fxn pointer. - */ - /* # input STRM definition structures */ - rms_word num_input_streams; -}; - -#endif /* RMS_SH_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/rmstypes.h b/drivers/staging/tidspbridge/include/dspbridge/rmstypes.h deleted file mode 100644 index 83c0f1d9619e..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/rmstypes.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * rmstypes.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSP/BIOS Bridge Resource Manager Server shared data type definitions. - * - * Copyright (C) 2008 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 RMSTYPES_ -#define RMSTYPES_ -#include <linux/types.h> -typedef u32 rms_word; - -#endif /* RMSTYPES_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/strm.h b/drivers/staging/tidspbridge/include/dspbridge/strm.h deleted file mode 100644 index 97aee4c63d24..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/strm.h +++ /dev/null @@ -1,306 +0,0 @@ -/* - * strm.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * DSPBridge Stream Manager. - * - * 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 STRM_ -#define STRM_ - -#include <dspbridge/dev.h> - -#include <dspbridge/strmdefs.h> -#include <dspbridge/proc.h> - -/* - * ======== strm_allocate_buffer ======== - * Purpose: - * Allocate data buffer(s) for use with a stream. - * Parameter: - * strmres: Stream resource info handle returned from strm_open(). - * usize: Size (GPP bytes) of the buffer(s). - * num_bufs: Number of buffers to allocate. - * ap_buffer: Array to hold buffer addresses. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -ENOMEM: Insufficient memory. - * -EPERM: Failure occurred, unable to allocate buffers. - * -EINVAL: usize must be > 0 bytes. - * Requires: - * ap_buffer != NULL. - * Ensures: - */ -extern int strm_allocate_buffer(struct strm_res_object *strmres, - u32 usize, - u8 **ap_buffer, - u32 num_bufs, - struct process_context *pr_ctxt); - -/* - * ======== strm_close ======== - * Purpose: - * Close a stream opened with strm_open(). - * Parameter: - * strmres: Stream resource info handle returned from strm_open(). - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -EPIPE: Some data buffers issued to the stream have not - * been reclaimed. - * -EPERM: Failure to close stream. - * Requires: - * Ensures: - */ -extern int strm_close(struct strm_res_object *strmres, - struct process_context *pr_ctxt); - -/* - * ======== strm_create ======== - * Purpose: - * Create a STRM manager object. This object holds information about the - * device needed to open streams. - * Parameters: - * strm_man: Location to store handle to STRM manager object on - * output. - * dev_obj: Device for this processor. - * Returns: - * 0: Success; - * -ENOMEM: Insufficient memory for requested resources. - * -EPERM: General failure. - * Requires: - * strm_man != NULL. - * dev_obj != NULL. - * Ensures: - * 0: Valid *strm_man. - * error: *strm_man == NULL. - */ -extern int strm_create(struct strm_mgr **strm_man, - struct dev_object *dev_obj); - -/* - * ======== strm_delete ======== - * Purpose: - * Delete the STRM Object. - * Parameters: - * strm_mgr_obj: Handle to STRM manager object from strm_create. - * Returns: - * Requires: - * Valid strm_mgr_obj. - * Ensures: - * strm_mgr_obj is not valid. - */ -extern void strm_delete(struct strm_mgr *strm_mgr_obj); - -/* - * ======== strm_free_buffer ======== - * Purpose: - * Free buffer(s) allocated with strm_allocate_buffer. - * Parameter: - * strmres: Stream resource info handle returned from strm_open(). - * ap_buffer: Array containing buffer addresses. - * num_bufs: Number of buffers to be freed. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream handle. - * -EPERM: Failure occurred, unable to free buffers. - * Requires: - * ap_buffer != NULL. - * Ensures: - */ -extern int strm_free_buffer(struct strm_res_object *strmres, - u8 **ap_buffer, u32 num_bufs, - struct process_context *pr_ctxt); - -/* - * ======== strm_get_info ======== - * Purpose: - * Get information about a stream. User's dsp_streaminfo is contained - * in stream_info struct. stream_info also contains Bridge private info. - * Parameters: - * stream_obj: Stream handle returned from strm_open(). - * stream_info: Location to store stream info on output. - * uSteamInfoSize: Size of user's dsp_streaminfo structure. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -EINVAL: stream_info_size < sizeof(dsp_streaminfo). - * -EPERM: Unable to get stream info. - * Requires: - * stream_info != NULL. - * Ensures: - */ -extern int strm_get_info(struct strm_object *stream_obj, - struct stream_info *stream_info, - u32 stream_info_size); - -/* - * ======== strm_idle ======== - * Purpose: - * Idle a stream and optionally flush output data buffers. - * If this is an output stream and flush_data is TRUE, all data currently - * enqueued will be discarded. - * If this is an output stream and flush_data is FALSE, this function - * will block until all currently buffered data is output, or the timeout - * specified has been reached. - * After a successful call to strm_idle(), all buffers can immediately - * be reclaimed. - * Parameters: - * stream_obj: Stream handle returned from strm_open(). - * flush_data: If TRUE, discard output buffers. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -ETIME: A timeout occurred before the stream could be idled. - * -EPERM: Unable to idle stream. - * Requires: - * Ensures: - */ -extern int strm_idle(struct strm_object *stream_obj, bool flush_data); - -/* - * ======== strm_issue ======== - * Purpose: - * Send a buffer of data to a stream. - * Parameters: - * stream_obj: Stream handle returned from strm_open(). - * pbuf: Pointer to buffer of data to be sent to the stream. - * ul_bytes: Number of bytes of data in the buffer. - * ul_buf_size: Actual buffer size in bytes. - * dw_arg: A user argument that travels with the buffer. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -ENOSR: The stream is full. - * -EPERM: Failure occurred, unable to issue buffer. - * Requires: -* pbuf != NULL. - * Ensures: - */ -extern int strm_issue(struct strm_object *stream_obj, u8 * pbuf, - u32 ul_bytes, u32 ul_buf_size, u32 dw_arg); - -/* - * ======== strm_open ======== - * Purpose: - * Open a stream for sending/receiving data buffers to/from a task of - * DAIS socket node on the DSP. - * Parameters: - * hnode: Node handle returned from node_allocate(). - * dir: DSP_TONODE or DSP_FROMNODE. - * index: Stream index. - * pattr: Pointer to structure containing attributes to be - * applied to stream. Cannot be NULL. - * strmres: Location to store stream resource info handle on output. - * Returns: - * 0: Success. - * -EFAULT: Invalid hnode. - * -EPERM: Invalid direction. - * hnode is not a task or DAIS socket node. - * Unable to open stream. - * -EINVAL: Invalid index. - * Requires: - * strmres != NULL. - * pattr != NULL. - * Ensures: - * 0: *strmres is valid. - * error: *strmres == NULL. - */ -extern int strm_open(struct node_object *hnode, u32 dir, - u32 index, struct strm_attr *pattr, - struct strm_res_object **strmres, - struct process_context *pr_ctxt); - -/* - * ======== strm_reclaim ======== - * Purpose: - * Request a buffer back from a stream. - * Parameters: - * stream_obj: Stream handle returned from strm_open(). - * buf_ptr: Location to store pointer to reclaimed buffer. - * nbytes: Location where number of bytes of data in the - * buffer will be written. - * buff_size: Location where actual buffer size will be written. - * pdw_arg: Location where user argument that travels with - * the buffer will be written. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -ETIME: A timeout occurred before a buffer could be - * retrieved. - * -EPERM: Failure occurred, unable to reclaim buffer. - * Requires: - * buf_ptr != NULL. - * nbytes != NULL. - * pdw_arg != NULL. - * Ensures: - */ -extern int strm_reclaim(struct strm_object *stream_obj, - u8 **buf_ptr, u32 * nbytes, - u32 *buff_size, u32 *pdw_arg); - -/* - * ======== strm_register_notify ======== - * Purpose: - * Register to be notified on specific events for this stream. - * Parameters: - * stream_obj: Stream handle returned by strm_open(). - * event_mask: Mask of types of events to be notified about. - * notify_type: Type of notification to be sent. - * hnotification: Handle to be used for notification. - * Returns: - * 0: Success. - * -EFAULT: Invalid stream_obj. - * -ENOMEM: Insufficient memory on GPP. - * -EINVAL: event_mask is invalid. - * -ENOSYS: Notification type specified by notify_type is not - * supported. - * Requires: - * hnotification != NULL. - * Ensures: - */ -extern int strm_register_notify(struct strm_object *stream_obj, - u32 event_mask, u32 notify_type, - struct dsp_notification - *hnotification); - -/* - * ======== strm_select ======== - * Purpose: - * Select a ready stream. - * Parameters: - * strm_tab: Array of stream handles returned from strm_open(). - * strms: Number of stream handles in array. - * pmask: Location to store mask of ready streams on output. - * utimeout: Timeout value (milliseconds). - * Returns: - * 0: Success. - * -EDOM: strms out of range. - - * -EFAULT: Invalid stream handle in array. - * -ETIME: A timeout occurred before a stream became ready. - * -EPERM: Failure occurred, unable to select a stream. - * Requires: - * strm_tab != NULL. - * strms > 0. - * pmask != NULL. - * Ensures: - * 0: *pmask != 0 || utimeout == 0. - * Error: *pmask == 0. - */ -extern int strm_select(struct strm_object **strm_tab, - u32 strms, u32 *pmask, u32 utimeout); - -#endif /* STRM_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h b/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h deleted file mode 100644 index 4f90e6ba69ef..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/strmdefs.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * strmdefs.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Global STRM constants and types. - * - * 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 STRMDEFS_ -#define STRMDEFS_ - -struct strm_mgr; - -struct strm_object; - -struct strm_attr { - void *user_event; - char *str_event_name; - void *virt_base; /* Process virtual base address of - * mapped SM */ - u32 virt_size; /* Size of virtual space in bytes */ - struct dsp_streamattrin *stream_attr_in; -}; - -struct stream_info { - enum dsp_strmmode strm_mode; /* transport mode of - * stream(DMA, ZEROCOPY..) */ - u32 segment_id; /* Segment strm allocs from. 0 is local mem */ - void *virt_base; /* " " Stream'process virt base */ - struct dsp_streaminfo *user_strm; /* User's stream information - * returned */ -}; - -#endif /* STRMDEFS_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/sync.h b/drivers/staging/tidspbridge/include/dspbridge/sync.h deleted file mode 100644 index fc19b9707087..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/sync.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * sync.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * Provide synchronization services. - * - * 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 _SYNC_H -#define _SYNC_H - -#include <dspbridge/dbdefs.h> -#include <dspbridge/host_os.h> - - -/* Special timeout value indicating an infinite wait: */ -#define SYNC_INFINITE 0xffffffff - -/** - * struct sync_object - the basic sync_object structure - * @comp: use to signal events - * @multi_comp: use to signal multiple events. - * - */ -struct sync_object{ - struct completion comp; - struct completion *multi_comp; -}; - -/** - * sync_init_event() - set initial state for a sync_event element - * @event: event to be initialized. - * - * Set the initial state for a sync_event element. - */ - -static inline void sync_init_event(struct sync_object *event) -{ - init_completion(&event->comp); - event->multi_comp = NULL; -} - -/** - * sync_reset_event() - reset a sync_event element - * @event: event to be reset. - * - * This function reset to the initial state to @event. - */ - -static inline void sync_reset_event(struct sync_object *event) -{ - reinit_completion(&event->comp); - event->multi_comp = NULL; -} - -/** - * sync_set_event() - set or signal and specified event - * @event: Event to be set.. - * - * set the @event, if there is an thread waiting for the event - * it will be waken up, this function only wakes one thread. - */ - -void sync_set_event(struct sync_object *event); - -/** - * sync_wait_on_event() - waits for a event to be set. - * @event: events to wait for it. - * @timeout timeout on waiting for the evetn. - * - * This function will wait until @event is set or until timeout. In case of - * success the function will return 0 and - * in case of timeout the function will return -ETIME - * in case of signal the function will return -ERESTARTSYS - */ - -static inline int sync_wait_on_event(struct sync_object *event, - unsigned timeout) -{ - int res; - - res = wait_for_completion_interruptible_timeout(&event->comp, - msecs_to_jiffies(timeout)); - if (!res) - res = -ETIME; - else if (res > 0) - res = 0; - - return res; -} - -/** - * sync_wait_on_multiple_events() - waits for multiple events to be set. - * @events: Array of events to wait for them. - * @count: number of elements of the array. - * @timeout timeout on waiting for the evetns. - * @pu_index index of the event set. - * - * This function will wait until any of the array element is set or until - * timeout. In case of success the function will return 0 and - * @pu_index will store the index of the array element set and in case - * of timeout the function will return -ETIME. - */ - -int sync_wait_on_multiple_events(struct sync_object **events, - unsigned count, unsigned timeout, - unsigned *index); - -#endif /* _SYNC_H */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/uuidutil.h b/drivers/staging/tidspbridge/include/dspbridge/uuidutil.h deleted file mode 100644 index b4951a1381e7..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/uuidutil.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * uuidutil.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * This file contains the specification of UUID helper functions. - * - * 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 UUIDUTIL_ -#define UUIDUTIL_ - -#define MAXUUIDLEN 37 - -#endif /* UUIDUTIL_ */ diff --git a/drivers/staging/tidspbridge/include/dspbridge/wdt.h b/drivers/staging/tidspbridge/include/dspbridge/wdt.h deleted file mode 100644 index 36193db2e9a3..000000000000 --- a/drivers/staging/tidspbridge/include/dspbridge/wdt.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * wdt.h - * - * DSP-BIOS Bridge driver support functions for TI OMAP processors. - * - * IO dispatcher for a shared memory channel driver. - * - * Copyright (C) 2010 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 __DSP_WDT3_H_ -#define __DSP_WDT3_H_ - -/* WDT defines */ -#define OMAP3_WDT3_ISR_OFFSET 0x0018 - - -/** - * struct dsp_wdt_setting - the basic dsp_wdt_setting structure - * @reg_base: pointer to the base of the wdt registers - * @sm_wdt: pointer to flags in shared memory - * @wdt3_tasklet tasklet to manage wdt event - * @fclk handle to wdt3 functional clock - * @iclk handle to wdt3 interface clock - * - * This struct is used in the function to manage wdt3. - */ - -struct dsp_wdt_setting { - void __iomem *reg_base; - struct shm *sm_wdt; - struct tasklet_struct wdt3_tasklet; - struct clk *fclk; - struct clk *iclk; -}; - -/** - * dsp_wdt_init() - initialize wdt3 module. - * - * This function initialize to wdt3 module, so that - * other wdt3 function can be used. - */ -int dsp_wdt_init(void); - -/** - * dsp_wdt_exit() - initialize wdt3 module. - * - * This function frees all resources allocated for wdt3 module. - */ -void dsp_wdt_exit(void); - -/** - * dsp_wdt_enable() - enable/disable wdt3 - * @enable: bool value to enable/disable wdt3 - * - * This function enables or disables wdt3 base on @enable value. - * - */ -void dsp_wdt_enable(bool enable); - -/** - * dsp_wdt_sm_set() - store pointer to the share memory - * @data: pointer to dspbridge share memory - * - * This function is used to pass a valid pointer to share memory, - * so that the flags can be set in order DSP side can read them. - * - */ -void dsp_wdt_sm_set(void *data); - -#endif - |