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