/* * dspbridge/mpu_api/inc/DSPProcessor.h * * DSP-BIOS Bridge driver support functions for TI OMAP processors. * * Copyright (C) 2007 Texas Instruments, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation version 2.1 of the License. * * This program is distributed .as is. WITHOUT ANY WARRANTY of any kind, * whether express or implied; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ /* * ======== DSPProcessor.h ======== * Description: * This is the header for the DSP/BIOS Bridge processor module. * * Public Functions: * DSPProcessor_Attach * DSPProcessor_Detach * DSPProcessor_EnumNodes * DSPProcessor_FlushMemory * DSPProcessor_GetResourceInfo * DSPProcessor_GetState * DSPProcessor_Map * DSPProcessor_RegisterNotify * DSPProcessor_ReserveMemory * DSPProcessor_UnMap * DSPProcessor_UnReserveMemory * DSPProcessor_InvalidateMemory * Notes: * *! Revision History: *! ================ *! 04-04-2007 sh Added DSPProcessor_InvalidateMemory *! 19-Apr-2004 sb Aligned DMM definitions with Symbian *! 08-Mar-2004 sb Added the Dynamic Memory Mapping APIs *! 23-Nov-2002 gp: Comment cleanup. *! 13-Feb-2001 kc: DSP/BIOS Bridge name updates. *! 29-Nov-2000 rr: OEM Fxns moved to DSPProcessor_OEM.h *! Incorporated code review changes. *! 27-Oct-2000 jeh Changed uNotifyMask to uNotifyType. *! 28-Sep-2000 rr: Updated to Version 0.9. *! 07-Sep-2000 jeh Changed type HANDLE in DSPProcessor_RegisterNotify to *! DSP_HNOTIFICATION. *! 14-Aug-2000 rr: Cleaned up. *! 20-Jul-2000 rr: Updated to Version 0.8 *! 27-Jun-2000 rr: Created from DBAPI.h */ #ifndef DSPPROCESSOR_ #define DSPPROCESSOR_ #ifdef __cplusplus extern "C" { #endif /* * ======== DSPProcessor_Attach ======== * Purpose: * Prepare for communication with a particular DSP processor, and return * a processor handle for subsequent operations. * Parameters: * uProcessor: The processor index. * pAttrIn: Ptr to the DSP_PROCESSORATTRIN structure. * A NULL value means use default values. * phProcessor: Ptr to location to store processor handle. * Returns: * DSP_SOK: Success. * DSP_EPOINTER: Parameter phProcessor is not valid. * DSP_EINVALIDARG: Parameter uProcessor is invalid * DSP_EFAIL: Unable to attach the processor * DSP_SALREADYATTACHED: Success; Processor already attached. * Details: * Returns DSP_EINVALIDARG if uProcessor index >= number of processors. * When pAttrIn is NULL, the default timeout value is 10 seconds. * This call does not affect the actual execution state of the DSP. */ extern DBAPI DSPProcessor_Attach(UINT uProcessor, OPTIONAL CONST struct DSP_PROCESSORATTRIN * pAttrIn, OUT DSP_HPROCESSOR * phProcessor); /* * ======== DSPProcessor_Detach ======== * Purpose: * Detach from a DSP processor and de-allocate all (GPP) resources reserved * for it. * Parameters: * hProcessor: The processor handle. * Returns: * DSP_SOK: Success. * DSP_EHANDLE: Invalid processor handle. * DSP_EFAIL: Unable to detach from the processor. * Details: * This call does not affect the actual execution state of the DSP. */ extern DBAPI DSPProcessor_Detach(DSP_HPROCESSOR hProcessor); /* * ======== DSPProcessor_EnumNodes ======== * Purpose: * Enumerate the nodes currently allocated on a processor. * Parameters: * hProcessor: The processor handle. * aNodeTab: An array allocated to receive the node handles. * uNodeTabSize: The number of (DSP_HNODE) handles that can be held * in aNodeTab. * puNumNodes: Location where DSPProcessor_EnumNodes will return * the number of valid handles written to aNodeTab * puAllocated: Location where DSPProcessor_EnumNodes will return * the number of nodes that are allocated on the DSP. * Returns: * DSP_SOK: Success. * DSP_EHANDLE: Invalid processor handle. * DSP_EPOINTER: Parameters puNumNodes or puAllocated is not valid * DSP_ESIZE: The amount of memory allocated for aNodeTab is * insufficent. The number of nodes actually * allocated on the DSP is greater than the value * specified for uNodeTabSize. * DSP_EFAIL: A failure occurred during enumeration. * Details: */ extern DBAPI DSPProcessor_EnumNodes(DSP_HPROCESSOR hProcessor, IN DSP_HNODE * aNodeTab, IN UINT uNodeTabSize, OUT UINT * puNumNodes, OUT UINT * puAllocated); /* * ======== DSPProcessor_FlushMemory ======== * Purpose: * Flushes a buffer from the MPU data cache. * Parameters: * hProcessor : The processor handle. * pMpuAddr : Buffer start address * ulSize : Buffer size * ulFlags : Reserved. * Returns: * DSP_SOK : Success. * DSP_EHANDLE : Invalid processor handle. * DSP_EFAIL : General failure. * Requires: * PROC Initialized. * Ensures: * Details: * All the arguments are currently ignored. */ extern DBAPI DSPProcessor_FlushMemory(DSP_HPROCESSOR hProcessor, PVOID pMpuAddr, ULONG ulSize, ULONG ulFlags); /* * ======== DSPProcessor_InvalidateMemory ======== * Purpose: * Invalidates a buffer from the MPU data cache. * Parameters: * hProcessor : The processor handle. * pMpuAddr : Buffer start address * ulSize : Buffer size * Returns: * DSP_SOK : Success. * DSP_EHANDLE : Invalid processor handle. * DSP_EFAIL : General failure. * Requires: * PROC Initialized. * Ensures: * Details: */ extern DBAPI DSPProcessor_InvalidateMemory(DSP_HPROCESSOR hProcessor, PVOID pMpuAddr, ULONG ulSize); /* * ======== DSPProcessor_GetResourceInfo ======== * Purpose: * Get information about a DSP Resources. * Parameters: * hProcessor: The processor handle. * uResourceType: Type of resource to be reported. * pResourceInfo: Ptr to the DSP_RESOURCEINFO structure in which * the processor resource information will be returned. * uResourceInfoSize: Size of the DSP_RESOURCEINFO structure. * Returns: * DSP_SOK: Success. * DSP_EHANDLE: Invalid processor handle. * DSP_EPOINTER: Parameter pResourceInfo is not valid * DSP_EVALUE: Parameter uResourceType is invalid. * DSP_EWRONGSTATE: The processor is not in the PROC_RUNNING state. * DSP_ETIMEOUT: A timeout occured before the DSP responded to the * querry. * DSP_ERESTART: A Critical error has occured and the DSP is being * restarted. * DSP_ESIZE: The size of the specified DSP_RESOURCEINFO struct * is too small to hold all the information. * DSP_EFAIL: Unable to get Resource Information * Details: */ extern DBAPI DSPProcessor_GetResourceInfo(DSP_HPROCESSOR hProcessor, UINT uResourceType, OUT struct DSP_RESOURCEINFO * pResourceInfo, UINT uResourceInfoSize); /* * ======== DSPProcessor_GetState ======== * Purpose: * Report the state of the specified DSP processor. * Parameters: * hProcessor: The processor handle. * pProcStatus: Ptr to location to store the DSP_PROCESSORSTATE * structure. * uStateInfoSize: Size of DSP_PROCESSORSTATE. * Returns: * DSP_SOK: Success. * DSP_EHANDLE: Invalid processor handle. * DSP_EPOINTER: Parameter pProcStatus is not valid. * DSP_EFAIL: General failure while querying processor state. * DSP_ESIZE: uStateInfoSize is smaller than sizeof * DSP_PROCESSORSTATE. * Details: */ extern DBAPI DSPProcessor_GetState(DSP_HPROCESSOR hProcessor, OUT struct DSP_PROCESSORSTATE * pProcStatus, UINT uStateInfoSize); /* * ======== DSPProcessor_Map ======== * Purpose: * Maps a MPU buffer to DSP address space. * Parameters: * hProcessor : The processor handle. * pMpuAddr : Starting address of the memory region to map. * ulSize : Size of the memory region to map. * pReqAddr : Requested DSP start address. Offset-adjusted actual * mapped address is in the last argument. * ppMapAddr : Ptr to DSP side mapped BYTE address. * ulMapAttr : Optional endianness attributes, virt to phys flag. * Returns: * DSP_SOK : Success. * DSP_EHANDLE : Invalid processor handle. * DSP_EFAIL : General failure. * DSP_EMEMORY : MPU side memory allocation error. * DSP_ENOTFOUND : Cannot find a reserved region starting with this * : address. * Requires: * pMpuAddr is not NULL * ulSize is not zero * ppMapAddr is not NULL * PROC Initialized. * Ensures: * Details: */ extern DBAPI DSPProcessor_Map(DSP_HPROCESSOR hProcessor, PVOID pMpuAddr, ULONG ulSize, PVOID pReqAddr, PVOID * ppMapAddr, ULONG ulMapAttr); /* * ======== DSPProcessor_RegisterNotify ======== * Purpose: * Register to be notified of specific processor events * Parameters: * hProcessor: The processor handle. * uEventMask: Type of event to be notified about. * uNotifyType: Type of notification to be sent. * hNotification: Handle or event name to be used for notification. * about, or to de-register this notification. * Returns: * DSP_SOK: Success. * DSP_EHANDLE: Invalid processor handle or hNotification. * DSP_EVALUE: Parameter uEventMask is Invalid * DSP_ENOTIMP: The notification type specified in uNotifyType * is not supported. * DSP_EFAIL: Unable to register for notification. * Details: */ extern DBAPI DSPProcessor_RegisterNotify(DSP_HPROCESSOR hProcessor, UINT uEventMask, UINT uNotifyType, struct DSP_NOTIFICATION* hNotification); /* * ======== DSPProcessor_ReserveMemory ======== * Purpose: * Reserve a virtually contiguous region of DSP address space. * Parameters: * hProcessor : The processor handle. * ulSize : Size of the address space to reserve. * ppRsvAddr : Ptr to DSP side reserved BYTE address. * Returns: * DSP_SOK : Success. * DSP_EHANDLE : Invalid processor handle. * DSP_EFAIL : General failure. * DSP_EMEMORY : Cannot reserve chunk of this size. * Requires: * ppRsvAddr is not NULL * PROC Initialized. * Ensures: * Details: */ extern DBAPI DSPProcessor_ReserveMemory(DSP_HPROCESSOR hProcessor, ULONG ulSize, PVOID * ppRsvAddr); /* * ======== DSPProcessor_UnMap ======== * Purpose: * Removes a MPU buffer mapping from the DSP address space. * Parameters: * hProcessor : The processor handle. * pMapAddr : Starting address of the mapped memory region. * Returns: * DSP_SOK : Success. * DSP_EHANDLE : Invalid processor handle. * DSP_EFAIL : General failure. * DSP_ENOTFOUND : Cannot find a mapped region starting with this * : address. * Requires: * pMapAddr is not NULL * PROC Initialized. * Ensures: * Details: */ extern DBAPI DSPProcessor_UnMap(DSP_HPROCESSOR hProcessor, PVOID pMapAddr); /* * ======== DSPProcessor_UnReserveMemory ======== * Purpose: * Frees a previously reserved region of DSP address space. * Parameters: * hProcessor : The processor handle. * pRsvAddr : Ptr to DSP side reservedBYTE address. * Returns: * DSP_SOK : Success. * DSP_EHANDLE : Invalid processor handle. * DSP_EFAIL : General failure. * DSP_ENOTFOUND : Cannot find a reserved region starting with this * : address. * Requires: * pRsvAddr is not NULL * PROC Initialized. * Ensures: * Details: */ extern DBAPI DSPProcessor_UnReserveMemory(DSP_HPROCESSOR hProcessor, PVOID pRsvAddr); #ifdef __cplusplus } #endif #endif /* DSPPROCESSOR_ */