173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ 373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * you may not use this file except in compliance with the License. 673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * You may obtain a copy of the License at 773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * http://www.apache.org/licenses/LICENSE-2.0 973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Unless required by applicable law or agreed to in writing, software 1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * distributed under the License is distributed on an "AS IS" BASIS, 1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * See the License for the specific language governing permissions and 1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * limitations under the License. 1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== drv.h ======== 1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP-BIOS Bridge driver support functions for TI OMAP processors. 2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 2173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Resource allocation module. Driver Object gets Created 2273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * at the time of Loading. It holds the List of Device Objects 2373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * in the Syste, 2473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 2573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Public Functions: 2673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_Create 2773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_Destroy 2873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_Exit 2973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_GetDevObject 3073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_GetDevExtension 3173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_GetFirstDevObject 3273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_GetNextDevObject 3373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_GetNextDevExtension 3473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_Init 3573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_InsertDevObject 3673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_RemoveDevObject 3773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_RequestResources 3873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV_ReleaseResources 3973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 4073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Revision History 4173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! ================ 4273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 10-Feb-2004 vp: Added OMAP24xx specific definitions. 4373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 14-Aug-2000 rr: Cleaned up. 4473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 27-Jul-2000 rr: DRV_RequestResources split into two(Request and Release) 4573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Device extension created to hold the DevNodeString. 4673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 17-Jul-2000 rr: Driver Object holds the list of Device Objects. 4773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Added DRV_Create, DRV_Destroy, DRV_GetDevObject, 4873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! DRV_GetFirst/NextDevObject, DRV_Insert/RemoveDevObject. 4973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 12-Nov-1999 rr: New Flag defines for DRV_ASSIGN and DRV_RELEASE 5073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 25-Oct-1999 rr: Resource Structure removed. 5173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 15-Oct-1999 rr: New Resource structure created. 5273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 05-Oct-1999 rr: Added DRV_RequestResources 5373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Removed fxn'sDRV_RegisterMiniDriver(), DRV_UnRegisterMiniDriver() 5473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Removed Structures DSP_DRIVER & DRV_EXTENSION. 5573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 24-Sep-1999 rr: Added DRV_EXTENSION and DSP_DRIVER structures. 5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef DRV_ 6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DRV_ 6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus 6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinextern "C" { 6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <devdefs.h> 6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <drvdefs.h> 7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DRV_ASSIGN 1 7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define DRV_RELEASE 0 7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 7473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef OMAP_2430 7573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 7673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#if 0 7773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#warning "For tests only remove !!!" 7873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* #define OMAP_DSP_BASE 0x5CE00000 */ 7973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_BASE 0x5C000000 8073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* #define OMAP_DSP_SIZE 0x00810000 */ 8173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_SIZE 0x00F18000 8273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* #define OMAP_DSP_SIZE 0x00008000 */ 8373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 8473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 8573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* currently we support DSP images with internal L2 and L1 using 8673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * the adress space 0x1000:0000 to 0x10ff:ffff 8773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * And since the first 8MB is reserved, start mapping from 8873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 0x1080:0000 8973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 9073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 9173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_BASE 0x5C800000 9273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_SIZE 0x00718000 9373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 9473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_GEM_BASE 0x10800000 9573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 9673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*#define OMAP_PRCM_BASE 0x47806000 9773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PRCM_SIZE 0x1000*/ 9873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 9973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PRCM_BASE 0x49006000 10073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PRCM_SIZE 0x1000 10173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 10273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_MBOX_BASE 0x48094000 10373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_MBOX_SIZE 0x2000 10473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 10573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_WDTIMER_DSP_BASE 0x48026000 10673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_WDTIMER_DSP_SIZE 0x2000 10773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 10873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DMMU_BASE 0x5D000000 10973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DMMU_SIZE 0x4000 11073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 11173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*#define OMAP_SYSC_BASE 0x47802000 11273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_SYSC_SIZE 0x1000*/ 11373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 11473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*#define OMAP_SYSC_BASE 0x01C20000 11573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_SYSC_SIZE 0x1000*/ 11673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_SYSC_BASE 0x49002000 11773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_SYSC_SIZE 0x1000 11873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 11973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef OMAP_3430 12273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Provide the DSP Internal memory windows that can be accessed from L3 address 12573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * space 12673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 12773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_GEM_BASE 0x107F8000 12973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_SIZE 0x00720000 13073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 13173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* MEM1 is L2 RAM + L2 Cache space */ 13273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_MEM1_BASE 0x5C7F8000 13373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_MEM1_SIZE 0x18000 13473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_GEM1_BASE 0x107F8000 13573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 13673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 13773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* MEM2 is L1P RAM/CACHE space */ 13873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_MEM2_BASE 0x5CE00000 13973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_MEM2_SIZE 0x8000 14073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_GEM2_BASE 0x10E00000 14173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 14273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* MEM3 is L1D RAM/CACHE space */ 14373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_MEM3_BASE 0x5CF04000 14473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_MEM3_SIZE 0x14000 14573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DSP_GEM3_BASE 0x10F04000 14673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 14773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 14873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_IVA2_PRM_BASE 0x48306000 14973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_IVA2_PRM_SIZE 0x1000 15073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_IVA2_CM_BASE 0x48004000 15273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_IVA2_CM_SIZE 0x1000 15373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PER_CM_BASE 0x48005000 15573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PER_CM_SIZE 0x1000 15673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_SYSC_BASE 0x48002000 15873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_SYSC_SIZE 0x1000 15973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 16073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_MBOX_BASE 0x48094000 16173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_MBOX_SIZE 0x1000 16273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 16373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin// Do we have a WDT for DSP? 16473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin// #define OMAP_WDTIMER_DSP_BASE 0x48026000 16573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin// #define OMAP_WDTIMER_DSP_SIZE 0x2000 16673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 16773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DMMU_BASE 0x5D000000 16873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_DMMU_SIZE 0x1000 16973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 17073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PRCM_VDD1_DOMAIN 1 17173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define OMAP_PRCM_VDD2_DOMAIN 2 17273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 17373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 17473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 17573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef RES_CLEANUP_DISABLE 17673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/**************************************************************************/ 17773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/******************** GPP PROCESS CLEANUP Data structures *****************/ 17873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/**************************************************************************/ 17973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin//#ifndef RES_CLEANUP_DISABLE 18073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* New structure (member of process context) abstracts NODE resource info */ 18173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstruct NODE_RES_OBJECT { 18273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_HNODE hNode; 18373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bool nodeAllocated; //Node status 18473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bool heapAllocated; //Heap status 18573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bool streamsAllocated; //Streams status 18673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct NODE_RES_OBJECT *next; 18773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} ; 18873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 18973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* New structure (member of process context) abstracts DMM resource info */ 19073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstruct DMM_RES_OBJECT { 19173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bool dmmAllocated; //DMM status 19273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG ulMpuAddr; 19373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG ulDSPAddr; 19473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG ulDSPResAddr; 19573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG dmmSize; 19673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin HANDLE hProcessor; 19773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DMM_RES_OBJECT *next; 19873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} ; 19973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 20073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* New structure (member of process context) abstracts DMM resource info */ 20173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstruct DSPHEAP_RES_OBJECT { 20273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bool heapAllocated; //DMM status 20373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG ulMpuAddr; 20473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG ulDSPAddr; 20573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG ulDSPResAddr; 20673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin ULONG heapSize; 20773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin HANDLE hProcessor; 20873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DSPHEAP_RES_OBJECT *next; 20973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} ; 21073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 21173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* New structure (member of process context) abstracts stream resource info */ 21273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstruct STRM_RES_OBJECT { 21373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bool streamAllocated; //Stream status 21473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_HSTREAM hStream; 21573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin UINT uNumBufs; 21673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin UINT uDir; 21773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct STRM_RES_OBJECT *next; 21873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} ; 21973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Overall Bridge process resource usage state */ 22073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavintypedef enum { 22173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin PROC_RES_ALLOCATED , 22273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin PROC_RES_FREED 22373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} GPP_PROC_RES_STATE; 22473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 22573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* Process Context */ 22673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstruct PROCESS_CONTEXT{ 22773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Process State */ 22873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin GPP_PROC_RES_STATE resState; 22973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 23073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Process ID (Same as UNIX process ID) */ 23173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin UINT pid; 23273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 23373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Pointer to next process context 23473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * (To maintain a linked list of process contexts) */ 23573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct PROCESS_CONTEXT *next; 23673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 23773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Processor info to which the process is related */ 23873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_HPROCESSOR hProcessor; 23973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 24073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* DSP Node resources */ 24173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct NODE_RES_OBJECT *pNodeList; 24273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 24373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* DMM resources */ 24473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DMM_RES_OBJECT *pDMMList; 24573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 24673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* DSP Heap resources */ 24773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DSPHEAP_RES_OBJECT *pDSPHEAPList; 24873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 24973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Stream resources */ 25073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct STRM_RES_OBJECT *pSTRMList; 25173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} ; 25273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 25373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 25473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 25573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_Create ======== 25673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 25773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Creates the Driver Object. This is done during the driver loading. 25873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * There is only one Driver Object in the DSP/BIOS Bridge. 25973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 26073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * phDrvObject: Location to store created DRV Object handle. 26173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 26273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: Sucess 26373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EMEMORY: Failed in Memory allocation 26473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EFAIL: General Failure 26573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 26673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized (cRefs > 0 ) 26773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * phDrvObject != NULL. 26873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 26973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: - *phDrvObject is a valid DRV interface to the device. 27073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * - List of DevObject Created and Initialized. 27173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * - List of DevNode String created and intialized. 27273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * - Registry is updated with the DRV Object. 27373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * !DSP_SOK: DRV Object not created 27473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Details: 27573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * There is one Driver Object for the Driver representing 27673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * the driver itself. It contains the list of device 27773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Objects and the list of Device Extensions in the system. 27873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Also it can hold other neccessary 27973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * information in its storage area. 28073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 28173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_Create(struct DRV_OBJECT* * phDrvObject); 28273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 28373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 28473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_Destroy ======== 28573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 28673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * destroys the Dev Object list, DrvExt list 28773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * and destroy the DRV object 28873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Called upon driver unLoading.or unsuccesful loading of the driver. 28973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 29073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject: Handle to Driver object . 29173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 29273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: Success. 29373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EFAIL: Failed to destroy DRV Object 29473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 29573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized (cRegs > 0 ) 29673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject is not NULL and a valid DRV handle . 29773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * List of DevObject is Empty. 29873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * List of DrvExt is Empty 29973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 30073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: - DRV Object destroyed and hDrvObject is not a valid 30173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV handle. 30273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * - Registry is updated with "0" as the DRV Object. 30373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 30473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_Destroy(struct DRV_OBJECT* hDrvObject); 30573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 30673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 30773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_Exit ======== 30873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 30973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Exit the DRV module, freeing any modules initialized in DRV_Init. 31073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 31173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 31273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 31373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 31473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 31573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern VOID DRV_Exit(); 31673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 31773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 31873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_GetFirstDevObject ======== 31973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 32073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns the Ptr to the FirstDev Object in the List 32173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 32273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 32373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized 32473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 32573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dwDevObject: Ptr to the First Dev Object as a DWORD 32673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 0 if it fails to retrieve the First Dev Object 32773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 32873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 32973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DWORD DRV_GetFirstDevObject(); 33073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 33173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 33273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_GetFirstDevExtension ======== 33373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 33473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns the Ptr to the First Device Extension in the List 33573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 33673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 33773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized 33873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 33973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dwDevExtension: Ptr to the First Device Extension as a DWORD 34073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 0: Failed to Get the Device Extension 34173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 34273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 34373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DWORD DRV_GetFirstDevExtension(); 34473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 34573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 34673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_GetDevObject ======== 34773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 34873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Given a index, returns a handle to DevObject from the list 34973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 35073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject: Handle to the Manager 35173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * phDevObject: Location to store the Dev Handle 35273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 35373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized 35473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * uIndex >= 0 35573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject is not NULL and Valid DRV Object 35673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * phDevObject is not NULL 35773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Device Object List not Empty 35873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 35973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: Success 36073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EFAIL: Failed to Get the Dev Object 36173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 36273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: *phDevObject != NULL 36373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EFAIL: *phDevObject = NULL 36473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 36573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_GetDevObject(UINT uIndex, struct DRV_OBJECT* hDrvObject, 36673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DEV_OBJECT* * phDevObject); 36773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 36873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 36973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_GetNextDevObject ======== 37073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 37173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns the Ptr to the Next Device Object from the the List 37273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 37373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevObject: Handle to the Device Object 37473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 37573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized 37673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevObject != 0 37773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 37873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dwDevObject: Ptr to the Next Dev Object as a DWORD 37973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 0: If it fail to get the next Dev Object. 38073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 38173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 38273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DWORD DRV_GetNextDevObject(DWORD hDevObject); 38373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 38473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 38573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_GetNextDevExtension ======== 38673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 38773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns the Ptr to the Next Device Extension from the the List 38873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 38973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevExtension: Handle to the Device Extension 39073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 39173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DRV Initialized 39273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevExtension != 0. 39373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 39473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dwDevExtension: Ptr to the Next Dev Extension 39573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 0: If it fail to Get the next Dev Extension 39673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 39773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 39873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DWORD DRV_GetNextDevExtension(DWORD hDevExtension); 39973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 40073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 40173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_Init ======== 40273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 40373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Initialize the DRV module. 40473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 40573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 40673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * TRUE if success; FALSE otherwise. 40773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 40873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 40973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 41073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_Init(); 41173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 41273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 41373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_InsertDevObject ======== 41473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 41573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Insert a DeviceObject into the list of Driver object. 41673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 41773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject: Handle to DrvObject 41873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevObject: Handle to DeviceObject to insert. 41973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 42073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: If successful. 42173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EFAIL: General Failure: 42273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 42373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject != NULL and Valid DRV Handle. 42473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevObject != NULL. 42573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 42673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: Device Object is inserted and the List is not empty. 42773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 42873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_InsertDevObject(struct DRV_OBJECT* hDrvObject, 42973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DEV_OBJECT* hDevObject); 43073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 43173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 43273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_RemoveDevObject ======== 43373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 43473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Search for and remove a Device object from the given list of Device Obj 43573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * objects. 43673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 43773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject: Handle to DrvObject 43873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevObject: Handle to DevObject to Remove 43973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 44073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_SOK: Success. 44173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP_EFAIL: Unable to find pDevObject. 44273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 44373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject != NULL and a Valid DRV Handle. 44473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDevObject != NULL. 44573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * List exists and is not empty. 44673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 44773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * List either does not exist (NULL), or is not empty if it does exist. 44873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin*/ 44973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_RemoveDevObject(struct DRV_OBJECT* hDrvObject, 45073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DEV_OBJECT* hDevObject); 45173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 45273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 45373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_RequestResources ======== 45473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 45573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Assigns the Resources or Releases them. 45673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 45773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dwContext: Path to the driver Registry Key. 45873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * pDevNodeString: Ptr to DevNode String stored in the Device Ext. 45973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 46073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * TRUE if success; FALSE otherwise. 46173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 46273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 46373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The Resources are assigned based on Bus type. 46473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The hardware is initialized. Resource information is 46573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * gathered from the Registry(ISA, PCMCIA)or scanned(PCI) 46673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Resource structure is stored in the registry which will be 46773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * later used by the CFG module. 46873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 46973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_RequestResources(IN DWORD dwContext, 47073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin OUT DWORD * pDevNodeString); 47173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 47273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 47373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DRV_ReleaseResources ======== 47473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 47573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Assigns the Resources or Releases them. 47673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Parameters: 47773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dwContext: Path to the driver Registry Key. 47873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * hDrvObject: Handle to the Driver Object. 47973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Returns: 48073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * TRUE if success; FALSE otherwise. 48173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Requires: 48273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Ensures: 48373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * The Resources are released based on Bus type. 48473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Resource structure is deleted from the registry 48573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 48673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin extern DSP_STATUS DRV_ReleaseResources(IN DWORD dwContext, 48773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct DRV_OBJECT* hDrvObject); 48873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 48973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef __cplusplus 49073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 49173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 49273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif /* DRV_ */ 493