200 lines
6.7 KiB
C
200 lines
6.7 KiB
C
/*-
|
|
* Copyright (c) 2005
|
|
* Bill Paul <wpaul@windriver.com>. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by Bill Paul.
|
|
* 4. Neither the name of the author nor the names of any co-contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
* THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* $FreeBSD: src/sys/compat/ndis/resource_var.h,v 1.2.2.1 2005/02/18 16:30:09 wpaul Exp $
|
|
*/
|
|
|
|
#ifndef _RESOURCE_VAR_H_
|
|
#define _RESOURCE_VAR_H_
|
|
|
|
typedef int cm_resource_type;
|
|
|
|
struct physaddr {
|
|
uint64_t np_quad;
|
|
#ifdef notdef
|
|
uint32_t np_low;
|
|
uint32_t np_high;
|
|
#endif
|
|
};
|
|
|
|
typedef struct physaddr physaddr;
|
|
|
|
enum interface_type {
|
|
InterfaceTypeUndefined = -1,
|
|
Internal,
|
|
Isa,
|
|
Eisa,
|
|
MicroChannel,
|
|
TurboChannel,
|
|
PCIBus,
|
|
VMEBus,
|
|
NuBus,
|
|
PCMCIABus,
|
|
CBus,
|
|
MPIBus,
|
|
MPSABus,
|
|
ProcessorInternal,
|
|
InternalPowerBus,
|
|
PNPISABus,
|
|
PNPBus,
|
|
MaximumInterfaceType
|
|
};
|
|
|
|
typedef enum interface_type interface_type;
|
|
|
|
#define CmResourceTypeNull 0 /* ResType_All or ResType_None (0x0000) */
|
|
#define CmResourceTypePort 1 /* ResType_IO (0x0002) */
|
|
#define CmResourceTypeInterrupt 2 /* ResType_IRQ (0x0004) */
|
|
#define CmResourceTypeMemory 3 /* ResType_Mem (0x0001) */
|
|
#define CmResourceTypeDma 4 /* ResType_DMA (0x0003) */
|
|
#define CmResourceTypeDeviceSpecific 5 /* ResType_ClassSpecific (0xFFFF) */
|
|
#define CmResourceTypeBusNumber 6 /* ResType_BusNumber (0x0006) */
|
|
#define CmResourceTypeMaximum 7
|
|
#define CmResourceTypeNonArbitrated 128 /* Not arbitrated if 0x80 bit set */
|
|
#define CmResourceTypeConfigData 128 /* ResType_Reserved (0x8000) */
|
|
#define CmResourceTypeDevicePrivate 129 /* ResType_DevicePrivate (0x8001) */
|
|
#define CmResourceTypePcCardConfig 130 /* ResType_PcCardConfig (0x8002) */
|
|
|
|
enum cm_share_disposition {
|
|
CmResourceShareUndetermined = 0, /* Reserved */
|
|
CmResourceShareDeviceExclusive,
|
|
CmResourceShareDriverExclusive,
|
|
CmResourceShareShared
|
|
};
|
|
|
|
typedef enum cm_share_disposition cm_share_disposition;
|
|
|
|
/* Define the bit masks for Flags when type is CmResourceTypeInterrupt */
|
|
|
|
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0
|
|
#define CM_RESOURCE_INTERRUPT_LATCHED 1
|
|
|
|
/* Define the bit masks for Flags when type is CmResourceTypeMemory */
|
|
|
|
#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
|
|
#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
|
|
#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
|
|
#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
|
|
|
|
#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
|
|
#define CM_RESOURCE_MEMORY_24 0x0010
|
|
#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
|
|
|
|
/* Define the bit masks for Flags when type is CmResourceTypePort */
|
|
|
|
#define CM_RESOURCE_PORT_MEMORY 0x0000
|
|
#define CM_RESOURCE_PORT_IO 0x0001
|
|
#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
|
|
#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
|
|
#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
|
|
#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
|
|
#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
|
|
#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
|
|
|
|
/* Define the bit masks for Flags when type is CmResourceTypeDma */
|
|
|
|
#define CM_RESOURCE_DMA_8 0x0000
|
|
#define CM_RESOURCE_DMA_16 0x0001
|
|
#define CM_RESOURCE_DMA_32 0x0002
|
|
#define CM_RESOURCE_DMA_8_AND_16 0x0004
|
|
#define CM_RESOURCE_DMA_BUS_MASTER 0x0008
|
|
#define CM_RESOURCE_DMA_TYPE_A 0x0010
|
|
#define CM_RESOURCE_DMA_TYPE_B 0x0020
|
|
#define CM_RESOURCE_DMA_TYPE_F 0x0040
|
|
|
|
struct cm_partial_resource_desc {
|
|
uint8_t cprd_type;
|
|
uint8_t cprd_sharedisp;
|
|
uint16_t cprd_flags;
|
|
union {
|
|
struct {
|
|
physaddr cprd_start;
|
|
uint32_t cprd_len;
|
|
} cprd_generic;
|
|
struct {
|
|
physaddr cprd_start;
|
|
uint32_t cprd_len;
|
|
} cprd_port;
|
|
struct {
|
|
uint32_t cprd_level;
|
|
uint32_t cprd_vector;
|
|
uint32_t cprd_affinity;
|
|
} cprd_intr;
|
|
struct {
|
|
physaddr cprd_start;
|
|
uint32_t cprd_len;
|
|
} cprd_mem;
|
|
struct {
|
|
uint32_t cprd_chan;
|
|
uint32_t cprd_port;
|
|
uint32_t cprd_rsvd;
|
|
} cprd_dmachan;
|
|
struct {
|
|
uint32_t cprd_data[3];
|
|
} cprd_devpriv;
|
|
struct {
|
|
uint32_t cprd_datasize;
|
|
uint32_t cprd_rsvd1;
|
|
uint32_t cprd_rsvd2;
|
|
} cprd_devspec;
|
|
} u __packed;
|
|
};
|
|
|
|
typedef struct cm_partial_resource_desc cm_partial_resource_desc;
|
|
|
|
struct cm_partial_resource_list {
|
|
uint16_t cprl_version;
|
|
uint16_t cprl_revision;
|
|
uint32_t cprl_count;
|
|
cm_partial_resource_desc cprl_partial_descs[1];
|
|
};
|
|
|
|
typedef struct cm_partial_resource_list cm_partial_resource_list;
|
|
|
|
struct cm_full_resource_list {
|
|
interface_type cfrl_type;
|
|
uint32_t cfrl_busnum;
|
|
cm_partial_resource_desc cfrl_partiallist;
|
|
};
|
|
|
|
typedef struct cm_full_resource_list cm_full_resource_list;
|
|
|
|
struct cm_resource_list {
|
|
uint32_t crl_count;
|
|
cm_full_resource_list crl_rlist;
|
|
};
|
|
|
|
typedef struct cm_resource_list cm_resource_list;
|
|
|
|
typedef cm_partial_resource_list ndis_resource_list;
|
|
|
|
#endif /* _RESOURCE_VAR_H_ */
|